RDBMS에서 사용하는 언어. DB조작, 관리에 사용
데이터 정의어
CREATE
CREATE DATABASE 데이터베이스이름;
CREATE TABLE 테이블이름;
(
필드이름1 필드타입1,
필드이륾2 필드타입2,
...
);
필드이름 필드타입 AUTO_INCREMENT,
// id bigint AUTO_INCREMENT,
필드이름 필드타입 not null,
필드이름 필드타입 UNIQUE,
NOT NULL
과 UNIQUE
의 특징을 모두 가지게 됨필드이름 필드타입 PRIMARY KEY,
...
필드이름1 필드타입1,
필드이름2 필드타입2,
...
FOREIGN KEY(필드이름) REFERENCES 테이블이름(필드이름)
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름) ON DELETE CASCADE
// ON UPDATE CASCADE
);
ALTER
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
ALTER TABLE 테이블이름 DROP 필드이름;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입; // 컬럼 변경
DROP
DROP DATABASE 데이터베이스이름;
DROP TABLE 테이블이름;
TRUNCATE
TRUNCATE DATABASE 데이터베이스이름;
TRUNCATE TABLE 테이블이름;
데이터 사용 권한 관리
사용자 or ROLE에 대한 권한 부여
GRANT [객체권한명] (컬럼)
ON [객체명]
TO { 유저명 | 롤명 | PUBLC} [WITH GRANT OPTION];
//ex
GRANT SELECT ,INSERT
ON mp
TO scott WITH GRANT OPTION;
사용자 or ROLE에 대한 권한 회수
REVOKE { 권한명 [, 권한명...] ALL}
ON 객체명
FROM {유저명 [, 유저명...] | 롤명(ROLE) | PUBLIC}
[CASCADE CONSTRAINTS];
//ex
REVOKE SELECT , INSERT
ON emp
FROM scott
[CASCADE CONSTRAINTS];
INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) VALUES(데이터값1, 데이터값2, 데이터값3, ...);
INSERT INTO 테이블이름 VALUES(데이터값1, 데이터값2, 데이터값3, ...);
SELECT 필드이름 FROM 테이블이름 [WHERE 조건];
//=============================================================
SELECT * FROM STUDENT; //테이블 전체 선택
SELECT * FROM STUDENT WHERE STUDENT_CODE = 's1'; // 테이블 전체에서 조건
SELECT name, major_code FROM STUDENT WHERE student_code = 's1';
UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... WHERE 필드이름=데이터값;
DELETE FROM 테이블이름 WHERE 필드이름=데이터값;
키워드 ON
사용
적어도 하나의 컬럼을 고유하고 있어야 하기 때문에 외래키가 설정되어 있어야 함
SELECT s.name, s.major_code, m.major_name FROM STUDENT s JOIN MAJOR m ON s.major_code = m.major_code;
//위에라 같은 결과를 내는 다른 코드
SELECT s.name, s.major_code, m.major_name FROM STUDENT s, MAJOR m WHERE s.major_code = m.major_code;