728x90
반응형
SQL - DDL
DDL(Data Define Language, 데이터 정의어)
- DDL은 DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어
- 번역한 결과가 데이터 사전(Data Dictionary)이라는 특별한 파일에 여러 개의 테이블로 저장
- DDL의 3가지 유형
- CREATE: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의함
- ALTER: TABLE에 대한 정의를 변경하는 데 사용함
- DROP: SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제함
CREATE SCHEMA
- CREATE SCHEMA는 스키마를 정의하는 명령문
- 표기형식 → CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;
CREATE DOMAIN
- CREATE DOMAIN은 도메인을 정의하는 명령문
- 표기형식
CREATE DOMAIN 도메인명 [AS] 데이터타입
[DEFAULT 기본값]
[CONSTRAINT 제약조건명 CHECK (범위값)];
- 데이터타입: SQL에서 지원하는 데이터타입
- 기본값: 데이터를 입력하지 않았을 때 자동으로 입력되는 값
CREATE TABLE
- CREATE TABLE은 테이블을 정의하는 명령문
- 표기형식
CREATE TABLE 테이블명 (
속성명 데이터타입 [DEFAULT 기본값] [NOT NULL] [UNIQUE],
...,
[CONSTRAINT 제약조건명] PRIMARY KEY (기본키속성명, ...),
[CONSTRAINT 제약조건명] UNIQUE (대체키속성명, ...),
[CONSTRAINT 제약조건명] FOREIGN KEY (외래키속성명, ...)
REFERENCES 참조테이블명 (기본키속성명)
[ON DELETE 옵션]
[ON UPDATE 옵션],
[CONSTRAINT 제약조건명] CHECK (조건식)
);
- 기본 테이블에 포함될 모든 속성에 대하여 속성명과 그 속성의 데이터 타입, 기본값, NOT NULL 여부를 지정
- PRIMARY KEY: 기본키로 사용할 속성을 지정
- UNIQUE: 대체키로 사용할 속성을 지정, 중복된 값을 가질 수 없음
- FOREIGN KEY ~ REFERENCES ~: 외래키로 사용할 속성을 지정
- ON DELETE 옵션: 참조 테이블의 튜플이 삭제되었을 때 기본 테이블에 취해야 할 사항을 지정
- ON UPDATE 옵션: 참조 테이블의 참조 속성 값이 변경되었을 때 기본 테이블에 취해야 할 사항을 지정
- CONSTRAINT: 제약 조건의 이름을 지정
- CHECK: 속성 값에 대한 제약 조건을 정의
CREATE VIEW
- CREATE VIEW는 뷰(View)를 정의하는 명령문
- 표기형식
CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT 문;
CREATE INDEX
- CREATE INDEX는 인덱스를 정의하는 명령문
- 표기형식
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명 (속성명 [ASC | DESC] [, 속성명 [ASC | DESC]]);
// [CLUSTER];
- UNIQUE
- 사용된 경우: 중복 값이 없는 속성으로 인덱스를 생성
- 생략된 경우: 중복 값을 허용하는 속성으로 인덱스를 생성
- 정렬 여부 지정
- ASC: 오름차순 정렬
- DESC: 내림차순 정렬
- 생략된 경우: 오름차순으로 정렬
- CLUSTER: 사용하면 인덱스가 클러스터드 인덱스로 설정됨
ALTER TABLE
- ALTER TALBE은 테이블에 대한 정의를 변경하는 명령문
- 표기형식
ALTER TABLE 테이블명 ADD 속성명 데이터타입 [DEFAULT '기본값'];
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];
- ADD: 새로운 속성(열)을 추가할 때 사용
- ALTER: 특정 속성의 Default 값을 변경할 때 사용
- DROP COLUMN: 특정 속성을 삭제할 때 사용
DROP
- DROP은 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 제약 조건 등을 제거하는 명령문
- 표기형식
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];
DROP TABLE 테이블명 [CASCADE | RESTRICT];
DROP VIEW 뷰명 [CASCADE | RESTRICT];
DROP INDEX 인덱스명 [CASCADE | RESTRICT];
DROP CONSTRAINT 제약조건명;
- CASCADE: 제거할 요소를 참조하는 다른 모든 개체를 함께 제거
- RESTRICT: 다른 개체가 제거할 요소를 참조중일 때는 제거를 취소
SQL-DCL
DCL(Data Control Language, 데이터 제어어)
- DCL은 데이터의 보안, 무결성, 회복 , 병행 제어 등을 정의하는 데 사용하는 언어
- DCL은 데이터베이스 관리자(DBA)가 데이터 관리를 목적으로 사용
- DCL의 종류
- COMMIT: 명령에 의해 수행된 결과를 실제 물리적 디스크에 저장하고, 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
- ROLLBACK: 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구함
- GRANT: 데이터베이스 사용자에게 사용 권한을 부여함
- REVOKE: 데이터베이스 사용자의 사용 권한을 취소함
GRANT / REVOKE
- 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여하거나 취소하기 위한 명령어
- GRANT: 권한 부여를 위한 명령어
- REVOKE: 권한 취소를 위한 명령어
- 사용자등급 지정 및 해제
GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호];
REVOKE 사용자등급 FROM 사용자_ID_리스트;
- 테이블 및 속성에 대한 권한 부여 및 취소
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION]
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
- 권한 종류: ALL, SELECT, INSERT, DELETE, UPDATE 등
- WITH GRANT OPTION: 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한을 부여함
- GRANT OPTION FOR: 다른 사용자에게 권한을 부여할 수 있는 권한을 취소함
- CASCADE: 권한 취소 시 권한을 부여받았던 사용자가 다른 사용자에게 부여한 권한도 연쇄적으로 취소함
SQL - DML
DML(Data Manipulation Language, 데이터 조작어)
- DML은 데이터베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사용되는 언어
- DML은 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공
- DML의 유형
- SELECT: 테이블에서 튜플을 검색함
- INSERT: 테이블에 새로운 튜플을 삽입함
- DELETE: 테이블에서 튜플을 삭제함
- UPDATE: 테이블에서 튜플의 내용을 갱신함
삽입문(INSERT INTO)
- 삽입문은 기본 테이블에 새로운 튜플을 삽입할 때 사용
- 일반 형식
INSERT INTO 테이블명 ([속성명1, 속성명2, ...])
VALUES (데이터1, 데이터2, ...);
- 대응하는 속성과 데이터는 개수와 데이터 유형이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있음
삭제문(DELETE FROM)
- 삭제문은 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제할 때 사용
- 일반형식
DELETE
FROM 테이블명
[WHERE 조건];
- 모든 레코드를 삭제할 때는 WHERE절을 생략
- 모든 레코드를 삭제하더라도 테이블 구조는 남아있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름
갱신문(UPDATE SET)
- 갱신문은 기본 테이블에 있는 튜플들 중에서 특정 튜플의 내용을 변경할 때 사용
- 일반 형식
UPDATE 테이블명
SET 속성명 = 데이터[, 속성면 = 데이터, ...]
[WHERE 조건];
DML - SELECT-1
일반 형식
SELECT [DISTINCT] 테이블명.열이름 [AS 별칭],
[그룹함수(열이름) AS 별칭],
[윈도우함수(열이름) OVER (PARTITION BY 열1 ORDER BY 열2) AS 별칭]
FROM 테이블명 [AS 별칭]
[JOIN 다른_테이블 ON 조인조건]
WHERE 조건(PREDICATE)
GROUP BY 열이름 [, 열이름 ...]
HAVING 조건(PREDICATE)
ORDER BY 열이름 [ASC|DESC] [, 열이름 ...]
- SELECT절
- DISTINCT: 중복된 튜플이 있으면 그 중 첫 번째 한 개만 표시함
- 속성명: 검색하여 불러올 속성(열) 또는 속성을 이용한 수식을 지정함
- AS: 속성이나 연산의 이름을 다른 이름으로 표시하기 위해 사용함
- FROM절: 검색할 데이터가 들어있는 테이블 이름을 기술함
- WHERE절
- 검색할 조건을 기술함
- Predicate는 WHERE, HAVING, ON 절 등에서 사용되는 조건 표현식으로 이 행(또는 그룹)을 결과에 포함시킬지 여부를 판단하는 데 사용됨
- ORDER BY절
- 데이터를 정렬하여 검색할 때 사용함
- 속성명: 정렬의 기준이 되는 속성명을 기술함
- [ASC|DESC]: 정렬 방식으로, 'ASC'는 오름차순, 'DESC'는 내림차순으로 정렬함(생략하면 오름차순으로 정렬).
조건 연산자
- 비교 연산자
연산자 | = | < > | > | < | >= | <= |
의미 | 같다 | 같지 않다 | 크다 | 작다 | 크거나 같다 | 작거나 같다 |
- 논리 연산자: NOT, AND, OR
- LIKE 연산자: 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색하기 위해 사용된다.
대표 문자 | % | _ | # |
의미 | 모든 문자를 대표함 | 문자 하나를 대표함 | 숫자 하나를 대표함 |
기본 검색
- SELECT 절에 원하는 속성을 지정하여 검색
조건 지정 검색
- WHERE 절에 조건을 지정하여 조건에 만족하는 튜플만 검색
정렬 검색
- ORDER BY 절에 특성 속성을 지정하여 지정된 속성으로 자료를 정렬하여 검색
하위 질의
- 하위 질의는 조건절에 주어진 질의를 먼저 수행하여 그 검색 결과를 조건절의 피연산자로 사용
복수 테이블 검색
- 여러 테이블을 대상으로 검색을 수행
DML - SELECT-2
일반 형식
SELECT [DISTINCT] 테이블명.열이름 [AS 별칭],
[그룹함수(열이름) AS 별칭],
[윈도우함수(열이름) OVER (PARTITION BY 열1 ORDER BY 열2) AS 별칭]
FROM 테이블명 [AS 별칭]
[JOIN 다른_테이블 ON 조인조건]
WHERE 조건(PREDICATE)
GROUP BY 열이름 [, 열이름 ...]
HAVING 조건(PREDICATE)
ORDER BY 열이름 [ASC|DESC] [, 열이름 ...]
- 그룹함수: GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 함수를 기술함
- WINDOW 함수: GROUP BY절을 이용하지 않고 속성의 값을 집계할 함수를 기술함
- PARTITION BY: WINDOW 함수의 적용 범위가 될 속성을 지정함
- ORDER BY: PARTITION 안에서 정렬 기준으로 사용할 속성을 지정함
- GROUP BYT절: 특정 속성을 기준으로 그룹화하여 검색할 때 사용. 일반적으로 GROUP BY절은 그룹 함수와 함께 사용됨
- HAVING절: GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정함
그룹 함수
- 그룹 함수는 GROUP BY절에 지정된 그룹별로 속성의 값을 집계할 때 사용
함수 | 기능 |
COUNT(속성명) | 그룹별 튜플 수를 구하는 함수 |
SUM(속성명) | 그룹별 합계를 구하는 함수 |
AVG(속성명) | 그룹별 평균을 구하는 함수 |
MAX(속성명) | 그룹별 최대값을 구하는 함수 |
MIN(속성명) | 그룹별 최소값을 구하는 함수 |
STDDEV(속성명) | 그룹별 표준편차는 구하는 함수 |
VARIANCE(속성명) | 그룹별 분산을 구하는 함수 |
ROLLUP(속성명, 속성명, ...) | - 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수 - 속성의 개수가 n개이면, n+1 레벨까지, 하위 레벨에서 상위 레벨 순으로 데이터가 집계됨 |
CUBE(속성명, 속성명, ...) | - ROLLUP과 유사한 형태지만 CUBE는 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구함 - 속성의 개수가 n개이면, 2^n 레벨까지, 상위 레벨에서 하위 레벨 순으로 데이터가 집계됨 |
WINDOW 함수
- WINDOW 함수는 GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성의 값을 집계
- 함수의 인수로 지정한 속성이 집계할 범위가 되는데, 이를 윈도우(WINDOW)라고 부름
- WINDOW 함수
- ROW_NUMBER(): 윈두우별로 각 레코드에 대한 일련번호를 반환
- RANK(): 윈도우별로 순위를 반환하며, 공동 순위를 반영
- DENSE_RANK(): 윈도우별로 순위를 반환하며, 공동 순위를 무시하고 순위를 부여
WINDOW 함수 이용 검색
- GROUP BY절을 이용하지 않고 함수의 인수로 지정한 속성을 범위로 하여 속성의 값을 집계
그룹 지정 검색
- GROUP BY절에 지정한 속성을 기준으로 자료를 그룹화하여 검색
집합 연산자를 이용한 통합 질의
- 집합 연산자를 사용하여 2개 이상의 테이블의 데이터를 하나로 통합
- 표기 형식
SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 ASC | DESC];
- 두 개의 SELECT 문에 기술한 속성들은 개수와 데이터 유형이 서로 동일해야 함
- 집합 연산자의 종류 (통합 질의의 종류)
집합 연산잡 | 설명 | 집합 종류 |
UNION | - 두 SELECT문의 조회 결과를 통합하여 모두 출력함 - 중복된 행은 한 번만 출력함 |
합집합 |
UNION ALL | - 두 SELECT문의 조회 결과를 통합하여 모두 출력함 - 중복된 행도 그대로 출력함 |
합집합 |
INTERSECT | 두 SELECT문의 조회 결과 중 공통된 행만 출력함 | 교집합 |
EXCEPT | 첫 번째 SELECT문의 조회 결과에서 두 번째 SELECT문의 조회 결과를 제외한 행을 출력함 | 차집합 |
728x90
반응형
'🎈 정보처리기사' 카테고리의 다른 글
[정보처리기사] 3장. 통합 구현 (1) | 2025.07.04 |
---|---|
[정보처리기사] 2장. 데이터 입・출력 구현(1) (0) | 2025.07.04 |
[정보처리기사] 1장. 요구사항 확인(2) (0) | 2025.07.02 |
[정보처리기사] 9장. 소프트웨어 개발 보안 구축 (0) | 2025.06.23 |
[정보처리기사] 1장. 요구사항 확인 (0) | 2025.06.19 |