Today I Learned (TIL)/SQL

[TIL] SQL 챌린지 - 2회차

신짜린 2024. 7. 22. 11:14

1. KEY

- 관계형 데이터베이스 KEY

 1) 식별자: 데이터베이스 설계 단계에서 사용하는 용어로 각 행을 고유하게 식별할 수 있는 모든 속성 혹은 속성 조합을 나타냄

 2) 기본키: 각 행을 고유하게 식별하는 데 사용되는 선택된 식별자로 테이블 간의 관계(JOIN)를 기술하기 위해 사용

구분 설명 특징
기본 키(Primary Key) 각 행을 고유하게 식별하게 사용되는 하나 이상의 컬럼 한 테이블에는 하나의 키만 존재
NULL 값을 가질 수 없음
각 행에 고유한 값
외래 키(Foreign Key) 한 테이블의 컬럼이 다른 키의 기본키를 참조하는데 사용되는 컬럼 부모 테이블의 기본 키와 동일
제약조건을 통해 참조 무결성을 유지할 수 있음

 

2. 테이블 생성하기 (DDL)

 데이블을 생성할 때 컬럼별로 제약조건을 설정할 수 있다. 제약조건은 데이터의 엄격한 관리를 위해 정해둔 규칙으로 데이터의 무결성(결함 없음)을 보장하는데 도움이 되는 시스템이다.

-- 테이블 생성하기
CREATE TABLE {테이블명} (
{컬럼1} {자료형} PRIMARY KEY  #일반적으로PK가 첫 번째옴
{컬럼2} {자료형}
{제약조건} -- 서로 관계를 가지고 있는 RDB 특성상 제약조건이 필요할때가 있음
);
제약조건 종류(이름) 설명
UNIQUE 해당 열에서 중복된 값 입력 불가
NOT NULL NULL 값 허용 안 됨
PRIMARY KEY 각 행의 고유한 식별자이면서 NULL 존재 불가
(UNIQUE + NOT NULL)
FOREIGN KEY 한 데이블에서 다른 테이블의 컬럼 연결
DEFAULT 값을 넣지 않을 경우 기본 값
CHECK 값이 특정 범위 안에 들어오도록 설정
(CHECK (AGE >= 10))
AUTO_INCREMENT 행이 추가될 때마다 자동으로 고유한 값을 가지도록 설정

 

3. DML, DDL 문법 정리

-- 데이블 데이터 삽입하기
INSERT INTO {테이블명} ({컬럼1}, {컬럼2}) VALUES
(데이터, 데이터),
(데이터, 데이터)
...
(데이터, 데이터)
-- 데이터 수정하기
UPDATE {테이블명}
SET {업데이트할 컬럼} = {값}
WHERE {조건식} -- where 조건문 없다면 모든 데이터 수정
-- 컬럼 추가
ALTER TABLE {테이블명}
ADD COLUMN {컬럼명} {자료형};
-----------------------------------------------------------------------------------------------
-- 컬럼 삭제
ALTER TABLE {테이블명}
DROP COLUMN {컬럼명};
-----------------------------------------------------------------------------------------------
-- 외래 키 추가
ALTER TABLE {테이블명}
ADD CONSTRAINT {규칙별명}
FOREIGN KEY ({컬럼1}) REFERENCES {테이블}({컬럼2});
--  데이터 삭제하기
DELETE FROM {테이블명} -- DELETE는 특정 행을 삭제, 구조와 인덱스는 유지
WHERE {조건식}; -- where 조건문 없으면 모든 데이터 삭제
-----------------------------------------------------------------------------------------------
-- 모든 행 삭제
TRUNCATE TABLE employees; -- TRUNCATE는 모든 데이터를 삭제하나 구조와 인덱스는 유지
-----------------------------------------------------------------------------------------------
-- 테이블 삭제
DROP TABLE employees; -- DROP는 테이블 자체를 삭제하여 구조와 인덱스 모두 날림
-- 인덱스 생성하기
CREATE INDEX {인덱스 별명} ON {테이블명} ({컬럼명});
-----------------------------------------------------------------------------------------------
-- 인덱스 삭제하기
DROP INDEX {인덱스 별명} ON {컬럼명};

 

4. 테이블 연결하기

 외래키와 참조를 설정하는 이유는 데이터 무결성을 위해서이다. 관계형 데이터베이스는 서로 밀접하게 연관되어있으므로 외래키와 같이 테이블을 연결하는 중요한 정보는 일관성 있게 처리하는 것이 매우 중요하다.

-- JOBS 테이블의 JOB_ID: AD_VP 를 VP로 바꿔보자
UPDATE JOBS
SET JOB_ID = 'VP'
WHERE job_id = 'AD_VP';

 

5. CTE와 VIEW

 임시테이블 생성을 해야하는데 테이블 생성 권한이 없거나 용량 상승으로 인해 진행하지 못할 때 사용한다.

- CTE Expression

 서브쿼리를 만들 듯 일시적으로 사용할 수 있는 결과이다. WITH 구문으로 정의한다.

WITH {TEMP1} AS
( {쿼리내용})
SELET * FROM {TEMP1};

 

- VIEW

 가상 테이블의 개념으로 데이터베이스에 실제 데이터를 저장하는 것이 아닌 실시간 참조하는 것을 말한다.

-- VIEW 생성하기
CREATE VIEW {뷰이름} AS
SELET * FROM {테이블명};
-----------------------------------------------------------------------------------------------
-- VIEW 삭제하기
DROP VIEW {뷰 이름};

'Today I Learned (TIL) > SQL' 카테고리의 다른 글

[TIL] SQL 챌린지 - 4회차  (0) 2024.07.24
[TIL] SQL 챌린지 - 3회차  (0) 2024.07.22
[TIL] SQL 베이직 - 2회차  (0) 2024.07.18
[TIL] DA를 위한 데이터베이스 완전 정복  (0) 2024.07.16
[TIL] SQL 챌린지 - 1회차  (0) 2024.07.15