본문으로 바로가기

[DB] 4. SQL

category CS/Database 2019. 1. 21. 12:49
4_SQL

4. SQL

  1. DDL (Data Definition Language)
  2. DML (Data Manupulation Language)
  3. DCL (Data Control Language)

 

1. DDL (Data Definition Language)

1.1. DDL 의 개념

  • DDL 은 스키마, 도메인, 테이블, 뷰, 인덱스를 정의할 때 사용
  • CREATE, ALTER, DROP 의 명령문을 사용

 

1.2. CREATE

CREATE TABLE Student(
    학번 CHAR(8) UNIQUE,
	이름 VARCHAR(15) NOT NULL,
    학년 INT(8),
    전공 VARCHAR(15),
    부전공 VARCHAR(15),
    생년월일 DATE,
    PRIMARY KEY(학번),
	FOREIGN KEY(전공) REFERENCES Major(학과코드)
    	ON UPDATE CASCADE
);

Major 테이블은 학과코드 외래키를 사용하여 Student 테이블의 전공 기본키를 통해 참조하고 있다

이 때, ON UPDATE CASCADE 라는 속성은 참조테이블의 속성이 변경되면 기본테이블의 속성도 모두 변경된다는 옵션이다

 

1.3. ALTER

ALTER TABLE Student ADD 학년 VARCHAR(15);
ALTER TABLE Student DROP COLUMN 생년월일 [CASCADE];

 

1.4. DROP

DROP TABLE Student [CASCADE / RESTRICT];

CASECADE : Student 테이블 삭제시, 이 테이블을 참조하는 다른 테이블 또한 삭제 (참조 무결성)

RESTRICT : Student 테이블 삭제시, 다른 개체가 참조중일 경우 DROP 취소

 

2. DML (Data Manupulation Language)

2.1. DML 의 개념

  • DML 은 사용자가 쿼리를 통해 데이터베이스를 관리하는데 사용
  • SELECT, INSERT, DELETE, UPDATE 의 명령문 사용

 

2.2. SELECT

SELECT 학번,이름,전공,생년월일
FROM STUDENT
WHERE 부전공='디자인학과'
[GROUP BY 전공]
[HAVING 학년 >= 2]
[ORDER BY 학년 ASC / DESC];

GROUP BY : 특정 속성을 기준으로 그룹화하여 검색할 때 사용

HAVING : 일반적으로 GROUP BY 와 함께 사용되며 그룹에 대한 조건 기술

 

2.3. INSERT

INSERT INTO Student (학번,이름,전공,생년월일)
VALUE (201800170,호흥두,컴퓨터공학과,19880307);

 

2.4. DELETE

DELETE FROM Student
WHERE 이름='호흥두';

 

2.5. UPDATE

UPDAtE Student
SET 전공='디자인학과'
WHERE 이름='호흥두';

 

2.6. JOIN

SELECT *
FROM Student
JOIN Student ON Student.전공 = Major.학과코드;

 

 

3. DCL (Data Control Language)

3.1. DCL 의 개념

  • 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용
  • COMMIT, ROLLBACK, GRANT, REVOKE 의 명령문 사용

 

3.2. COMMIT / ROLLBACK

  • COMMIT : 트랜잭션의 모든 변경 내역을 영구적으로 DB 에 반영하는 명령어
  • ROLLBACK : 변경된 모든 내용을 취소하고 DB 를 이전 상태로 되돌리는 명령어

 

3.3. GRANT, REVOKE

  • GRANT : 권한 부여를 위한 명령어
  • REVOKE : 권한 취소를 위한 명령어

 

'CS > Database' 카테고리의 다른 글

[DB] 3. 트랜잭션 (Transaction)  (0) 2019.01.20
[DB] 2. 정규화 (Nomalization)  (0) 2019.01.20
[DB] 1. 데이터베이스 (Database)  (0) 2019.01.20