Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 개발자스터디
- 개인공부
- 부트캠프
- AWS
- 운영체제
- Spring
- 컴퓨터구조론 5판
- 항해
- 프로그래머스
- 백준
- til
- 자바
- 스파르타코딩클럽
- 코딩테스트
- 99일지
- 국비
- 소프트웨어
- 개발자블로그
- 중심사회
- java
- wil
- 99클럽
- MySQL
- 스파르타내일배움캠프TIL
- 스파르타내일배움캠프
- 스파르타내일배움캠프WIL
- Flutter
- 내일배움캠프
- Python
- 컴퓨터개론
Archives
- Today
- Total
컴공생의 발자취
[정보처리기사 실기] 데이터베이스 쿼리 정리 본문
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
반응형
'🎫 자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 개념요약 - 04. 서버 프로그램 구현 (0) | 2024.04.22 |
---|---|
[정보처리기사 실기] 개념요약 - 03. 통합 구현 (0) | 2024.04.20 |
[정보처리기사 실기] 개념요약 - 02. 데이터 입출력 구현 (1) | 2024.04.20 |
[정보처리기사 실기] 개념요약 - 01. 요구사항 확인 (0) | 2024.04.17 |
[정보처리기사 실기] 데이터베이스 개념 정리 (1) | 2023.10.08 |