IT Log

DDL / DML / DCL 본문

SQL

DDL / DML / DCL

newly0513 2019. 4. 29. 10:34
728x90
반응형

DDL

  • Data Definition Language의 약자로,  데이터구조나 데이터베이스 스키마를 정의하기 위한 프로그래밍 언어.

1. CREATE

데이터베이스, 테이블, 인덱스를 설정하는데 사용.

CREATE TABLE [테이블 이름] ( [컬럼 정의] ) [테이블 파라미터]


CREATE TABLE employees (
    ID         INTERGER PRIMERAYKEY,
    first_name VARCHAR(50) not null,
    last_name  VARCHAR(70) not null,
    date       DATE        not null
);

2. DROP

기존 데이터베이스, 테이블, 인덱스 or 뷰를 삭제.

DROP [오브젝트 type] [오브젝트 name]


DROP TABLE 직원;

3. ALTER

기존 데이터베이스 오브젝트를 수정.

ALTER [오브젝트 type] [오브젝트 name]


ALTER TABLE employees ADD salary INTEGER;
ALTER TABLE employees DROP COLUMN salary;

4. TRUNCATE

테이블에서 모든 데이터를 삭제하는데 사용, DELETE보다 훨씬 빠름.

TRUNCATE TABLE employees;

DML

  • Data Manipulation Language의 약자로 데이터베이스 사용자 or 응용 프로그램 소프트웨어가 컴퓨터 데이터베이스에 대해 데이터 검색, 등록, 삭제, 갱신을 위한 데이터베이스 언어.

1. SELECT

테이블에서 테이터를 추출하는 DML중 하나.

SELECT [ALL|DISTINCT] 컬럼명 [,컬럼명...]
FROM 테이블명 [,테이블명...]
[WHERE 조건식]
[GROUP BY 컬럼명 [HAVING 조건식]]
[ORDER BY 컬럼명]
  • ALL / DISTINCT 의 default값은 ALL이고, 테이블에 있는 모든 데이터를 반환한다. DISTINCT일 경우 중복을 제외 한 1개만을 반환.
  • AVG, MAX, MIN, SUM, COUNT 같은 그룹함수는 그룹화를 한 행에 대해 하나의결과를 반환하는 함수로 GROUP BY 절에 쓰이고 중첩은 2단계까지만 가능. ( GROUP BY에 그룹함수를 지정하지 않거나, 그룹함수가 아닌 컬럼을 쓸 경우 오류)
SELECT SUM(salary) sum_salary
FROM employees
GROUP BY salary;
  • 그룹함수를 제외한 나머지는 단일행 함수로 중첩에 제한이 없음.
  • FROM절은 필수 구성으로 SELECT문에 지정된 컬럼을 가진 테이블을 지정, 여러 테이블을 JOIN하여 사용할 수도 있음.
  • WHERE절은 데이터를 추출하는 선택 조건식을 지정.
  • HAVING절은 GROUP BY에 대한 조건을 지정.
  • ORDER BY절은 구문의 마지막에 지정하며, 컬럼을 정렬함. 
    ( ASC는 오름차순, DESC는 내림차순 )

2. INSERT

테이블 or 뷰에 한개 이상의 행을 추가.

INSERT INTO 테이블 이름 (컬럼1, [컬럼2,...]) VALUES(값1, [값2...])

INSERT INTO 테이블 이름 VALUES(값1, [값2...])
  • INSERT에는 위처럼 2가지 방식이 있는데, 첫번째 방식은 여러 컬럼 중 지정한 컬럼에만 값을 넣고 지정되지 않은 컬럼에는 NULL값으로 추가되는 방식이고, 두번째 방식은 해당 테이블에 컬럼 순서에 맞게 모든 값을 입력해줘야 함.
  • 상황에 알맞게 방식을 선택하여 INSERT를 사용.

3. UPDATE

테이블 or 뷰에서 한개 이상의 행을 바꿈.

UPDATE 테이블명 SET 컬럼명 = 값[, 컬럼명 = 값...] [WHERE 조건]
UPDATE employees SET salary=salary*1.1 WHERE ID=7650;

4. DELETE

테이블 or 뷰에서 한개 이상의 행을 삭제.

DELETE FROM 테이블명 [WHERE 조건];
  • WHERE절을 생략할 경우 모든 행이 테이블에서 삭제
DELETE FROM employees WHERE last_name='David';

DCL

  • Data Control Language의 약자로 데이터베이스에서 데이터에 대한 액세스를 제어하기 위한 데이터베이스 언어.

1. GRANT

특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여.

GRANT 권한1,[권한2...] ON 객체명 TO 사용자;
GRANT UPDATE ON employees TO user;
  • 'user'라는 사용자에게 employees 테이블에 대한 UPDATE 권한을 부여한 것.
  • 'user'라는 사용자는 employees 테이블에 대한 UPDATE만 가능 SELECT이나 DELETE 등 사용 불가.

2. REVOKE

특정 데이터베이스 사용자에게 부여한 특정 권한을 박탈.

REVOKE 권한1,[권한2...] ON 객체명 TO 사용자;
REVOKE UPDATE ON employees TO user;
  • 'user'라는 사용자에게서 employees테이블에 대해 UPDATE할 수 있는 권한을 박탈.
  • 'user'라는 사용자는 더이상 employees 테이블을 UPDATE할 수 없음.
728x90
반응형

'SQL' 카테고리의 다른 글

SQL  (0) 2019.05.24
PL/SQL  (0) 2019.04.29
Comments