DDL (Data Definition Language, 데이터 정의어)
CREATE
CREATE TABEL 테이블명 (
이름 CHAR(5) NOT NULL, //NULL 값을 갖지 않는다.
번호 CHAR(5) UNIQUE, // 각 행의 해당 컬럼 값이 유일해야 한다.
학번 CHAR(5) PRIMARY KEY, //기본키로 사용
FOREIGN KEY (전공) REFERENCES 학과(코드) // 전공 속성은 학과TB의 코드 속성을 참조하는 외래키
ON DELETE SET [NO ACTION | NULL | DEFAULT] //튜플이 삭제되면 [값이 안바뀜 | NULL | 기본값] 로 변경
ON UPDATE CASCADE, // 업데이트되면 같은 값으로 변경
CONSTRAINTS 생년월일제약 CHECK (생년월일 >= '1999-01-01') //생년월일 속성에 1999 값만 저장할수 있으며, 이 제약 조건의 이름은 '생년월일제약'이다.
)
ALTER TABEL
ALTER TABLE 테이블명 ADD 속성명 CHAR(20) //속성 추가
ALTER TABLE 테이블명 ALTER 속성명 CHAR(20) //특정 속성의 DEFAULT 값을 변경
ALTER TABLE 테이블명 MODIFY 속성명 CHAR(20)//속성 변경
ALTER TABLE 테이블명 DROP COLUMN 속성명 CHAR(20) //속성 삭제
DROP
DROP TABLE 테이블명 [CASCADE | RESTRICT]
DROP VIEW 뷰명 [CASCADE | RESTRICT]
- CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거
- RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소함
TRUNCATE
TRUNCATE TABLE 회원 //회원 테이블 내용 삭제
- TRUNCATE : 테이블의 모든 데이터를 삭제하는 명령어로, 구조는 남기고 데이터만 비운다.
DELETE | 데이터 삭제 / 되돌릴 수 있다. |
DROP | 테이블 전체 삭제 |
TRUNCATE | 모든 데이터 삭제 / 컬럼 남겨져 있다. |
DCL (Data Control Language, 데이터 제어어)
GRANT ~ ON ~ TO ~
GRANT [권한] ON [객체명(테이블)] TO [사용자] WITH GRANT OPTION
- WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여함
REVOKE ~ ON ~ FROM ~
REVOKE [GRANT OPTION FOR] [권한] ON [객체명(테이블)] TO [사용자] CASCADE
- GRANT OPTION FOR : 다른 사용자에게 권한을 부여할 수 있는 권한을 취소함
- CASCADE : 다른 사용자에게 부여한 권한도 연쇄적으로 취소
DML (Data Manipulation Language, 데이터 조작어)
삽입문 (INSERT INTO ~)
INSERT INTO 테이블명(속성1 , 속성2) VALUES (데이터1, 데이터2)
삭제문 (DELETE FROM ~)
DELETE FROM 테이블명 WHERE 조건
갱신문 (UPDATE ~ SET ~)
UPDATE 테이블명
SET 속성명1 = 데이터1, 속성명2 = 데이터2 //(변경 내용 작성)
WHERE 조건
검색 (SELECT)
SELECT [DISTINCT] 속성 [AS 별칭],
FROM 테이블명
WHERE 조건
GROUP BY 속성
HAVING 조건
ORDER BY 속성 DESC
- DISTINCT : 중복된 튜플 제거
- count(*) 함수에서 NULL값은 제외하고 카운트
LIKE 연산자
% | _ | # |
모든 문자를 대표 | 문자 하나를 대표 | 숫자 하나를 대표 |
검색 (SELECT) - NULL
SELECT [DISTINCT] 속성 [AS 별칭],
FROM 테이블명
WHERE 조건 IS NULL //NULL인 튜플 검색
WHERE 조건 IS NOT NULL //NULL이 아닌 튜플 검색
- IS NULL //NULL인 튜플 검색
- IS NOT NULL //NULL이 아닌 튜플 검색
하위 질의
SELECT 속성
FROM 테이블명
WHERE 이름 = (SELECT 이름 FROM ~~~)
WHERE 이름 NOT IN (SELECT 이름 FROM) // 포함되지 않는 데이터
WHERE 이름 IN (SELECT 이름 FROM ~~~) // 포함되는 데이터
WHERE 이름 ALL (SELECT 이름 FROM ~~~) //
- 하위 질의 영역이 먼저 실행
NOT IN | 서브쿼리의 결과값을 포함하지 않으면 출력 |
IN | 서브쿼리의 결과값을 포함하고 있으면 출력 |
ALL | 서브퀴리 결과값이 여러 개 나온 경우, 서브퀴리의 결과값을 모두 만족하는 값을 출력 |
EXISTS | 서브퀴리 결과값의 행 존재 여부를 확인하여 출력 |
ANY(SOME) | 서브퀴리 결과값이 여러 개 나온 경우, 서브퀴리의 결과값을 하나라도 만족하면 값을 출력 |
검색 (SELECT) - 윈도우 함수
SELECT 속성,
ROW_NUMBER() OVER(PARTITION BY 이름 ORDER BY 학번 DESC) AS 번호 //'이름' 별로 '학번'에 대한 '일련번호'를 구하기 (학번은 내림차순)
RANK() OVER(ORDER BY 학번 DESC) AS 번호 //순위를 반환하고, 공동 순위를 반영
DENSE_RANK() OVER(ORDER BY 학번 DESC) AS 번호 //순위를 반환하고, 공동 순위를 무시하고 순위 반영
FROM 테이블명
- ROW_NUMBER() : 각 레코드에 대한 일련번호를 반환
- RANK() : 순위를 반환하고, 공동 순위를 반영
- DENSE_RANK() 순위를 반환하고, 공동 순위를 무시하고 순위 반영
- PARTITION BY 절 : 해당 구에 지정된 컬럼으로 데이터를 자른다. (EX. '이름' 별로)
- ORDER BY 절
검색 (SELECT) - GROUP BY
SELECT 속성
FROM 테이블명
GROUP BY ROLLUP(부서, 상여내역)
GROUP BY CUBE(부서, 상여내역)
- ROLLUP() : 그룹별 소계 / 소계가 하위에
- CUBE() : 그룹별 소계 / 소계가 먼저
검색 (SELECT) - 통합 질의
SELECT 속성
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성
FROM 테이블명
- UNION : 중복된 행은 한 번만
- UNION ALL : 중복된 행도 그대로
- INTERSECT : 교집한 / 공통된 행만 출력
- EXCEPT (MINUS) : 차집합 / 첫 번째 SELECT에서 두 번째 SELECT 결과값 제외한 행 출력
검색 (SELECT) - INNER JOIN
SELECT 속성
FROM A INNER JOIN B
ON A.학번 = B.학번
- 두 테이블에 공통으로 존재하는 데이터만 추출
검색 (SELECT) - FULL OUTER JOIN (전체 외부 조인)
SELECT 속성
FROM A FULL OUTER JOIN B
ON A.학번 = B.학번
- 좌측 및 우측 테이블의 데이터를 모두 포함하고, 중복된 데이터는 하나로 표시
검색 (SELECT) - LEFT OUTER JOIN (왼쪽 외부 조인)
SELECT 속성
FROM A LEFT OUTER JOIN B
ON A.학번 = B.학번
- 좌측 테이블을 기준으로 조인하고, 우측 테이블에 일치하는 데이터가 없으면 NULL로 표시
검색 (SELECT) - RIGHT OUTER JOIN (오른쪽 외부 조인)
SELECT 속성
FROM A RIGHT OUTER JOIN B
ON A.학번 = B.학번
- 좌측 테이블을 기준으로 조인하고, 우측 테이블에 일치하는 데이터가 없으면 NULL로 표시
검색 (SELECT) - CROSS JOIN (교차 조인)
SELECT 속성
FROM A CROSS JOIN B
ON A.학번 = B.학번
- 모든 조합을 반환