SQL(Structured Query Language)
- 데이터베이스에 접근할 때 사용하는 언어
- 크게 DML과 DDL로 나눌 수 있다
1. DDL(데이터 정의어)
- SQL 중 데이터베이스의 테이블, 스키마 등을 정의, 변경, 제거하는 언어
① CREATE : 테이블 생성
CREATE TABLE 테이블명 (column datatype ... [DEFAULT expr]);
[DEFAULT expr] -> 옵션
CREATE TABLE employees (
id NUMBER(8),
hire_date DATE DEFAULT SYSDATE);
데이터 타입의 종류
데이터타입 | 정의 |
VARCHAR2(size) | 가변 길이의 문자열 타입 |
CHAR2(size) | 고정 길이의 문자열 타입 |
NUMBER(p, s) | 길이가 p인 숫자에서 소수 아래 숫자가 s개인 십진수 |
DATE | 날짜와 시간 |
LONG | 2GB이상의 가변길이의 문자 데이터 타입 |
CLOB | 4GB이상의 문자 데이터 타입 |
RAW and LONG RAW | 행의 2진 데이터 타입 |
BLOB | 4GB이상의 이진 데이터 타입 |
BFILE | 2진 데이터가 저장된 외부의 파일 |
ROWID | 테이블안의 특정 행의 주소를 대표하는 64개의 수로 이루어진 값 |
② ALTER
- 테이블 생성 후 테이블의 구조 변경
- 칼럼을 추가(ADD), 수정(MODIFY), 삭제(DROP), 새로운 칼럼의 값 정의 등을 할 수 있음
ADD(추가)
ALTER TABLE 테이블명 ADD(column datatype [DEFAULT expr]);
ALTER TABLE dept ADD (job_id VARCHAR2(9));
MODIFY(수정)
ALTER TABLE 테이블명 MODIFY(column datatype [DEFAULT expr]);
ALTER TABLE dept MODIFY (job_id VARCHAR2(9));
DROP(삭제)
ALTER TABLE 테이블명 DROP COLUMN (column);
ALTER TABLE dept DROP COLUMN job_id;
③ DROP: 테이블 삭제
DROP TABLE 테이블명 [PURGE];
PURGE는 옵션, 사용하면 복구 안됨
DROP TABLE dept PURGE;
제약조건의 종류
- 테이블 수준에서 이루어지는 작업에 대한 규칙
- 모든 제약조건은 데이터 카탈로그에 저장
제약조건 | 의미 |
NOT NULL | NULL값이 입력될 수 없음을 명시한다 |
UNIQUE | 테이블 내의 모든 행은 컬럼 또는 컬럼 조합의 값이 반드시 유일해야 한다 |
PRIMARY KEY | 테이블에서 각 행을 식별할 수 있는 특별한 칼럼이다 |
FOREIGN KEY | 어떠한 칼럼과 그 칼럼에 관계를 가지고 있는 테이블의 칼럼이다(참조) |
CHECK | 조건을 명시하여 참인 경우에만 값을 받는다 |
제약조건 정의 - 제약조건을 attribute단에서 준 것(칼럼 기준)
column [CONSTRAINT constraint_name] constraint_type
CREATE TABLE employees(
employee_id NUMBER(6)
CONSTRAINT emp_id_pk PRIMARY KEY,
first_name VARCHAR2(20)
...
);
제약조건 정의 - 제약조건을 전체 테이블에 준 것
column, ...
[CONSTRAINT constraint_name] constraint_type (column,
...),
CREATE TABLE employees(
employee_id NUMBER(6)
first_name VARCHAR2(20),
...
job_id VARCHAR(10) NOT NULL,
CONSTRAINT emp_id_pk
PRIMARY KEY (EMPLOYEE_ID)
);
① NOT NULL : 널이 칼럼에 삽입되는 것을 막음
학생 테이블
이름 | 학번 | 연락처 |
홍길동 | 2006150004 | 010-1234-5678 |
김길동 | 2007150004 | (null) |
이길동 | 2008150004 | 010-0123-4567 |
② UNIQUE : 한 테이블에 두 개의 행이 중복되지 않음
CREATE TABLE 학생(
이름 VARCHAR2(6) NOT NULL
email VARCHAR2(20),
학과 VARCHAR2(10) NOT NULL,
...
CONSTRAINT 학생_email_uk UNIQUE(email)
);
③ PRIMARY KEY : 테이블 하나에는 오직 하나의 기본키만 존재 (NOT NULL이면서 UNIQUE한 것)
CREATE TABLE 학생(
이름 VARCHAR2(6),
학번 NUMBER(9),
...
핸드폰번호 VARCHAR2(13),
CONSTRAINT 학생_학번_pk PRIMARY KEY (학번)
);
④ FOREIGN KEY
같은 테이블이나 다른 테이블과 관계를 맺을 때, 그 테이블의 PRIMARY KEY나 UNIQUE KEY 간에 성립
CREATE TABLE 학생(
이름 VARCHAR2(6),
학번 NUMBER(9),
...
지도교수_ID NUMBER(3),
CONSTRAINT 학생_교수_fk FOREIGN KEY (지도교수_ID)
REFERENCES 교수(ID)
...
);
⑤ CHECK
칼럼에 대해 값의 범위를 지정함으로써, 범위 밖의 값은 삽입을 제한
CREATE TABLE 학생(
이름 VARCHAR2(6),
학번 NUMBER(9),
...
지도교수_ID NUMBER(3),
CONSTRAINT 학생_지도교수_ID
CHECK (지도교수_ID >=100 AND 지도교수_ID <=103),
CONSTRAINT 학생_교수_kf FOREIGN KEY (지도교수_ID)
REFERENCES 교수(ID)
...
);
2. DML(데이터 조작어)
- 데이터베이스의 저장된 데이터들을 다룬다
SELECT문 - SQL에서 데이터 검색
SELECT | 추출할 애트리뷰트 |
FROM | 추출에 필요한 테이블 |
WHERE | 추출하기 위한 조건 |
GROUP BY | 그룹별로 묶을 기준이 되는 애트리뷰트 |
HAVING | 그룹이 만족해야 할 조건 |
ORDER BY | 추출한 데이터의 정렬 |
INSERT 문
- 테이블에 새로운 튜플 삽입
- 자식 테이블의 외래키 칼럼에는 부모 테이블의 칼럼의 데이터들 중 하나가 입력되어야만 함
DELETE 문
- 어떤 테이블에서 삭제가 이루어지냐에 따라 오류가 날 수도 있음
- FROM 절과 WHERE 절로 이루어짐
UPDATE 문
- 테이블의 행 값을 수정할 때 사용
- 외래키나 기본키일 때 참조 무결성 제약조건을 위반하면 오류 발생
3. DCL(데이터 제어어)
- 데이터베이스에 대한 각종 권한을 부여, 회수 한다
GRANT 문
유저에게 권한 부여
REVOKE 문
유저로부터 권한 회수
출처
[프리렉]오용철의 데이터베이스 모델링
https://youtu.be/2ihnrP9MjIw?si=23QJNBx8AZv_bVzR
https://youtu.be/Fug0d_1e4Dg?si=NYqc-REtVEYUwNuf
'백엔드 스터디 > 데이터베이스' 카테고리의 다른 글
RDB INDEX & RDB VIEW (0) | 2024.07.10 |
---|---|
RDB JOIN 종류와 특징 (0) | 2024.07.08 |
NoSQL 개념 (0) | 2024.07.05 |
SQL로 데이터 조회하기 - select를 활용해서 데이터를 읽어오는 기본적인 문법 (0) | 2024.07.04 |
SQL 데이터 추가(insert), 수정(update), 삭제(delete) (0) | 2024.07.03 |