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명령과는 다름