목차
1. RDBMS
Relational Database Management System
- F.커드씨가 도입한 관계형 모델을 기반으로 데이터베이스를 관리하는 방식이다.
- RDBMS의 종류로는 Oracle, Mysql 등이 널리 사용되고있다.
- Relational을 표현하기 위하여 ERD(Entity-Relationship Diagram)으로 테이블을 표현한다.
2. DDL, DML
DDL (Data Definition Language)
Table 자체를 구성하는대 사용한다.
1. Create
: db 스키마 객체를 생성
1 | CREATE TABLE book ( |
2. Data Type
VARCHAR2(size)
: 가변길이 문자열 (최대 4000byte)CHAR(size)
: 고정길이 문자열 (최대 2000byte)NUMBER(p,s)
: 가변길이 숫자. 전체 p자리 중 소수점 이하 s자리p
: 38s
: -84 ~ 127- 21 byte
DATE
: 고정길이 날짜 + 시간 (7byte)
3. Alter
: 변경
- 테이블 칼럼 추가
ALTER Table Student ADD (name VARCHAR(50));
- 테이블 칼럼 수정
ALTER Table Student MODIFY (name VARCHAR(50));
- 테이블 칼럼 삭제
ALTER Table Student DROP name;
4. Drop
: db 스키마 제거
- db가 날라갈 수 있는 위험한 명령어!
DROP Table Student
5. Truncate
: 스키마는 유지하면서 자료만 버림
TRUNCATE Table Student
6. Rename
: 이름 변경
RENAME Student TO employee
7. Comment
: 테이블에 설명 추가
8. Constraint
: 테이블에 제약조건 생성
Table의 특정규약을 설정한다 즉 제약조건이다.
- NOT NULL
- UNIQUE
- CHECK
PRIMARY KEY => PRIMARY KEY는 NOT NULL + UNIQUE하다.
- PK는 한테이블당 한개만 존재
- 인덱스 자동생성
- 여러 컬럼을 하나의 PK로 설정 가능
1
2
3
4
5CREATE TABLE book (
ssn1 NUMBER(6),
ssn2 NUMBER(7),
PRIMARY KEY (ssn1, ssn2)
)
FOREIGN KEY => 주의 PRIMARY KEY에게만 FOREIGN KEY 가능
- ON DELETE SET NULL : 해당하는 FK를 NULL로 바꾼다.
- ON DELETE CASCADE : 해당하는 FK를 가진 참조행도 삭제
DML (Data Manipulation Language)
Insert
, Delete
, Select
,Update Table
내부의 data를 바꿀때 사용한다.
1. Insert
테이블 Data 추가INSERT INTO 테이블이름 (col1, col2) VALUES(“val1”, “val2”);
2. Delete
테이블 Data 추가DELETE FROM 테이블이름 Where id = 1;
3. Update
테이블 Data 추가UPDATE 테이블이름 SET 변경내용 Where id = 1;
3. Aggregate, Group Function
Aggregate Function
1. AVG
평균 구하기SELECT AVG(salary) FROM Student;
- Group By
SELECT 부서명, AVG(salary) FROM 직장; => 오류 발생
=>SELECT 부서명, AVG(salary) FROM 직장 GROUP BY 부서명
- Having
2. SUM
1 | SELECT SUM(col_name) FROM table_name; |
- COUNT
- MAX
- MIN
4. SQL
SQL(Structured Query Language)
: 구조화된 질의 언어
가장 기본적인 문법
Select
(Table의 원하는 col을 선택하다)From
(어떠한 Table에서)Where
(특정 조건)Student 테이블을 전부다 가져오고싶다.
Select*From Student; => *
는 전부를 나타낸다.Student 테이블중에서 name(col)을 가져오고싶다.
Select name From Student;
Student 테이블중에서 name(col)이 Joy 가져오고싶다.
Select name From Student Where name=Joy;
Join
둘 이상의 테이블을 합쳐서 하나의 테이블로 만든다.
Cross Join
(Cartasian Product) 모든 가능한 쌍이 나타난다.
Inner Join
조건을 만족하는 tuple만 나타난다.
1 | SELECT name, jobname FROM Student Inner Join Job |
Outer Join
조건을 만족하지 않는 tuple도 나타난다. => null로 표기
Left Outer Join => join table의 왼쪽 table 값중 null인 것도 가져온다.
Right Outer Join => join table의 오른쪽 table 값중 null인 것도 가져온다.
Full Outer Join => 양쪽 table 값중 null인 것도 가져온다.1
2SELECT name, jobname FROM Student Left Outer Join Job
ON Student.id = Job.student_id;1
2SELECT name, jobname FROM Student Right Outer Join Job
ON Student.id = Job.student_id;1
2SELECT name, jobname FROM Student Full Outer Join Job
ON Student.id = Job.student_id;Natural Join
조건을 만족하는 tuple들의 동일한 col이 합쳐져서 나타난다.Self Join
자기 자신과 Join
5. ERD
Entity-Relationship Diagram
mySql에서 자동으로 그려준다.