DML(Data Manipulation Language) 데이터 조작어
INSERT
데이터베이스 객체에 데이터를 입력
DELETE
데이터베이스 객체에 데이터를 삭제
UPDATE
기존에 존재하는 데이터베이스 객체 안의 데이터 수정
SELECT
데이터베이스 객체로부터 데이터를 검색
DDL (Data Definition Language) 데이터 정의어
CREATE
데이터베이스 및 객체 생성
DROP
데이터베이스 및 객체 삭제
ALTER
기존에 존재하는 데이터베이스 객체를 변경
DCL(Data Control Language) 데이터 제어어
GRANT
데이터베이스 객체에 권한 부여
REVOKE
이미 부여된 데이터베이스 객체의 권한 취소
TCL(Transaction Control Language) 트랜잭션 제어어
COMMIT
DML 수행 후 Buffer에 저장 / DDL 수행 후 DB에 저장
ROLLBACK
백업명령어
테이블 칼럼에 대한 정의 변경 (Oracle - SQL Server)
ALTER TABLE 테이블명
MODIFY ( 칼럼명1 데이터유형 [DEFAULT 식][NOT NULL],
칼럼명2 데이터 유형 ............. );
ALTER TABLE 테이블명
ALTER ( 칼럼명1 데이터유형 [DEFAULT 식][NOT NULL],
칼럼명2 데이터 유형 ............. );
💡 SQL Server에서는 여러 개의 컬럼을 동시에 수정할 수 없다. 오라클은 가능
( 세미콜론(;)으로 한 컬럼의 수정 끝내고 다시 수정 구문 작성해야 함)
💡 SQL Server에서 괄호를 사용하지 않는다. 오라클은 사용
ex)
ALTER TABLE 기관분류 ALTER COLUMN 분류명 VARCHAR(30) NOT NULL;
ALTER TABLE 기관분류 ALTER COLUMN 등록일자 DATE NOT NULL;
데이터 삭제 /수정 무결성 제약 조건 Action
CASCADE : 부모 테이블의 데이터 삭제 시 참조하고 있는 테이블의 컬럼 값이 존재하던 행 전체 삭제
SET NULL : 부모 테이블의 데이터 삭제 시 참조하고 있는 테이블의 컬럼 값이 NULL로 변경 됨
SET DEFAULT : 부모 테이블 데이터 삭제 시 참조하고 있는 테이블의 컬럼 값 DEFAULT값으로 변경 됨
RESTRICT : 자식 테이블에 PK 값이 없는 경우만 부모 테이블 삭제 허용
NO ACTION : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음
데이터 입력 무결성 제약 조건 Action
AUTOMATIC : 부모 테이블에 PK 값이 없는 경우는 PK를 생성 후 입력
SET NULL : 부모 테이블에 PK 값이 없는 경우는 자식의 외부키를 NULL값으로 처리
SET DEFAULT : 부모 테이블에 PK 값이 없는 경우는 자식의 외부키를 지정된 기본 값으로 입력
DEPENDENT : 부모 테이블에 PK가 존재할 때만 자식 입력 허용
NO ACTION : 참조무결성을 위반하는 입력 액션을 취하지 않음
트랜잭션의 특성
원자성 (atomicity)
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (all or nothing)
일관성 (consistency)
트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용이 잘못이 있으면 안 된다.
고립성 (isolation)
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.
지속성 (durability)
트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.
BEGIN / SAVE TRANSACTION
BEGIN TRANSACTION (=BEGIN TRAN) 으로 트랜잭션을 시작하고, COMMIT TRANSACTION (TRANSACTION은 생략 가능) 또는 ROLLBACK TRANSACTION으로 트랜잭션을 종료한다.
ROLLBACK 구문을 만나면 최초의 BEGIN TRANSACTION 시점까지 모두 ROLLBACK이 수행된다.
SAVEPOINT를 정의하면 롤백할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.
[Oracle]
SAVEPOINT SVPT1;
...
ROLLBACK TO SVPT1;
[SQL Server]
SAVE TRANSACTION
SVTR1;
....
ROLLBACK
TRANSACTION
SVTR1;
날짜형 함수
NULL 관련 함수
NVL or ISNULL (표현식1, 표현식2) 👉🏼 Oracle 함수
: 표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다.
NULLIF (표현식1, 표현식2) 👉🏼 SQL Server 함수
: 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식 1을 리턴한다.
COALESCE (표현식1, 표현식2, ...) 👉🏼 SQL Server 함수
: 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.
ORDER BY 절 특징
ex) 2012-01-01 은 2012-12-01보다 먼저 출력된다.
SELECT 문장 실행 순서
FROM ( 발췌 대상 테이블 참조 )
WHERE ( 발췌 대상 데이터가 아닌 것은 제거 )
GROUP BY ( 행들을 소그룹화 )
HAVING ( 그룹핑된 값의 조건에 맞는 것만 출력 )
SELECT ( 데이터 값을 출력 / 계산 )
ORDER BY ( 데이터 정렬 )