컴공생의 발자취

[정보처리기사 실기] 데이터베이스 쿼리 정리 본문

🎫 자격증/정보처리기사

[정보처리기사 실기] 데이터베이스 쿼리 정리

MNY 2023. 10. 8. 23:43
728x90
반응형

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

DDL의 대상 : 도스테뷰인

  • 메인
    • 하나의 속성이 취할 수 있는 동일한 유형의 원자값들의 집합
    • 특정 속성에서 사용할 데이터의 범위를 사용자가 정의하는 사용자 정의 데이터 타입
  • 키마
    • 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 것
  • 이블
    • 하나 이상의 기본 테이블로부터 유도되는 이름을 갖는 가상 테이블
  • 덱스
    • 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성되는 데이터 구조

DDL의 종류 : 크알드트

  • CREATE : 도메인, 스키마, 테이블, 인덱스, 뷰 등을 정의한다.
/* 도메인 생성 */
CREATE DOMAIN 도메인명 [AS] 데이터_타입
	[DEFAULT 기본값]
    [CONSTRAING 제약조건명 CHECK (범위값)];

/* 스키마 생성 */
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;

/* 테이블 생성 */
CREATE TABLE 테이블명
	(속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ...
    [, PRIMARY KEY(기본키_속성명, ...)]
    [, UNIQUE(대체키_속성명, ...), ]
    [, FOREIGN KEY(외래키_속성명, ...)]
    	[REFERENCES 참조테이블(기본키_속성명, ...)]
        [ON DELETE 옵션]
        [ON UPDATE 옵션]
    [, CONSTRAINT 제약조건명] [CHECK(조건식)]);
    
/* 뷰 생성 */
CREATE VIEW 뷰명[속성명, ...]
AS SELECT문;

/* 인덱스 생성 */
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC], ...)
[CLUSTER];
  • ALTER : 테이블에 대한 정의를 변경한다.
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값']; /* 새로운 속성(열) 추가 */
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값']; /* 특정 속성의 Default 값 변경 */
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE]; /* 특정 속성 삭제 */
  • DROP : 도메인, 스키마, 기본 테이블, 뷰 테이블, 인덱스, 계약 조건 등을 제거한다. 
    • CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거한다.
    • RESTRICT : 다른 개체가 제거할 요소를 참조 중 일때는 제거를 취소한다.
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];	/* 도메인 제거 */
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];	/* 스키마 제거 */
DROP TABLE 테이블명 [CASCADE | RESTRICT];	/* 테이블 제거 */
DROP VIEW 뷰명 [CASCADE | RESTRICT];		/* 뷰 제거 */
DROP INDEX 인덱스명 [CASCADE | RESTRICT];	/* 인덱스 제거 */
DROP CONSTRAINT 제약조건명;			/* 제약조건 제거 */
  • TURNCATE : 테이블에서 모든 행을 삭제한다.
TRUNCATE [TABLE] 테이블명, ...;

 

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

DCL의 종류 : 커롤그래

  • COMMIT : 트랜잭션 처리가 정상적으로 완료된 후, 트랜잭션이 수행한 내용을 데이터베이스에 반영한다.
  • ROLLBACK : 변경되었으나 아직 COMMIT 되지 않은 모든 내용을 취소하고 데이터베이스를 이전 상태로 되돌린다.
  • GRANT : 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여한다.
    • 명령문 (그온투) : GRANT 권한 ON 테이블 TO 사용자
  • REVOKE : 데이터베이스 관리자가 데이터베이스 사용자에게 부여한 권한을 취소한다.
    • 명령문 (리온프) : REVOKE 권한 ON 테이블 FROM 사용자

 

TCL(Transation Control Language)

  • 트랜잭션을 제어하는 용도로 사용된다.

TCL의 종류 : 커롤세(체)

  • COMMIT
  • ROLLBACK
  • SAVEPOINT/CHECKPOINT : 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정한다.

 

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

DML의 종류 : 세인업데

  • SELECT : 테이블에서 튜플을 검색한다.
    • 명령문 (셀프 웨 구해오) ★★★★ : SELECT / FROM / WHERE / GROUP BY / HAVING / ORDER BY
SELECT [PREDICATE][테이블명].속성명 [AS 별칭], [테이블명].속성명, ...
	, [그룹함수(속성명) [AS 별칭]]
    , [WINDOW 함수 OVER (PARTITION BY 속성명1, 속성명2, ...
    			ORDER BY 속성명3, 속성명4, ...)]
