4. 데이터 조작어 DML
4.1 데이터의 삽입, 수정, 삭제
INSERT: 테이블 안에 데이터를 삽입하는 역할
INSERT INTO EMP
VALUES(7369, 'SMITH', 'CLERK',7902, TO_DATE('80/12/17'), 800, NULL, 20);
INSERT INTO DEPT(deptno, dname)
VALUES(10, 'ACCOUNTING');
+ NOT NULL 조건이 있는 컬럼의 경우
INSERT INTO EMP3(ENAME)
VALUES(''); > NULL을 안에 삽입할 수 없습니다.
UPDATE: 테이블 안의 데이터를 수정
UPDATE EMP
SET DEPTNO=30;
WHERE EMPNO=7369;
UPDATE EMP
SET HIREDATE=SYSDATE;
DELETE: 사용하지 않는 데이터를 삭제
DELETE FROM EMP2
WHERE EMPNO=7369;
DELETE FROM EMP2; 모든 행 삭제
4.1.1 MERGE문의 이해
MERGE문은 조건에 따라서 데이터의 삽입, 갱신, 삭제 작업을 한번에 할 수 있다.
대상 테이블에 대한 UPDATE/INSERT 조건은 ON절에 의해 결정된다.
USING: 비교할 SOURCE 테이블 또는 뷰나 서브쿼리를 지정, INTO절의 테이블과 동일하거나 다를 수 있다.
ON: UPDATE나 INSERT하게 될 조건, 해당 조건을 만족하면 WHEN MATCHED 실행, 없으면 WHEN NOT MACHED 이하 실행
예시문 실행할 때, WHERE e.sal > 1000;해서 명령문 실행하고, COMMIT 해주기
MERGE INTO emp_merge_test m
USING emp2 e
ON (m.empno = e.empno)
WHEN MATCHED THEN
UPDATE SET m.sal = ROUND(m.sal*1.1)
DELETE WHERE (m.deptno = 20)
WHEN NOT MATCHED THEN
INSERT (m.empno, m.deptno, m.sal)
VALUES (e.empno, e.deptno, ROUND(e.sal*1.2));
4.2 SELECT문 및 연산자
DISTINCT: 중복되는 행을 제거하는 옵션
*SQL buffer
SQL server 메모리
- 데이터는 디스크에 저장되고, 디스크에서 검색을 하는데 디스크 I/O 작업에 많은 리소스를 소비하게 되므로
SQL server는 디스크 I/O 작업을 효율적으로 관리하기 위하여 버퍼풀의 메모리 구조를 이용
- 데이터를 조회하게 되면 SQL server는 버퍼풀에 데이터가 있는지 확인하고 없을 경우
디스크에서 버퍼풀로 데이터를 복사한 후 데이터를 사용
SQL Server 메모리 (Cache & Buffer) : 네이버 블로그 (naver.com)
LIKE 연산자
LIKE 'A%' A로 시작하는 데이터만 검색
LIKE '%A' A로 끝나는 데이터들만 검색
LIKE '%KIM%' KIM문자가 있는 데이터들만 검색
LIKE '_A%' A문자가 두번째 위치한 데이터들만 검색
오름차순 고정 (DESC 적어주면 내림차순 ORDER BY 1 DESC;)
ORDER BY 1: 1번째 열 기준
ORDER BY 2: 2번째 열 기준