1. DDL(Data Define Language) : 데이터 정의어
1) DDL 유형
- CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX
- ALTER : TABLE의 정의 수정 시
- DROP : SCHEMA, DOMAIN, TABLE, VIEW, INDEX 삭제
2) SCHEMA
* SCHEMA : DB의 구조와 제약 조건에 대한 명세 개체(Entity), 속성(Attribute), 관계(Relationship)을 정의
CREATE SCHEMA 스키마명
AUTHORIZATION 사용자ID
;
3) DOMAIN
* DOMAIN : 하나의 속성이 취할 수 있는 동일한 원자값의 집합
CREATE DOMAIN 도메인명 [AS] CHAR(1)
[DEFAULT 기본값]
[CONSTAINT 제약조건명
CHECK (범위값)]
;
4) TABLE
CREATE TABLE 테이블명
(
컬럼명1 데이터_타입 [DEFAULT 기본값] [NOT NULL]
, 컬럼명2 데이터_타입 [DEFAULT 기본값] [NOT NULL]
...
, 컬럼명n 데이터_타입 [DEFAULT 기본값] [NOT NULL]
[, PRIMARY KEY(컬럼명1)
, FOREIGN KEY(컬럼명2) REFERENCES 다른테이블명(다른테이블의 컬럼명)
-- 다른테이블의 튜플 삭제 시 해당 테이블 컬럼값 속성정의
ON DELETE SET 옵션
-- 다른테이블 수정 시 같이 변경 옵션
ON UPDATE 옵션
-- 제약 조건의 이름 지정
, CONSTRAINT 제약명
-- 해당 컬럼값의 조건 정의
CHECK (컬럼명n의 조건)]
)
;
5) VIEW
CREATE VIEW 뷰명
[(
속성명1
, 속성명2
...
, 속성명n
)]
AS SELECT 속성명1
, 속성명2
FROM 테이블1
WHERE 조건
;
6) INDEX
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명 ( 속성1 [ASC|DESC]
[, 속성2 [ASC|DESC]])
[CLUSTER]
;
7) ALTER
ALTER TABLE 테이블명 ADD 추가컬럼명 데이터타입 [DEFAULT '기본값']
;
ALTER TABLE 테이블명 ALTER 수정할컬럼명 [SET DEFAULT '기본값']
;
ALTER TABLE 테이블명 DROP COLUMN 삭제할컬럼명 [CASCADE]
;
8) DROP
DROP SCHEMA | DOMAIN | TABLE | VIEW | INDEX 해당제거이름 [CASCADE | RESTRICT]
;
- SCHEMA, DOMAIN, TABLE, VIEW, INDEX 등을 제거
2. DCL(Data Control Language) : 데이터 제어어
1) COMMIT : 수행결과 디스크에 저장
2) ROLLBACK : COMMIT 되지 않은 내용 취소, DB를 이전 상태로 되돌림
3) GRANT : 사용 권한 부여
4) REVOKE : 사용 권한 취소
5) SAVEPOINT : 트랜잭션 내 ROLLBACK할 위치 지정
3. DML(Data Manipulation Language) : 데이터 조작어
1) SELECT
* SELECT문을 읽어들이는 순서(★)
FROM > WHERE > AND > GROUP BY > HAVING > SELECT > ORDER BY
!(★) 위와 같은 순서 때문에 FROM절에 여러 테이블을 나열 할 시 ALIAS가 매우 중요하다.
또한, 테이블의 오너가 다를 경우 반드시 오너를 지정해 줘야한다.
예를 들어, 테이블1은 DB1에 존재하고 테이블2는 DB2에 존재할 때
FROM DB1.테이블1 AS A, DB2.테이블2 AS B 이런식으로 반드시 지정을 해야한다.
SELECT 컬럼1 [AS 별칭]
, 컬럼2
...
, 컬럼n
[, 그룹함수(컬럼1) [AS 별칭]]
[, WINDOW함수 OVER (PARTITION BY 컬럼1
, 컬럼2
, 컬럼n
ORDER BY 컬럼1) [AS 별칭]
FROM 테이블1
WHERE 1=1
[AND 테이블1에 대한 조건]
[GROUP BY
[HAVING 그룹바이에 대한 조건]
[ORDER BY 컬럼명1 [ASC | DESC]]
;
*자주 쓰이는 함수만 작성*
# 그룹함수
- COUNT(컬럼명)
- SUM(컬럼명)
- AVG(컬럼명)
- MAX(컬럼명)
- MIN(컬럼명)
# WINDOW함수
- ROW_NUMBER() : 각 레코드에 대한 일련번호 부여
- RANK() : 공동 순위 반영
- DENSE_RANK() : 공동 순위 무시 순서부여
2) INSERT
* 속성명 몇개만 지정할 경우 VALUES에 지정한 몇개만의 값만 지정해도 된다.
INSERT INTO 테이블명
VALUES (데이터1
, 데이터2
, … 모든 컬럼에 넣어줄 데이터)
;
* 속성명 지정 안할 경우 VALUES에 반드시 모든 컬럼의 값을 지정해야한다.
INSERT INTO 테이블명([속성명1
, 속성명2
, …])
VALUES (데이터1
, 데이터2
, … )
;
3) UPDATE
UPDATE 테이블명
SET 속성명=데이터
[, 속성명=데이터
, ...]
[WHERE 조건]
;
4) DELETE
DELETE FROM 테이블명
[WHERE 조건]
;
'Language > SQL' 카테고리의 다른 글
[MySQL] 실행 계획 및 explain 읽는 방법, 정보 확인 방법 (0) | 2022.02.28 |
---|---|
[MySQL] 테이블 정보(스키마) 조회 (0) | 2022.02.25 |
계정(user) 생성 후 발생한 에러 해결 및 활용 가능한 명령어 (0) | 2021.06.27 |
SQL Developer 새 접속 만들기 (0) | 2021.06.27 |