본문 바로가기
정보처리 기능사

기본 SQL

by 승환파크 2023. 11. 17.

1) DDL

1) DDL(데이터 정의어)의 개념

1) DDL 정의

DDL(Data Definition Language)은 '데이터를 정의하는 언어'로서, 보다 엄밀하게 말하면 '데이터를 담는 그릇을 정의하는 언어'이며 이러한 그릇을 DBMS에서는 '오브젝트'라고 한다.

DDL을 통해 정의할 수 있는 대상, 오브젝트의 유형은 아래와 같다.

DDL 대상 설명
스키마(Schema) DBMS 특성과 구현 환경을 감안한 데이터 구조
직관적으로 하나의 데이터베이스로 이해 가능
도메인(Domain) 속성의 데이터 타입과 크기, 제약조건 등을 저장한 정보
속성이 가질 수 있는 값의 범위로 이해 가능
테이블(Table) 데이터 저장 공간
뷰(View) 하나 이상의 물리 테이블에서 유도되는 가상의 논리 테이블
인덱스(Index) 검색을 빠르게 하기 위한 데이터 구조

 

2) DDL 유형

구분 DDL 명령어 내용
생성 CREATE 데이터베이스 오브젝트 생성
변경 ALTER 데이터베이스 오브젝트 변경
삭제 DROP 데이터베이스 오브젝트 삭제
TRUNCATE 데이터베이스 오브젝트 내용 삭제, 테이블 구조는 유지(내부 데이터 삭제)

 

2) DDL(데이터 정의어)의 활용

1) 테이블 생성

구분 문법
신규 생성 CREATE TABLE 테이블 이름(
열이름 데이터_타입 제약조건
...
)
다른 테이블 정보를 이용한 테이블 생성 CREATE TABLE 테이블이름 AS SELECT 문

 

2) 테이블 변경

구분 문법
열 추가 ALTER TABLE 테이블이름 ADD 열이름 데이터_타입 제약조건
열 데이터 타입 변경 ALTER TABLE 테이블이름 MODIFY 열이름 데이터_타입
열 삭제 ALTER TABLE 테이블이름 DROP 열이름

 

3) 테이블 삭제, 내용 삭제, 이름 변경

구분 문법
테이블 삭제 DROP TABLE 테이블이름
테이블 내용 삭제 TURNCATE TABLE 테이블이름
테이블 이름 변경 RENAME TABLE 이전_테이블이름 TO 새로운_테이블이름
ALTER TABLE 이전_테이블이름 RENAME 새로운_테이블이름

 

4) 데이터 타입

유형 정의
CHAR 고정 길이 문자열 데이터 타입
VARCHAR 가변 길이 문자열 데이터 타입
INT 정수형 데이터 타입
FLOAT 실수형 데이터 타입
DATE 날짜 데이터 타입

 

2) 제약조건 적용

1) 제약조건 유형

제약조건 설명
PRIMARY KEY 테이블의 기본키를 정의함
기본으로 NOT NULL, UNIQUE 제약이 포함됨
FOREIGN KEY 외래키를 정의함
참조 대상을 테이블 이름(열이름)으로 명시해야 함
참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정 가능
- NO ACTION, SET DEFAULT, SETL NULL, CASCADE, RESTRICT
UNIQUE 테이블 내에서 열은 유일한 값을 가져야 함
테이블 내에서 동일한 값을 가져서는 안 되는 항목에 지정함
NOT NULL 테이블 내에서 관련 열의 값은 NULL일 수 없음
필수 입력 항목에 대해 제약조건으로 설정함
CHECK 개발자가 정의하는 제약조건
상황에 따라 다양한 조건 설정 가능

 

2) 제약조건 변경

내용 SQL 명령문
제약조건 추가 ALTER TABLE 테이블이름
ADD [CONSTRAINT 제약조건이름] 제약조건(열이름)
제약조건 삭제 ALTER TABLE '주문테이블' DROP FOREIGN KEY [제약조건이름];
제약조건 활성화 ALTER TABLE 테이블이름
ENABLE CONSTRAINT 제약조건이름
제약조건 비활성화 ALTER TABLE 테이블이름
DISABLE CONSTRAINT 제약조건이름

 

2) DML

1) DML(데이터 조작어)의 개념

1) DML 정의

데이터를 조작하는 명령어를 DML(Data Manipulation Language)이라고 한다.

여기에서 조작이란, 데이터 관점에서 생명 주기르 제어하는 것을 의미한다.

 

2) DML 유형

구분 DML 명령어 내용
데이터 조회 SELECT 테이블의 내용을 조회
데이터 삭제 DELETE 테이블의 내용을 삭제
데이터 변경 UPDATE 테이블의 내용을 수정
데이터 추가 INSERT 테이블의 내용을 추가

 

