- 데이터 정의 언어(DDL: Data Definition Language)
- 테이블 생성 : CRATE
- 테이블 변경 : ALTER, RENAME
- 테이블 삭제 : DROP
- 데이터 조작 언어(DML: Data Manipulation Language)
- 데이터 삽입 : INSERT
- 데이터 조회 : SELECT
- 데이터 수정 : UPDATE
- 데이터 삭제 : DELETE
- 데이터 제어 언어(DCL: Data Control Language)
- DB접근 권한 부여 : GRANT
- DB접근 권한 회수 : REVOKE
- 트랜잭션 제어어(TCL: Transaction Control Language)
- 트랙잭션 저장 : COMMIT
- 트랙잭션 마지막 COMMIT으로 되돌리기 : ROLLBACK
<트랜잭션 특징/ACID>- 원자성(Atomicity) : YES or NO, 둘 중에 하나만 가능하다. 트랜잭션의 논리적 단위가 맞거나 맞지 않거나와 같이 한가지 선택만 가능하다.
- 일관성(Consistency) : 트랜잭션 처리결과는 일관되어야 한다.
- 독립성(Isolation) : 실행 중인 트랜잭션은 하나여야만 한다. 두 개의 트랜잭션이 실행될 때는 먼저 시작한 쪽이 끝난 다음에 다음 트랜잭션이 실행된다.
- 지속성(Durability) : 트랜잭션의 처리가 끝난 후에는 결과가 지속적으로 반영된다.
그 외의 특징들
- SQL은 대소문자를 구분하지 않으나 명령어들은 대문자를 쓰기를 권장
- 세미콜론(;)은 쿼리문의 마지막 문장 끝에 작성하는 것이 표준 방법
#CREATE 작성법
CREATE TABLE 'table name' (
'column name' 타입명() NOT NULL
'column name' 타입명() NULL
.
.
.
# ALTER 작성법
# 컬럼추가
ALTER TABLE 'table name' ADD 'column name' 타입명();
# 제약조건 추가
ALTER TABLE 'table name' ADD CONSTRAINT '제약조건명' 제약조건 (column name);
# 컬럼 삭제
ALTER TABLE 'table name' DROP COLUMN 'column name';
# 제약조건 삭제
ALTER TABLE 'table name' DROP CONSTRAINT '제약조건명';
# 컬럼 수정
ALTER TABLE 'table name' MODIFY (
'column name' 타입명() DEFAULT '디폴트명' NOT NULL;
'column name' 타입명() DEFAULT '디폴트명' NULL;
)
# 컬럼 이름변경
ALTER TABLE 'table name' RANAME COLUMN '변경전 컬럼명' TO '변경할 컬럼명';
# 테이블 이름변경
RENAME '변경전 테이블명' TO '변경할 테이블명';
# 테이블 삭제
DROP TABLE 'table name';
# 테이블 삭제(해당 테이블에 제약조건으로 묶인 다른 테이블의 제약조건을 함께 삭제)
DROP TABLE 'table name' CASCADE CONSTRAINT;
- 데이터 조작 언어 중에 DELETE는 해당 데이터 내에서 바로 저장되지 않기 때문에 이전 COMMIT 시점으로 ROLLBACK할 수 있다.
반면, 비슷한 삭제 명령어인 TRUNCATE는 테이블을 초기 시점으로 돌림과 동시에 이전 데이터를 남기지않고 바로 저장하기에 유의하여야 한다.
# 데이터 삽입
# 모든 컬럼을 대상으로 넣을 경우, 해당된 컬럼만큼의 값을 넣음
INSERT INTO 'table name' values (값1, 값2, ...);
# 특정 컬럼의 값을 넣을 경우, 해당 컬럼과 해당 값을 똑같은 순서대로 넣음
INSERT INTO 'table name' (컬럼1, 컬럼2, 컬럼3, ...) values (값1, 값2, 값3, ...);
# 테이블에 이미 있는 데이터를 수정 (컬럼의 모든 값이 대치됨)
UPDATE 'table name' SET '수정할 컬럼명' = '수정 값';
# 특정 조건에 따라 데이터를 수정
UPDATE 'table name' SET '수정할 컬럼명' = '수정 값' WHERE 수정조건;
# 데이터 삭제 (전체 데이터 삭제: 거의 쓸일 없음, 매우 조심해야함)
DELETE FROM 'table name';
# 특정 조건에 해당하는 값을 삭제할 경우, 조건을 넣음
DELETE FROM 'table name' WHERE 삭제조건;
group by 와 having의 관계
- 그릅화 한 객체의 연산작업은 having을 통해서 진행할 수 있다. sql 실행순서를 이해하면 쉽다
- 집계함수 괄호 안에 *은 모든 로우를 포함하지만 특정 컬럼을 넣는 경우는 null값을 제외한 값을 연산한다.
- 오라클의 null값은 최대값, sql server는 최소값으로 설정됨(정렬시 주의)
order by
- 총 작업 완료된 쿼리의 정렬 방법을 줄 수 있으며, 여기서도 연산으로 우선 정렬 순위를 부여할 수 있다.
DCL
- 데이터 제어 명령어
- DB 관리자자 또는 이에 준하는 권한을 가진 자가 다른 사용자에게 권한을 부여하거나 회수할 수 있음.
TCL
- 트랜잭션 제어 명령어
- 트랜잭션의 저장이나 롤백기능
- 실행 순서가 꼬이지 않기 위해서 자체적으로 쿼리 작성중인 테이블을 함부로 제어할 수 없음 이것을 락킹이라고 부름
- 다중으로 트랜잭션이 실행되었을 경우에는 순차적으로 저장되며 실행됨
- DDL 데이터 정의 명령어를 사용할 시에는 자동으로 커밋됨, DBMS에 따라서 오토 커밋 기능의 여부가 달라진다.