상세 컨텐츠

본문 제목

SQL

카테고리 없음

by simplecode 2021. 7. 18. 02:18

본문

 

SQL

SQL 혹은 Structured Query Language 은 데이터베이스 언어의 기준으로 주로 관계형 데이터베이스에서 사용이 됩니다.

데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용 가능합니다.  ex) MySQL, Oracle, SQLite, PostgreSQL 등 

 

NoSQL

데이터 구조가 고정되어 있지 않은 데이터베이스들로서, 관계형 데이터베이스와는 달리 테이블을 사용하지 않고 다른 형태로 데이터를 저장합니다.  ex) MongoDB

 


SQL 문법

  • Data Definition Language
  • Data Manipulation Language
  • Data Control Language
  • Data Query Language
  • Transaction Control Language

Data Definition Language (DDL)

DDL 은 데이터를 정의할 때 사용되는 언어를 가리킵니다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용됩니다.

ex) CREATE(테이블 생성), DROP(테이블을 제거)

 

Data Manipulation Language (DML)

DML 은 데이터베이스에 데이터를 저장할 때 사용되는 언어를 가리킵니다. 

ex) INSERT(새로운 레코드를 추가), DELETE(데이터 삭제), UPDATE(변경)


Data Control Language (DCL)

DCL 은 데이터베이스에 대한 접근 권한과 관련된 문법으로, 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정/없애는 역할이죠. 

ex)  GRANT(권한을 줌), REVOKE(권한을 가져감)


Data Query Language (DQL)

DQL 은 정해진 스키마 내에서 쿼리를 할 수 있는 언어입니다.  DQL 을 DML 의 일부분으로 말하곤 합니다.

ex) SELECT


Transaction Control Language (TCL)

TCL 은 DML 을 거친 데이터 변경사항을 수정할 수 있습니다.

ex) COMMIT(DML 이 작업한 내용을 데이터베이스에 커밋), ROLLBACK(커밋했던 내용을 다시 롤백하는 문법

 

쿼리 (query) 의 뜻 - '질의문'

 

 

 

관계형 데이터 베이스 설계

관계 두 엔티티가 서로 관련이 있을 때를 말하는데, 1:1, 1:N, N:M 관계를 맺을 수 있습니다.

엔티티(Entity) : DataBase에 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것을 뜻합니다


관계의 종류

테이블 간 관계

  • 1:1 관계
  • 1:N 관계
  • N:N 관계

테이블 자체 관계

  • self referencing 관계

- 1:1 관계

상대 레코드

반드시 단 하나의 관계를 가지는 것을 말합니다.

- 1:N 관계

테이블의 레코드 하나당 여러 개의 레코드와 연결되어 있는 경우입니다.

제 DB를 설계할 때 자주 쓰이는 방식으로 많이 쓰입니다.

 

여러 명의 자식(N)의 입장에서 한 쌍의 부모(1)중 어떤 부모에 속해 있는지 표현해야하므로 부모 테이블의PK를 자식 테이블에FK로 집어 넣어 관계를 표현합니다.즉 부모 테이블(1)에서는 내 자식들이 누구인지 정보를 넣을 필요가 없고, 자식 테이블(N)에서만 각각의 자식들이 자신의 부모 정보(FK)를 넣음 으로써 관계를 표현할 수 있습니다.

 

 

PK(Primary Key) : 각 엔티티를 식별할 수 있는 대표키, 테이블에서 중복되지 않는(Unique) 값, Null일 수 없습니다.

FK(Foreign Key): 다른 테이블의 기본키를 참조, 모든 필드는 참조하는 기본키와 동일한 도메인(값의 종류&범위)을 갖습니다.
모든 필드 값은 참조하는 기본키와 동일하거나 null 일 수 있습니다.

 

- N:N 관계

여러 개의 레코드가 여러 개의 레코드를 가지는 관계입니다. 서로가 서로를 1:N관계로 보고 있다고 보면 됩니다.

N:M 관계는 서로가 서로를 1:N 관계, 1:M 관계로 갖고 있기 때문에, 서로의 PK를 자신의 외래키 컬럼으로 갖고 있으면 됩니다.

일반적으로 N:M 관계는 '조인 테이블'을 생성(두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블)해서 관리합니다.

 

 

 

- 자기참조 관계 (Self Referencing Relationship)

때로는 테이블 내에서도 관계가 필요할 때가 있습니다. 예를 들어 추천인이 누구인지 파악하기 위한 목적, 혹은 조직 내에 상하 관계 등을 표현하기 위한 것일 수도 있습니다.

 

 

참고: https://velog.io/@gillog/DB-11-1N-NM-%EA%B4%80%EA%B3%84