Simple is IT, 누구나 보고 누구나 깨닫는 IT

DataBase_SQL (Structured Query Language) 본문

Simple is IT/Database

DataBase_SQL (Structured Query Language)

currenjin 2020. 4. 29. 10:25

SQL (Structured Query Language)

: 관계 대수와 관계해석을 기초로한 고급 데이터 언어이이다.

DDL (Data Definition Language, 데이터 정의어)

- 스키마, 도메인, 테이블, 뷰, 인덱스 등 데이터의 구조를 정의하거나 제거

CREATE, ALTER, DROP

ex)

CREATE TABLE [테이블_이름] ( [속성_이름] [타입] ... [옵션] );

ALTER TABLE [테이블_이름] ADD [속성_이름] [타입]

ALTER TABLE [테이블_이름] DROP [속성_이름] [CASCADE]

DROP TABLE [테이블_이름] [CASCADE or RESTRICTED]

// CASCADE : 연쇄적 삭제(종속), RESTRICTED : 참조할 경우 미삭제(제한)

DML (Data Manipulation Language, 데이터 조작어)

- 실질적으로 데이터를 조회, 삽입, 삭제, 수정할 때 사용하는 SQL문

SELECT, INSERT, DELETE, UPDATE

ex)

SELECT [속성명] FROM [테이블명] WHERE [조건];

// AND = 조건 모두 만족, OR = 조건 하나만 만족

// ORDER BY [속성명] ASC/DESC;

INSERT INTO [테이블명] [속성명, 속성명] VALUES [값];

DELETE FROM [테이블명] WHERE [조건];

UPDATE [테이블명] SET [속성_이름 = 값, 속성_이름=값] WHERE [조건];

DCL (Data Control Language, 데이터 제어어)

- 데이터베이스에 접근하고 사용할 수 있도록 권한을 주고 회수하는 명령어

GRANT, REVOKE

ex)

GRANT [권한명] on [DB].[TABLE] to [계정명]; * WITH GRANT OPTION

REVOKE [권한명] on [DB].[TABLE] FROM [계정명]; * CASCADE, RESTRICT (8, 10 버전에선 안됨)

DDL (Data Definition Language)

CREATE SCHEMA testdb;

CREATE TABLE testdb.student (

name VARCHAR(10),

age int

);

CREATE TABLE testdb.department (

name VARCHAR(10),

num int

);

ALTER TABLE testdb.student ADD gender VARCHAR(10);

ALTER TABLE testdb.student DROP gender;

DROP TABLE testdb.student;

desc testdb.student; // 테이블 구조 확인

DML (Data Manipulation Language)

CREATE TABLE testdb.student (

name VARCHAR(10),

gender VARCHAR(10),

age int

);

INSERT INTO student VALUES('정현진', '남', '21');

SELECT * FROM testdb.student;

SELECT name FROM testdb.student;

SELECT * FROM testdb.student WHERE gender='남' AND age=21;

SELECT * FROM testdb.student WHERE gender='남' AND age=21 OR gender='여';

SELECT * FROM student ORDER BY age ASC;

SELECT * FROM student WHERE (age=25 OR age=26) AND gender='남' ORDER BY age DESC;

UPDATE testdb.student SET gender='여' WHERE name='정현진';

DELETE FROM testdb.student WHERE gender='남';

DCL (Data Control Language)

use testdb;

CREATE USER 'user01'@'localhost' IDENTIFIED BY 'test';

SELECT User

이 상태로 user01을 통해 연결을 했을 시엔 스키마 자체도 표시되지 않는다.

GRANT SELECT ON testdb.student TO 'user01'@'localhost';

// user01이라는 계정이 testdb.student 테이블에서 SELECT 권한만 주어짐, 편집이 불가능함

편집 시도 시 나타나는 에러문구

REVOKE SELECT ON testdb.student FROM 'user01'@localhost';

root

CREATE USER 'user02'@'localhost' IDENTIFIED BY 'test';

GRANT SELECT ON testdb.student TO 'user01'@'localhost' WITH grant option;

-> user01 접속 시 SELECT의 권한만 실행 가능하다.

추가로, WITH grant option 라는 옵션을 사용했기 때문에 해당 권한을 부여할 수 있게 된다.

user01

GRANT SELECT ON testdb.student TO 'user02'@localhost';

-> REVOKE SELECT ON testdb.student FROM 'user01'@'localhost';



Comments