SQL 명령문 개괄
- 연산 순서: From → Where → Group by → Having → Select → Order by
DML
SELECT
INSERT
- 삽입 컬럼 명시 생략 시 모든 컬럼 입력 필수
DELETE
- DELETE FROM 테이블명; (DELETE 뒤에 * 또는 TABLE 붙이면 문법 오류)
- 디스크 사용량 초기화 X, 로그 남음, 사용자 Commit
UPDATE
MERGE
DDL
ALTER
- ALTER TABLE 테이블명 ADD CONTRAINT 제약조건명 PRIMARY KEY(컬럼명);
- 오라클은 여러 컬럼 동시 수정 가능, SQL 서버는 불가능
- 이미 정의된 PK 속성을 ALTER TABLE로 또 정의하려하면 오류 발생
CREATE
MODIFY
DROP
RENAME
TRUNCATE
- 테이블을 초기 상태로 만듦. 스키마 유지. 디스크 사용량 초기화. DELETE 보다 빠름. 로그를 남기지 않음. Auto Commit
TCL
- DML에 의해 조작된 결과를 트랜잭션별로 제어
ROLLBACK
- Commit 되지 않은 모든 트랜잭션을 Rollback함
COMMIT
SAVEPOINT
DCL
GRANT
/ REVOKE
- role 특징 - 명령어가 아닌 객체(Object)
- role은 role에게 부여 가능
- role은 사람에게 부여 가능
- 사람들은 같은 role을 가질 수 있음
- role 부여에는 권한이 필요
- role은 권한이 있는 사용자에게서 만들어짐
제약조건 ⭐️
PK
: UNIQUE + NOT NULL
UNIQUE
NOT NULL
비절차적/절차적
- 비절차적 데이터 조작어: 사용자가 무슨 데이터를 원하는지만 명세 ⇒ DML
- 절차적 데이터 조작어: 사용자가 무슨 데이터를 원하는지, 어떻게 데이터를 접근해야 하는지 명세 ⇒ PL/SQL(오라클), T-SQL(SQL Server)
데이터 부속어(Data Sub Language)
- 호스트 프로그램 속에 삽입되어 사용되는 DML 명령어들
참조동작
- DELETE/MODIFY Action
Cascade
, Set Null
, Set Default
, No Action
Restrict
: Child 테이블에 PK값이 없는 경우에만 Master 삭제 허용
- INSERT Action (Master 테이블에 PK가 없는 경우에 대한 설정)
Automatic
: Master에 PK 자동 생성 후 Child 입력
Set Null
, Set Default
: Child PK를 Null/Default 처리
Dependent
: Master에 PK가 존재할 때만 입력 허용
No Action