IT Log
DDL / DML / DCL 본문
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
반응형
Comments