관리 메뉴

나구리의 개발공부기록

3장 - SQL응용 핵심 요약 본문

2024년도 시나공 필기 책 내용 정리


섹션19. SQL의 개념

 

1. DDL (Data Define Language, 데이터 정의어)

  • SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어
명령어 기능
CREATE SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함
ALTER TABLE에 대한 정의를 변경하는데 사용함
DROP SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 학제함

 

2. DML (Data Manipulation Language, 데이터 조작어)

 

  • 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용되는 언어
명령어 기능
SELECT 테이블에서 조건에 맞는 튜플을 검색함
INSERT 테이블에 새로운 튜플을 삽입함
DELETE 테이블에서 조건에 맞는 튜플을 삭제함
UPDATE 테이블에서 조건에 맞는 튜플의 내용을 변경함

 

3. DCL (Data Control Language, 데이터 제어어)

 

  • 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는데 사용되는 언어
명령어 기능
COMMIT 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터베이스 조작 작업이 정상적으로 완료 되었음을 관리자에게 알려줌
ROLLBACK 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함
GRANT 데이터베이스 사용자에게 사용 권한을 부여
REVOKE 데이터베이스 사용자의 사용 권한을 취고

섹션20. DDL

 

1. CREATE TABLE : 테이블을 정의하는 명령문

CREATE TABLE 테이블명
    (속성명 데이터_타입 [DEFUALT 기본값][NOT NULL], ...
    [, PRIMARY KEY(기본키_속성명, ...)]
    [, UNIQUE(대체키_속성명, ...)]
    [, FOREIGN KEY(외래키_속성명, ...)]
        [REFERENCES 참조테이블(기본키_속성명,...)]
        [ON DELETE 옵션]
        [ON UPDATE 옵션]
    [, CONSTRAINT 제약조건명][CHECK (조건식)]);
  • 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 데이터 타입, 기본값, NOT NULL 여부를 지정함
  • PRIMARY KEY : 기본키로 사용할 속성 또는 속성의 집합
  • CHECK : 속성 값에 대한 제약 조건을 정의

2. ALTER TABLE : 테이블에 대한 정의를 변경하는 명령문

ALTER TABLE 테이블명 ADD 속성명 데이터_타입[DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
  • ADD : 새로운 속성(열)을 추가
  • ALTER : 특정 속성의  Default 값을 변경할 때 사용
  • DROP COLUMN : 특정 속성을 삭제할 때 사용

3. DROP : 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문

DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASECADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
  • CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거, 즉 주 테이블의 데이터 제거 시 각 외래키와 관계를 맺고 있는 모든 데이터를 제거하는 참조 무결성 제약 조건을 설정하기 위해 사용됨
  • RESTRICT : 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소함

섹션21. DCL

 

1. GRANT / REVOKE

 

  • GRANT : 사용자 권한 부여
  • REVOKE : 사용자 권한 취소
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];

 

2. ROLLBACK

 

  • 아직 COMMIT 되지 않은 변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어

섹션22. DML

 

1. 삽입문 (INSERT INTO ~) : 기본 테이블에 새로운 튜플을 삽입할 때 사용

INSERT INTO 테이블명([속성명1, 속성명2, ...])
VALUES (데이터1, 데이터2, ...);
  • 대응하는 속성과 데이터는 개수과 데이터 유형이 일치해야 함
  • 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
  • SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있음

2. 삭제문 (DELETE FROM ~ ) : 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제할 때 사용

DELETE FROM 테이블명 [WHERE 조건];
  • 모든 레코드를 삭제할 때는 WHERE절을 생략
  • 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름

3. 갱신문(UPDATE ~ SET ~) : 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용

UPDATE 테이블명 SET 속성명 = 데이터[, 속성명 = 데이터, ...]
[WHERE 조건];

섹션23. DML - SELECT - 1

 

1. 일반 형식 및 기본 검색

