본문 바로가기
카테고리 없음

SQL -DML

by 개발송이 2022. 2. 25.

3. DML

데이터베이스에 저장된 자료들을 입력, 수정, 삭제 조회 하는 언어 CRUD

 

유형 : SELECT, INSERT, UPDATE, DELETE

 

 

<SELECT>

 

SELECT명령문

셀프웨구해오

SELECT-FROM-WHERE-GROUP BY-HAVING-ORDER BY

SELECT * |{[DISTINCT] 출력할 컬럼명 }
FROM 검색할 테이블명;
[WHERE 조건들]
[ORDER BY {컬럼명,표현식}[ASC|DESC];

| : 또는 / [ ] : 생략가능 / { } : 문법 적용 범위

구문 설명
SELECT -검색하고자 하는 속성명, 계산 식
-2개 이상의 테이블을 대상으로 검색할 떄는 '테이블명.속성명'으로 표현
-술어부분은 ALL이 기본값(*)
-DISTINCT: 중복된 속성 조회될 경우 하나만 검색
FROM -질의에 의해 검색될 데이터들을 포함하는 테이블명 기술
WHERE -검색할 조건 기술
GROUP BY -속성값을 그룹으로 분류하고자 할 때 사용
HAVING -GROUP BY에 의해 분류한 후 그룹에 대한 조건을 기술
ORDER BY -속성값을 정렬하고자 할 때 사용
-ASC:오름차순/DESC:내림차순

 

1. SELECT절

:테이블에서 출력할 컬럼을 명시하기 위해 사용

 

2. WHERE절

-WHERE절에서 조건이 상수인 경우 : 숫자 그대로 입력해서 비교 가능

-조건이 문자열, 날짜 인 경우 작은따옴표 필요함, 일DD-월MON-연YY

 

WHERE조건

구분 연산자 사례
비교 =,<>,<.<=,>,>=  
범위 BETWEEN 대상 BETWEEN a AND B
집합 IN, NOT IN PRICE IN(40,50,60)
패턴 LIKE NAME LIKE ‘정보%’
NULL IS NULL, IS NOT NULL PRICE IN NULL
복합조건 AND, OR, NOT  

*LIKE와 함께 사용하는 와일드 문자

+ : 문자열을 연결

% : 0개 이상의 문자열과 일치

[ ] : 1개의 문자와 일치

[^] : 1개의 문자와 불일치

_ : 특정 위치의 1개의 문자와 일치

 

ORDER BY절

ORDER BY절에 2개 이상의 속성이 있는 경우 먼저 선언된 속성으로 정렬 후, 같은 값일 때 다음 속성으로 정렬

EX) SELECT * FROM 성적 ORDER BY 과목, 이름;

과목으로 먼저 오름차순 정렬 후 그 안에서 이름 오름차순 정렬 됨

 

 

3. DML(2)

 

1) 조인 JOIN

: 조인은 두개 이상의 테이블을 연결하여 데이터를 검색하는 방법이다.

 

논리적 조인 (내외교셀)

-내부조인 INNER : 공통 존재 칼럼의 값이 같은 경우를 추출하는 기법

-외부조인 OUTER : 외부 조인의 종류로는 왼쪽 외부조인, 오른쪽 외부 조인, 완전 외부조인이 있음

-교차조인 CROSS : 조인 조건이 없는 모든 데이터 조합을 추출하는 기법

-셀프조인 SELF : 자기 자신에게 별칭을 지정한 후 다시 조인하는 기법

 

<내부조인>

SELECT A.컬럼1, B.컬럼1... FROM 테이블1 A [INNER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];

 

<왼쪽 외부조인>

 

SELECT A.컬럼1, B.컬럼1... FROM 테이블1 A LEFT [OUTER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];

왼쪽 테이블 기준으로 왼쪽에 있는 값은 다 가져오고 B테이블에도 값이 있으면 가져옴

 

<오른쪽 외부조인>

SELECT A.컬럼1, B.컬럼1... FROM 테이블1 A RIGHT [OUTER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];

 

<완전 외부조인>

SELECT A.컬럼1, B.컬럼1... FROM 테이블1 A FULL [OUTER] JOIN 테이블2 B ON 조인조건 [WHERE 검색조건];

 

<교차 조인>

SELECT 컬럼1, 컬럼1... FROM 테이블1 CROSS JOIN 테이블2;

-테이블 간 조인조건이 없는 경우 생길 수 있는 모든 데이터의 조합

 

<셀프조인>

SELECT A.컬럼1, B.컬럼1... FROM 테이블1 A  [INNER] JOIN 테이블1 B ON 조인조건 [WHERE 검색조건];

자기 자신을 조인

 

물리적 조인

-중첩 반복 조인(NESTED-LOOP) : 2개 이상의 테이블을 하나의 집합을 기준으로 순차적으로 상대방 ROW를 결합하여 원하는 결과를 조합하는 조인 방식

-정렬 합병 조인(SORT-MERGE) : 조인의 대상 범위가 넓을 경우 발생하는 임의 접근을 줄이기 위한 경우나 연결고리에 마땅한 인덱스가 존재하지 않을 경우 해결하기 위한 조인 방식

-해시 조인(HASH) : 해싱함수를 활용하여 테이블 간 조인을 수행하는 방식

 

 

2) 서브 쿼리

서브쿼리는 SQL문 안에 포함된 또 다른 SQL문을 의미함

 

서브쿼리의 유형

종류 설명
SELECT절 서브쿼리 -서브쿼리가 SELECT절 안에 들어있는 형태
-스칼라 서브쿼리 라고도 불림
-SELECT절에 오는 서브쿼리는 반드시 단일 행을 리턴해야 함
FROM절 서브쿼리 -서브쿼리가 FROM절 안에 들어있는 형태
-인라인 뷰 라고도 불림
-뷰처럼 결과가 동적으로 생성된 테이블 형태로 사용할 수 있음
WHERE절 서브쿼리 -서브쿼리가 WHERE절 안에 들어있는 형태
-중첩 서브쿼리라고도 불림

 

 

3) 집합연산자

두 개 이상의 테이블에서 여러 개의 질의의 결과를 연결하여 하나로 결합하는 연산자

 

집합연산자 유형

집합연산자 설명
UNION 중복 행이 제거된 쿼리 결과 집합  (중복제거 합집합)
UNION ALL 중복 행이 제거되지 않은 쿼리 결과 집합  (합집합)
INTERSECT 두 쿼리 결과에 공통적으로 존재하는 집합  (교집합)
MINUS 첫 쿼리에 있고 두 번째 쿼리에는 없는 집합  (차집합)

 

 

<INSERT>

 

INSERT명령어

데이터의 내용을 삽입할 때 사용하는 명령어

INSERT INTO 테이블명(속성명..) VALUES(데이터1..)

*속성과 데이터 개수, 데이터 타입이 일치해야함, 속성명 생략가능

 

 

<UPDATE>

데이터의 내용을 변경할 때 사용하는 명령어(업셋웨)

UPDATE 테이블명 SET 속성명 = 데이터... WHERE 조건;

*WHERE절을 통해 어떤 조건이 만족할 경우에만 특정 컬럼의 값을 수정하는 용도로 자주 사용됨

 

 

<DELECT>

데이터의 내용을 삭제할 때 사용하는 명령어(델프웨)

DELETE FROM 테이블명 WHERE 조건;

*모든 레코드를 삭제할 때는 WHERE절 없이 DELECT만 사용

*레코들르 삭제해도 테이블 구조는 남아 있어서 디스크에서 테이블을 완전히 삭제하는 DROP명령과는 다름