This is an old revision of the document!
DML 명령어의 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업을 하기 때문에 실시간으로 테이블에 영향을 미치는 것은 아니다. 따라서 COMMIT 명령어를 입력하여 Transaction을 종료시켜 실제 테이블에 반영시켜야 한다!
--유형1 : 칼럼 순서대로 기술 필요X. 빠진 칼럼은 Default로 "NULL"(PK, NOT NULL 제외) INSERT INTO 테이블명(속성명1, 속성명2, ...) VALUES (데이터1, 데이터2, ...); --유형2 : 칼럼 순서대로 빠짐없이! INSERT INTO 테이블명 VALUES (데이터1, 데이터2, ...);
UPDATE 테이블명 SET 속성명1=데이터1[, 속성명2=데이터2, ...] [WHERE 조건];
DELETE [FROM] 테이블명 [WHERE 조건];
SELECT [Predicate] [테이블명|테이블별칭.]속성명[ [AS] 별칭][, [테이블명|테이블별칭.]속성명[ [AS] 별칭][, ...]] --전체 칼럼 지정은 "*"(Asterisk) FROM 테이블명1[ [AS] 별칭][, 테이블명2[ [AS] 별칭], ...] --※ TABLE에 별칭(Alias)를 지정했을 경우, SELECT와 WHERE절에 별칭을 반드시 사용해야 한다! [WHERE 조건] [GROUP BY 표현식|속성명[, 속성명, ...] [HAVING 조건]] --GROUP에 대한 조건 기술 [ORDER BY 표현식|속성명 [ASC|DESC][, 속성명 [ASC|DESC], ...]] -- 별칭 지정 방법2 : 공백, 특수문자 포함 or 대소문자 구분이 필요한 경우 SELECT [Predicate] [테이블명.]속성명 [AS] "별칭" [, [테이블명.]속성명 [AS] "별칭", ...] ...
⑤ SELECT
① FROM
② WHERE
③ GROUP BY
④ HAVING
⑥ ORDER BY
추출 대상 테이블 참조 (FROM)
→ 추출 대상 데이터만 거르기 (WHERE)
→ 행들을 소그룹화 (GROUP BY)
→ 소그룹의 대상 데이터만 거르기 (HAVING)
→ 데이터 값 출력/계산 (SELECT)
→ 데이터 정렬 (ORDER BY)
증명1) SELECT 절에 없는 칼럼을 ORDER BY 절에 사용. (⑤ SELECT → ⑥ ORDER BY)
SELECT EMPNO FROM EMP ORDER BY MGR;
증명2) Sub Query(인라인 뷰에서 정의된 SELECT) 칼럼을 Main Query에서 사용 (① FROM → ~ → ⑤ SELECT)
SELECT EMPNO -- 만약 FROM절에서 정의되지 않은 테이블|표현식(칼럼) 사용하면 Error.
FROM (SELECT EMPNO, ENAME
FROM EMP
ORDER BY MGR);
연산자를 사용할 경우, 칼럼 Label이 길어지고 칼럼에 새 의미를 부여하기 때문에 별칭(Alias)를 부여하는 것이 좋다!
SELECT NAME 이름, ROUND(WEIGHT/POWER(HEIGHT,2), 2) "BMI 비만지수" -- 비만지수(Body Mass Index) FROM SCHOOL;
표
SELECT NAME || '의 키는 ' || HEIGHT || 'cm' 몸무게 FROM SCHOOL;
표
표
표
표
:: ☞ GROUP BY 이후에 수행 절인( SELECT문 실행(읽는) 순서) SELECT절 or ORDER BY절에서 <font color=“red”>개별 데이터를 사용하는 경우 Error!</font>
예) 최대키가 190cm 이상인 포지션의 평균키 출력
SELECT POSITION, MIN(HEIGHT), MAX(HEIGHT), ROUND(AVG(HEIGHT), 2) FROM PLAYER GROUP BY POSITION HAVING MAX(HEIGHT) >= 190;
SELECT DNAME, LOC CITY, DEPTNO FROM DEPT ORDER BY 1, CITY, 3 DESC; -- 가장 마지막에 붙인 옵션이 전체 적용.