SELECT [PREDICATE][테이블명.]속성명1, [테이블명.]속성명2, ...
FROM 테이블명,[테이블명,...];
  • SELECT절
    • PREDICATE : 불러올 튜플 수를 제한할 명령어를 기술

      • DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 한 개만 검색
    • 속성명 : 검색하여 불러올 속성(열) 및 수식들을 지정
  • FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술

2. 조건 연산자

 

  • 논리 연산자 : NOT, AND, OR
  • LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용

    • * 또는 % : 모든 문자를 대표
    • _  : 문자 하나를 대표
    • # : 숫자 하나를 대표

3. 조건 지정 검색

SELECT [테이블명.]속성명1, [테이블명.]속성명2,...]
FROM 테이블명[, 테이블명, ...]
[WHERE 조건];
  • WHERE 절에 조건을 지정하여 조건에 만족하는 튜플만 검색
  • NULL 값의 사용

    • 주소가 NULL인 자료만 검색, ex) WHERE 주소 IS NULL
    • 주소가 NULL이 자료만 검색, ex) WHERE 주소 IS NOT NULL
  • BETWEEN 연산자의 사용

    • 생일이 '01/09/69' 에서 '10/22/73' 사이인 자료만 검색, ex) WHERE 생일 BETWEEN #01/09/69# AND #10/22/73#;

4. 정렬 검색 : ORDER BY 절에 특정 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색

SELECT [테이블명.]속성명1, [테이블명.]속성명2,...]
FROM 테이블명[,테이블명,...]
[WHERE 조건]
[ORDER BY 속성명 [ASC | DESC]];
  • 속성명 : 정렬의 기준이 되는 속성명을 기술
  • [ASC|DESC] : ASC - 오름차순, DESC - 내림차순, 생략 시 오름차순으로 지정 됨

5. 하위 질의 : 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용

# 취미가 나이트댄스인 사원의 이름과 주소를 검색
SELECT 이름, 주소 FROM 사원
WHERE 이름 = (SELECT 이름 FROM 여가활동 WHERE 취미 = '나이트댄스');

섹션24. DML - SELECT - 2

 

1. 그룹 지정 : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화할 속성을 지정

SELECT [테이블명.]속성명, [테이블명.]속성명, ...
FROM 테이블명 [, 테이블명, ...]
[WHERE 조건]
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건];
  • GROUP BY절

    • 특정 속성을 기준으로 그룹화하여 검색할 때 사용
    • 일반적으로 GROUP BY 절은 그룹 합수와 함께 사용됨
  • HAVING절 : GROUP BY와 함께 사용되며 그룹에 대한 조건을 지정

2. 그룹 함수

 

  • COUNT(속성명) : 그룹별 튜플 수를 구하는 함수
  • SUM(속성명) : 그룹별 합계를 구하는 함수
  • AVG(속성명) : 그룹별 평균을 구하는 함수
  • MAX(속성명) : 그룹별 최대값을 구하는 함수
  • MIN(속성명) : 그룹별 최소값을 구하는 함수

3. 집합 연산자를 이용한 통합 질의

집합 연산자 설명 집합 종류
UNION 두 SELECT 문의 조회 결과를 통합하여 출력, 중복 행은 한번만 출력 합집합
UNION ALL 두 SELECT 문의 조회 결과를 통합하여 출력, 중복 행도 모두 출력
INTERSECT 두 SELECT 문의 조회 결과 중 공통된 행만 출력 교집합
EXCEPT 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력 차집합

섹션25. DML - JOIN

 

1. INNER JOIN

SELECT [테이블명1.]속성명, [테이블명2.]속성명,...
FROM 테이블명1, 테이블명2 ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;
/* <학생> 테이블과 <학과> 테이블에서 학과코드 값이 같은 튜플을 JOIN하여
학번, 이름, 학과코드, 학과명을 출력하는 SQL문을 작성 */
SELECT 학번, 이름, 학생.학과코드, 학과명
FROM 학번, 학과
WHERE 학번.학과코드 = 학생.학과코드;