오래 못 할 짓 하지 않기

[ 데이터베이스 ] 3. SQL 본문

3학년 1학기/데이터베이스(DB)

[ 데이터베이스 ] 3. SQL

쫑알bot 2023. 12. 28. 14:44
728x90

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으로 할 것이다.

 

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를 변경한다면

변경 때문에 서비스 백엔드에 영향이 없는지 검토한 후에 변경하는 것이 중요하다.

 

 

(참고)

유튜브 쉬운코드