본문 바로가기
[스파르타코딩클럽]데이터분석 과정/LEARN

SQLD 공부(5) 관리 구문

by doo_ 2024. 2. 25.

1. DML : Data Manipulatiion Language

> DDL에서 정의한 대로 입력된 데이터를 수정, 삭제, 조회하는 명령어다.

0) SELECT

1) INSERT

INSERT INTO 테이블명(칼럼1, 칼럼2 ---) VALUES (데이터1, 데이터2)
-- 또는
INSERT INTO 테이블명 VALUES (모든 칼럼에 대한 데이터 리스트)

2) UPDATE

UPDATE 테이블명 SET 칼럼명1 = 새로운 데이터, 칼럼명2 = 새로운 데이터 (WHERE 수정할 데이터에 대한 조건);

3) DELETE

DELETE FROM 테이블명 (WHERE 수정할 데이터에 대한 조건)

+) 삭제 데이터에 대한 로그를 남기지 않고 삭제할 때는 아래 방법 사용

TRUNCATE TABLE 테이블명

4) MERGE

- 테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터에 대한 변경 작업을 한 번에 할 수 있도록 해주는 명령어다.

MERGE
    INTO 타겟 테이블명
    USING 비교 테이블명
    ON 조건
WHEN MATCHED THEN
    UPDATE SET 칼럼명 = 새로운 데이터 [, 칼럼명 = 새로운 데이터 ...]
WHEN NOT MATCHED TEHN
    INSERT [(칼럼명1, 칼럼명2 ...)]
    VALUES (데이터1, 데이터2 ...);

2. TCL : Transaction Control Language

1) 특징 : 원자성(Atomicity)| 일관성(Consistency) | 고립성(Isolation) | 지속성(Durability)

2) COMMIT

- INSERT, UPDATE, DELETE 후 변경된 내용을 확정하고 반영하는 명령어다. 즉 COMMIT을 실행해야만 최종적으로 데이터 파일에 기록되는 것이다.

3) ROLLBACK

- 변경된 내용을 취소하는 명령어다.

4) SAVEPOINT

- ROLLBACK을 할 때 전체 작업을 되돌리지 않고 일부만 되돌릴 수 있게 하는 명령어다. 

 

3. DDL : Data Definition Language

- 데이터를 정의하는 SQL문

1) CREATE 

- 테이블 생성 명령어

CREATE TABLE 테이블명 (
    칼럼명1 데이터타입 (DEFAULT/NULL여부),
	칼럼명2 데이터타입,
    칼럼명3 데이터타입,
    CONSTRAINT 테이블명_PK PRIMARY KEY (칼럼명1)
    CONSTRAINT 테이블명_FK FOREIGN KEY (칼럼명2) REFERENCES 테이블명2(칼럼명2)
    CONSTRAINT 칼럼명3 CHECK(칼럼명3 IN ('Y','N'))
    ...
)

+) 테이블 생성시 규칙

- 테이블명은 고유해야 한다.

- 한 테이블 내에서 칼럼명은 고유해야 한다.

- 칼럼 명 뒤에 데이터 유형과 데이터 크기가 명시되어야 한다.

- 칼럼에 대한 정의는 괄호안에 기술한다.

- 각 칼럼들은 ,로 구분된다.

- 테이블명과 칼럼명은 숫자로 시작될 수 없다.

- 마지막은 ;으로 끝난다.

+) 기존 존재하는 테이블을 복사해서 생성하고 싶다면

CREATE 테이블명 AS SELECT * FROM 복사할 테이블명;

 

2) ALTER

- 테이블 구조를 변경할 때 사용

ALTER TABLE 테이블명 ADD | DROP COLUMN 칼럼명 | MODIFY | ERNAME COLUMN | ADD CONSTRAINT ...

- 테이블을 삭제할 때는

DROP TABLE 테이블명 [CASCADE CONSTRAINT]; -- 참조 제약조건도 함께 삭제할 때
-- 또는
TRUNCATE TABLE 테이블명

 

4. DCL : Data Control Language

- user를 생성하고 user에 대한 데이터 컨트롤 할 수 있는 권한을 부여하거나 회수하는 명령어

1) USER 관련 명령어

CREATE USER 사용자명 IDENTIFIED BY 패스워드 ;
ALTER USER 사용자명 IDENTIFIED BY 패스워드 ;
DROP USER 사용자명;

2) 권한 관련 명령어

GRANT 권한 TO 사용자명;
REVOKE 권한 TO 사용자명;

3) ROLE 관련 명령어

CREATE ROLE 롤명;
GRANT 권한 TO 롤명;
GRANT 롤명 TO 사용자명;