SQL 혹은 Structured Query Language 은 데이터베이스 언어의 기준으로 주로 관계형 데이터베이스에서 사용이 됩니다.
데이터가 구조화된 테이블을 사용하는 데이터베이스에서 활용 가능합니다. ex) MySQL, Oracle, SQLite, PostgreSQL 등
데이터 구조가 고정되어 있지 않은 데이터베이스들로서, 관계형 데이터베이스와는 달리 테이블을 사용하지 않고 다른 형태로 데이터를 저장합니다. ex) MongoDB
DDL 은 데이터를 정의할 때 사용되는 언어를 가리킵니다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용됩니다.
ex) CREATE(테이블 생성), DROP(테이블을 제거)
DML 은 데이터베이스에 데이터를 저장할 때 사용되는 언어를 가리킵니다.
ex) INSERT(새로운 레코드를 추가), DELETE(데이터 삭제), UPDATE(변경)
DCL 은 데이터베이스에 대한 접근 권한과 관련된 문법으로, 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정/없애는 역할이죠.
ex) GRANT(권한을 줌), REVOKE(권한을 가져감)
DQL 은 정해진 스키마 내에서 쿼리를 할 수 있는 언어입니다. DQL 을 DML 의 일부분으로 말하곤 합니다.
ex) SELECT
TCL 은 DML 을 거친 데이터 변경사항을 수정할 수 있습니다.
ex) COMMIT(DML 이 작업한 내용을 데이터베이스에 커밋), ROLLBACK(커밋했던 내용을 다시 롤백하는 문법
쿼리 (query) 의 뜻 - '질의문'
관계는 두 엔티티가 서로 관련이 있을 때를 말하는데, 1:1, 1:N, N:M 관계를 맺을 수 있습니다.
엔티티(Entity) : DataBase에 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것을 뜻합니다
테이블 간 관계
테이블 자체 관계
상대 레코드
와 반드시 단 하나의 관계를 가지는 것을 말합니다.
테이블의 레코드 하나당 여러 개의 레코드와 연결되어 있는 경우입니다.
실제 DB를 설계할 때 자주 쓰이는 방식으로 많이 쓰입니다.
여러 명의 자식(N)의 입장에서 한 쌍의 부모(1)중 어떤 부모에 속해 있는지 표현해야하므로 부모 테이블의PK를 자식 테이블에FK로 집어 넣어 관계를 표현합니다.즉 부모 테이블(1)에서는 내 자식들이 누구인지 정보를 넣을 필요가 없고, 자식 테이블(N)에서만 각각의 자식들이 자신의 부모 정보(FK)를 넣음 으로써 관계를 표현할 수 있습니다.
PK(Primary Key) : 각 엔티티를 식별할 수 있는 대표키, 테이블에서 중복되지 않는(Unique) 값, Null일 수 없습니다.
FK(Foreign Key): 다른 테이블의 기본키를 참조, 모든 필드는 참조하는 기본키와 동일한 도메인(값의 종류&범위)을 갖습니다.
모든 필드 값은 참조하는 기본키와 동일하거나 null 일 수 있습니다.
여러 개의 레코드가 여러 개의 레코드를 가지는 관계입니다. 서로가 서로를 1:N관계로 보고 있다고 보면 됩니다.
N:M 관계는 서로가 서로를 1:N 관계, 1:M 관계로 갖고 있기 때문에, 서로의 PK를 자신의 외래키 컬럼으로 갖고 있으면 됩니다.
일반적으로 N:M 관계는 '조인 테이블'을 생성(두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블)해서 관리합니다.
때로는 테이블 내에서도 관계가 필요할 때가 있습니다. 예를 들어 추천인이 누구인지 파악하기 위한 목적, 혹은 조직 내에 상하 관계 등을 표현하기 위한 것일 수도 있습니다.