2) DML(데이터 조작어)의 활용

1) 데이터 조회

데이터의 내용을 조회할 때 사용하는 명령어이다.

가장 많이 사용되는 SQL 명령어로서, 다른 DML 명령어와 같이 사용되어 SQL의 활용을 풍부하게한다.

SELECT 명령어의 기본 형식은 아래와 같다.

SELECT [OPTION] columns FROM table [WHERE 절];

 

SELECT 문에서 사용되는 요소

요소 요소값 내용
OPTION ALL 중복을 포함한 조회 결과 출력
DISTINCT 중복을 제외한 조회 결과 출력
columns 컬럼명 목록 SELECT를 통해 조회할 컬럼명 지정
와일드카드 모두 또느 전체를 의미하는 '*'

 

SELECT 문에서 쓰이는 기타 SQL 명령어들

명령어 설명
DISTINCT 중복된 값을 한 번만 검색되도록 한다.
BETWEEN A AND B, 즉 A값과 B값 사이를 만족하는 부분을 검색한다.
IN OR 과 동일하게 참조하는 부분 중 하나라도 만족하는 부분을 검색한다.
ORDER BY 오름차순은 ASC, 내림차순은 DESC를 사용하여 정렬한다. (아무것도 쓰지 않으면 기본 ASC 적용)
HAVING GROUP BY에 의해 그룹으로 분류된 부분에서 WHERE 대신 조건절을 대신한다.

 

2) 데이터 삭제

레코드를 삭제할 때 다음과 같은 형태의 DELETE 명령문을 사용해야 한다.

조건절 없이 DELETE를 사용하는 경우, 테이블 전체가 한 번에 삭제된다.

DELETE FROM table [WHERE 절];

 

3) 데이터 변경

데이터를 변경, 수정할 때 다음과 같은 형태의 UPDATE 명령문을 사용한다.

UPDATE 명령문은 보통 WHERE 절을 통해 어떤 조건이 만족할 경우에만 특정 컬럼의 값을 수정하는 용도로 많이 사용된다.

UPDATE table SET column1 = value1, column2 = value2, ... [WHERE 절];

 

4) 데이터 추가

데이터를 삽입하기 위한 명령어로 다음과 같이 두 가지 형태의 명령문 형식을 제공한다.

이 때 데이터 삽입 결과로 하나의 레코드가 추가된다. 따라서 삽입에 사용되는 정보는 하나의 레코드를 충분히 묘사해야 한다.

# 방법1
INSERT INTO table_name (column1, column2, ..) VALUES (value1, value2, ...);

# 방법2
INSERT INTO table_nale VALUES (value1, value2, ...);

 

3) DCL

1) DCL(데이터 제어어)의 개념

1) DCL 정의

데이터베이스에서 데이터 이외의 오브젝트에 대해 조작할 필요가 있다. 이 때 사용하는 SQL 명령을 DCL(Data Control Language)이라고 한다.

DCL의 조작 대상, 오브젝트 유형은 아래와 같다.

오브젝트 목적 내용
사용자 권한 접근 통제 사용자를 등록하고, 사용자에게 특정 데이터베이스를 사용할 수 있는 권리를 부여하는 작업
트랜잭션 안전한 거래 보장 동시에 다수의 작업을 독립적으로 안전하게 처리하기 위한 상호작용 단위

 

2) DCL 유형

유형 명령어 용도
DCL GRANT 데이터베이스 사용자 권한 부여
REVOKE 데이터베이스 사용자 권한 회수
TCL COMMIT 트랜잭션 확정
ROLLBACK 트랜잭션 취소
CHECKPOINT 복귀지점 설정

 

2) DCL(데이터 제어어)의 활용

1) 사용자 권한 부여

권한은 시스템 권한과 객체 권한으로 분류된다. 각 권한을 부여하기 위한 명령어 사용법은 아래와 같다.

권한 명령어 문법
시스템 권한 부여 GRANT 권한1, 권한2 TO 사용자계정
객체 권한 부여 GRANT 권한1, 권한2 ON 객체명 TO 사용자계정

 

시스템 권한과 객체 권한의 종류는 아래와 같다.

구분 권한 내용
시스템 권한 CREATE USER 계정 생성 권한
DROP USER 계정 삭제 권한
DROP ANY TABLE 테이블 삭제 권한
CREATE SESSION 데이터베이스 접속 권한
CREAT TABLE 테이블 생성 권한
CREATE VIEW 뷰 생성 권한
CREATE SEQUENCE 시퀀스 생성 권한
CREATE PROCEDURE 함수 생성 권한
객체 권한 ALTER 테이블 변경 권한
INSERT 데이터 조작 권한
DELETE
SELECT
UPDATE
EXECUTE ON PROCEDURE 실행 권한

 

