오래 못 할 짓 하지 않기
[ 데이터베이스 ] 3. SQL 본문
SQL
용어 :
Relational 에서 쓰이던 용어들과는 다르게 사용된다. 알아두자
특징
중복된 Tuple 가능! // * relational data model 과 다른 점임
예제) SQL을 통하여 DB 만들어보기
CREATE DATABASE company;
이거 하면 DB생김
하지만 만들기만 했지 쓴다고는 안 했기에 이걸 쓸 거라고 정해줘야 한다.
Use company;
앞으로 헷갈릴 수도 있는데
주로 Database에서 Schema가 정의되고 , Schema에서 table이 정이된다.
Database → Schema → Table
Company table에 넣을 것
이 Schema를 구체적으로 만들어 놓아야 한다.
attribute data type
(아는 것들은 그냥 넘겼음)
● 문자열
1) 고정 크기 문자열 : CHAR(n)
최대 몇 개의 사이즈를 받을지 정함
→ 그 사이즈보다 작게 입력되면 나머지는 공백으로 채운 후에 저장.
2) 고정 크기 문자열 : VARCHAR(n)
최대 몇 개의 사이즈를 받을지 정함
→ 입력받은 만큼만 저장.
● 날짜 / 시간
특이사항
1) 시간 : '시' 를 hhh로도 표현 가능
2) 날짜와 시간 : TIMESTAMP는 어디에서 찍냐에 다라 다름.
Primary Key
뭔지는 2장에서 설명했다. 사용법에 관련된 특징을 정리하겠다.
1) Attribute 1개로 Primary key가 구성될 때
ex) id INT Primary key
2) Attribute 2개 이상으로 Primary key가 구성될 때
ex) (위에서 다 정의 하고)
Primary key(id,name,age)
Unique Key
Unique로 지정된 attribute는 중복된 값 X
단, NULL만 중복 가능!
선언하는 건 Primary와 동일하다.
attribute Default
따로 값을 선언해주지 않았을 때, Default로 설정한 값으로 저장된다.
ex) salary int default 6000
: salary에 따로 값을 넣어주지 않으면 해당 index의 salary는 6000으로 저장된다.
CHECK constraint
attribute로 들어온 값에 대한 제한을 걸 때 사용한다.
이거도 primary key느낌으로 제한할 때 표현되는 attribute의 개수에 따라서 선언이 달라진다.
1) Attribute 1개로 check가 구성될 때
ex) age INT check(age>=20)
2)방법으로 해도 되긴 함
2) Attribute 2개 이상으로 chek가 구성될 때
ex) (위에서 다 정의 하고)
Check ( start_time < end_time )
Foreign key
ex) dept_id INT,
Foreign Key (dept_id) // dept_id의 값을 foreign key로 사용할 것이다.
regerences DEPARTMENT(id) // < DEPARTMENT 테이블에 있는 id값을 참조할 것이다.
on delete(or update) ##option## // 참조하고 있던 값이 delete되거나 update되면 option으로 할 것이다.
constraint 이름 명시
constraint에 이름을 적어두면 어떤 constraint가 위반되었는지 파악 가능하다.
ex) age int constraint age_over_20 Check(age>20)
ALTER Table
Table을 만든 뒤에, 이미 table 정의한 내용에서 추가할 것이 있을 때 사용한다.
ex) 첫 번째에 만드는 table에 있는 attribute를 이따 만들 table에 Foreign key로 정해주어야 할 때
첫 번째 만들 땐 다른 table이 없기에 그냥 만들고, 그 뒤에 FK 를 추가해준다.
ALTER TABLE ( 바꾸려고 하는 테이블 이름 ) ADD(< or someting else) ( 추가하거나 어떻게 할 것들)
ex) ALTER TABLE department ADD FOREIGN KEY (leader_id)
REFERENCES employee(id)
on update CASCADE
on delete SET NULL;
주의할 점
이미 서비스 중인 table의 schema를 변경한다면
변경 때문에 서비스 백엔드에 영향이 없는지 검토한 후에 변경하는 것이 중요하다.
(참고)
유튜브 쉬운코드
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ 데이터베이스 ] 6. NULL / 3 valued logic (0) | 2023.12.31 |
---|---|
[ 데이터베이스 ] 5. Subquery (0) | 2023.12.31 |
[ 데이터베이스 ] 4. SQL 활용 ( 추가/수정/삭제 ) (0) | 2023.12.30 |
[ 데이터베이스 ] 2. Relational Database (0) | 2023.12.26 |
[ 데이터베이스 ] 1. 기본 개념들 ( DB , DBMS ) (0) | 2023.12.26 |