FROM 테이블명, 테이블명, ...
[WHERE 조건]
[GROUP BY 속성명, 속성명, ... ]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
  • INSERT : 기본 테이블에 새로운 튜플을 삽입할 때 사용한다.
INSERT INTO 테이블명([속성명1, 속성명2, ...]) VALUES (데이터1, 데이터2, ...);
  • UPDATE : 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)의 내용을 변경한다.
UPDATE 테이블명
SET 속성명 = 데이터, ...
[WHERE 조건];
  • DELETE 
    • 기본 테이블에 있는 튜플 중에서 특정 튜플(행)을 삭제한다.
    • DELETE 문은 테이블 구조나 테이블 자체는 그대로 남겨 두고, 테이블 내의 튜플들만 삭제한다.
    • 테이블을 완전히 제거하려면 DROP 문을 사용해야 한다.
DELETE
FROM 테이블명
[WHERE 조건];
  • 서브쿼리(Sub-Query) : SQL문 안에 포함된 또 다른 SQL문
/* FROM절 서브쿼리 */
SELECT MAX(가격)
FROM 도서가격 A, (SELECT 책번호 FROM 도서 WHERE 책명='자료구조') B
WHERE A.책번호 = B.책번호;

/* WHERE절 서브쿼리 */
SELECT MAX(가격)
FROM 도서가격
WHERE 책번호 IN (SELECT 책번호 FROM 도서 WHERE 책명='자료구조');

 

JOIN ★★★

  • 2개의 릴레이션에서 연관된 튜플들을 결합하여 하나의 새로운 릴레이션을 반환한다.
  • 일반적으로 FROM 절에 기술하지만, 릴레이션이 사용되는 곳 어디에나 사용할 수 있다.

INNER JOIN

| EQUI JOIN

  • JOIN 대상 테이블에서 공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하려 결과를 생성하는 JOIN 방법
  • EQUI JOIN에서 JOIN 조건이 '='일 때 동일한 속성이 2번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 NATUAL JOIN이라고 한다.
  • EQUI JOIN 에서 연결 고리가 되는 공통 속성 JOIN 속성이라고 한다.

 

  • WHERE 절을 이용한 표기 방식
SELECT [테이블명1].속성명, [테이블명2].속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;
  • NATURAL JOIN 절을 이용한 표기 방식
SELECT [테이블명1].속성명, [테이블명2].속성명, ...
FROM 테이블명1 NATURAL JOIN 테이블명2;
  • JOIN ~ USING 절을 이용한 표기 방식
SELECT [테이블명1].속성명, [테이블명2].속성명, ...
FROM 테이블명1 JOIN 테이블명2 USING (속성명);

 

| NON-EQUI JOIN

  • JOIN 조건에 '=' 조건이 아닌 나머지 비교 연산자, 즉 >, <, <>, >=, <= 연산자를 사용하는 JOIN 방법
SELECT [테이블명1].속성명, [테이블명2].속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE (NON-EQUI JOIN 조건);

 

OUTER JOIN

  • 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 JOIN 방법

| LEFT OUTER JOIN

  • INNER JOIN의 결과를 구한 후, 우측 릴레이션의 어떤 튜플과도 맞지 않는 좌측의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다.
SELECT [테이블명1].속성명, [테이블명2].속성명, ...
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

| RIGHT OUTER JOIN

  • INNTER JOIN의 결과를 구한 후, 좌측 릴레이션의 어떤 튜플과도 맞지 않는 우측의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다.
SELECT [테이블명1].속성명, [테이블명2].속성명, ...
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

| FULL OUTER JOIN

  • LEFT OUTER JOIN RIGHT OUTER JOIN을 합쳐 높은 것
  • INNER JOIN의 결과를 구한 후, 좌측 릴레이션의 튜플들에 대해 우측 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다.
    • 그리고 유사하게 우측 릴레이션의 튜플들에 대해 좌측 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다.
SELECT [테이블명1].속성명, [테이블2].속성명, ...
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

 

제어문 ★★★★

IF문

  • 조건에 따라 실행할 문장이 달라지는 제어문

| 형식1 : 조건이 참일 때만 실행한다.

IF 조건 THEN
	실행할 문장1;
    실행할 문장2;
    	...
END IF;

| 형식2 : 조건이 참일 때와 거짓일 때 실행할 문장이 다르다.

IF 조건 THEN
	실행할 문장1;
ELSE
	실행할 문장2;
END IF;

LOOP문

  • 조건에 따라 실행할 문장을 반복 수행하는 제어문
LOOP
	실행할 문장;
    EXIT WHEN 조건;
END LOOP;
728x90
반응형