데이터베이스 개론 - 7. 데이터베이스 언어 SQL

김재혁·2023년 4월 1일

1. SQL을 이용한 데이터 정의

테이블 생성: CREATE TABLE

문법:

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);
  • NOT NULL => NULL 불가; ex) name NOT NULL, ...

  • DEFAULT => DEFAULT 값 정의; ex) age INT DEFAULT 0, ...

  • 외래키가 DELETE, UPDATE 되면 어떻게 할지 정하기
    - ON DELETE NO ACTION: 아무 액션도 없음.
    - ON DELETE CASCADE: 관련 투플 함께 삭제
    - ON DELETE SET NULL: 관련 투플 NULL로 변경
    - ON DELETE SET DEFAULT: 관련 투플 DEFAULT 값으로 변경
    UPDATE도 문법, 방법 동일; ex) ON UPDATE CASCADE

  • 무결성 제약 조건 정의: CHECK & CONSTRAINT

    • ex) CHECK (stock >= 0 AND stock <= 10000);
    • ex) CONSTRAINT CHK_CPY CHECK(company="HanBit");

테이블 변경: ALTER TABLE

  • 속성 추가: ADD <AttributeName> <Type>
    - ex) ALTER TABLE Customer ADD RegisterDate DATE;
  • 속성 삭제: DROP COLUMN <AttributeName>
    - ex) ALTER TABLE Customer DROP COLUMN RegisterDate;
  • 제약 조건 추가: ADD CONSTAINT
    - ex) ALTER TABLE Customer ADD CONSTATINT CHK_AGE CHECK(age >= 20);
  • 제약 조건 삭제: DROP CONSTRAINT
    - ex) ALTER TABLE Customer DROP CONSTRAINT CHK_AGE;

테이블 삭제: DROP TABLE

  • ex) DROP TABLE Customer;

2. SQL을 이용한 데이터 조작

검색: SELECT

SELECT column1, column2, ...
FROM table_name;

조건 검색: WHERE

SELECT column1, column2, ...
FROM table_name
WHERE name="Andrew";

산술식을 이용한 검색

SELECT column1, column2, ...
FROM table_name
WHERE age <= 20;

LIKE를 이용한 검색

SELECT column1, column2, ...
FROM table_name
WHERE name LIKE "A_%"; // Start with A and is at least 2 characters in length
  • % = Anything
  • _ = One letter

IS NULL, IS NOT NULL을 이용한 검색

SELECT column1, column2, ...
FROM table_name
WHERE column1 IS NOT NULL;

정렬 검색 (ORDER BY)

SELECT column1, column2, ...
FROM table_name
ORDER BY column1;

집계 함수 이용 검색 (SUM, AVERAGE, COUNT)

SELECT column1, column2, AVERAGE(column3) as Col3Avg...
FROM table_name;

그룹별 검색, 정렬 (GROUP BY)

SELECT column1, column2, ...
FROM table_name
GROUP BY column1;

JOIN을 활용한 검색

SELECT column1, column2, ...
FROM table_name
JOIN table_name2 ON table_name.column1=table_name2.column2;

Sub-query를 이용한 검색

SELECT column1, column2, ...
FROM (SELECT column1, column2, ...
FROM table_name2);

삽입: INSERT INTO

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

수정: UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

삭제: DELETE FROM

DELETE FROM table_name WHERE condition;

3. 뷰

뷰의 정의

뷰 (View): 다른 기본 테이블을 기반으로 만들어진 가상 테이블. 기본 테이블의 내용을 쉽게 검색할 수 있고, 기본 테이블의 변경 및 삭제는 제한적으로만 가능하다.

뷰의 생성

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

뷰의 특성

  • 뷰에서 변경을 시도할 때, 기본 테이블에서 어떤 튜플을 어떻게 변경해야할지 명확하게 제시하지 못하면 변경을 허용하지 않는다.
    - 기본키가 뷰에 포함되지 않은 경우
    • 집계 함수에 의해 계산된 Column이 뷰에 포함된 경우
    • GROUP BY, DISTINCT 키워드가 들어간 뷰
    • JOIN된 뷰

뷰의 장점

  • 길고 복잡한 WHERE절 없이도 쉽게 검색 가능
  • 데이터 보안 유지 가능 (기본 테이블 변경 제한)
  • 데이터 관리가 편함 (뷰 밖의 기본 테이블이 덜 노출됨)

뷰의 삭제

DROP VIEW view_name;
profile
NUS Computer Science

0개의 댓글