2) 사용자 권한 회수

GRANT에 대응하는 권한 회수 명령언 REVOKE이다.

권한 유형별 대응하는 명령어 구조는 다음과 같다.

권한 명령어 문법
시스템 권한 회수 REVOKE 권한1, 권한2 FROM 사용자계정
객체 권한 회수 REVOKE 권한1, 권한2 ON 객체명 FROM 사용자계정

 

3) 접근 통제

1) 접근 통제 개념

데이터베이스의 보안을 구현하는 방법으로 접근 통제 방법을 사용한다.

접근 통제란 보안 정책에 따라 접근 객체(시스템 자원, 통신 자원 등)에 대한 접근 주체(사용자, 프로세스 등)의 접근 권한 확인 및 이를 기반으로 한 접근 제어를 통해 자원에 대한 비인가된 사용을 방지하는 정보 보호 기능을 의미한다.

 

2) 접근 통제 유형

유형 정의 의미
임의 접근 통제
(DAC : Discretionary Access Control)
시스템 객체에 대한 접근을 사용자 개인 또는 그룹의 식별자를 기반으로 제한하는 방법
임의적이라는 말은 어떤 종류의 접근 권한을 갖는 사용자는 다른 사용자에게 자신의 판단에 의해서 권한을 줄 수 있다는 것
주체와 객체의 신분 및 임의적 접근 통제 규칙에 기초하여 객체에 대한 주체의 접근을 통제하는 기능
통제 권한이 주체에 있음
주체가 임의적으로 접근 통제 권한으 배분하여 제어할 수 있음
강제 접근 통제
(MAC : Mandatory  Access Control)
정보 시스템 내에서 어떤 주체가 특정 객체에 접근하려 할 때 양쪽의 보안 레이블(Security Label)에 기초하여 높은 보안 수준을 요구하는 정보(객체)가 낮은 보안 수준의 주체에게 노출되지 않도록 접근을 제한하는 통제 방법 통제 권한이 제3자에게 있음
주체는 접근 통제 권한과 무관함

 

3) 접근 통제와 DCL의 관계

강제 접근 통제의 경우, 제3자의 종류에 따라 보다 세분화 된 정책이 존재한다.

접근 통제 정책의 두 가지 가운데 데이터베이스 관리 시스템(DBMS)에서 채택한 접근 통제 정책은 임의 접근 통제, DAC 방식이다.

데이터베이스 관리, 특히 접근 통제 용도로 SQL에서 사용하는 명령어가 바로 DCL(Data Control Language)이다.

 

4) 데이터 사전 검색

1) 데이터 사전의 개념

데이터 사전(Data Dictionary)에는 데이터베이스의 데이털르 제외한 모든 정보가 있다.

데이터를 제외한(데이터를 구성하는) 모든 정보라는 것은 데이터의 데이터를 의미한다. 따라서 데이터 사전은 메타 데이터(Meta Data)로 구성되어 있다고 할 수 있다.

데이터 사전의 내용을 변경하는 권한은 시스템이 가지며, 사용자에게는 읽기 전용 테이블 형태로 제공되므로 단순 조회만 가능하다.

 

2) 데이터 사전의 내용

데이터 사전 안에 존재하는 메타 데이터의 유형은 다음과 같다.

- 사용자 정보(아이디, 패스워드 및 권한 등)

- 데이터베이스 객체 정보(테이블, 뷰, 인덱스 등)

- 무결성 제약 정보

- 함수, 프로시저 및 트리거 등

데이터 사전 내용이 메타 데이터라는 것은 모든 DBMS 제품에 공통이지마 데이터 사전을 구현하는 방법, 관리하는 방법 등의 차이로 메타 데이터의 구체적인 내용은 제품마다 다르다.

 

3) 데이터 사전의 용도

사용자에게 데이터 사전은 단순 조회의 대상일 뿐이다.

데이터베이스 엔진을 이루는 컴파일러, 옵티마이저 등과 같은 구성요소에게 데이터 사전은 작업을 수행하는데 필요한 참조 정보일 뿐만 아니라 작업의 대상이기도 하다.

'정보처리 기능사' 카테고리의 다른 글

고급 SQL  (1) 2023.11.17
데이터베이스  (0) 2023.11.16
네트워크  (0) 2023.11.16
운영 체제  (1) 2023.11.16
애플리케이션 결함 조치  (0) 2023.11.01