컴퓨터공학 공부/SQLD (SQL 전문가 가이드)

SQLD 자격증 공부 SQL 기본-관계형 데이터베이스 개요, DDL (SQL 전문가 가이드)

개발학생 2024. 4. 23. 17:56
반응형

*본 게시물은 2013년도 SQL 전문가 가이드 교재(일명 '노랭이')를 참고하여 공부하고 정리한 게시물입니다

 

2과목 SQL 기본 및 활용: 제1장 SQL 기본

1. 관계형 데이터베이스(Relational Database) 개요

  • DB: 데이터를 일정한 형태로 저장해 놓은 것, DBMS를 이용하여 효율적인 데이터 관리와 데이터 손상 복구 가능
  • 관계형 DB(RDB; Relational Database)
    : 정규화를 통해 이상현상 및 중복 데이터 제거, 동시성 관리와 병행 제어를 통해 데이터 동시 조작 가능
  • 릴레이션에 데이터 저장, 집합 연산과 관계 연산 가능

1) SQL[Structured Query Language] 

  • RDB(관계형 DB)에서 사용하는 언어로, 데이터 조회 및 신규 데이터 입력/수정/삭제 기능 제공

(1) 테이블(Table)

  • RDB의 기본 단위
  • 데이터를 저장하는 객체
  • 칼럼-행의 2차원 구조를 가진 데이터의 저장 장소

*테이블 관련 용어

용어 설명
칼럼(세로,열/Column) 2차원 구조를 가진 테이블에서 세로 방향으로 이루어진 하나하나의 특정 속성
-> 더 이상 나눌 수 없는 특성
행(가로/Row) 2차원 구조를 가진 테이블에서 가로 방향으로 이루어진 연결된 데이터
필드(Field) 칼럼과 행이 겹치는 하나의 공간
정규화(Normalization) 테이블을 분할하여, 데이터의 불필요한 중복을 줄여 무결성을 확보하는 프로세스

*ERD(Entity Relationship Diagram)

  • 테이블 간 서로의 상관 관계를 그림으로 도식화한 것(E-R 다이어그램이라고 함)
  • 구성 요소: 엔터티(Entity), 관계(Relationship), 속성(Attribute)

(2) SQL 명령어의 종류

명령어의 종류 명령어 설명
데이터 정의어(DDL)
-Data Definition Language
CREATE
ALTER
DROP
RENAME
- 테이블과 같은 데이터 구조를 정의하는데 사용
- 구조 생성/변경, 삭제, 이름 바꾸기 등 데이터 구조와 관련된 명령어
데이터 제어어(DCL)
-Data Control Language
GRANT
REVOKE
- 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 
트랜잭션 제어어(TCL)
-Transaction Control
language
COMMIT
ROLLBACK
- 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를
  작업단위(트랜잭션)별로 제어하는 명령어

 

2. DDL(Data Definition Language)

1) 데이터 타입

데이터 유형 설명 Oracle SQL Server
고정 길이 문자열 할당된 변수 값의 길이가 s 이하면 차이 길이만큼 공간으로 채워짐 CHAR(s) CHAR(s)
가변 길이 문자열 할당되는 변수 값의 길이의 최대값이 s이며,
s 이하여도 해당 수치만큼의 공간만 채워짐
-> 가능한 최대 길이로 설정
VARCHAR2(s) VARCHAR(s)
숫자 정수, 실수 등 숫자 정보 NUMBER
(전체 자리 수,
소수 부분의 자리 수)
NUMERIC 
DECIMAL 
FLOAT 
REAL 등
10가지 이상의 타입
DATE 날짜와 시각 정보 1초 단위 관리 3.33ms(millisecond) 단위 관리

2) CREATE TABLE

(1) 테이블과 칼럼 명명

  • 알파벳, 숫자,  ‘_’(언더바), ‘$’(달러), ‘#’(샵) 사용 가능
    -> 반드시 문자로 시작해야 함
  • 알파벳 대소문자 구분하지 않음
  • 테이블명은 단수형 권고, 중복 X
  • 한 테이블 내에서는 칼럼명 중복 X
  • 테이블 이름을 지정하고 각 칼럼들은 ( )로 묶어 지정
  • 예약어(Reserved word)를 이름으로 사용 불가

(2) 테이블 생성 구문 형식

CREATE TABLE 테이블이름 (
	칼럼명1 DATATYPE [DEFAULT 형식],
    칼럼명2 DATATYPE [DEFAULT 형식],
    칼럼명3 DATATYPE [DEFAULT 형식],
    ...
);

(3) 제약조건(CONSTRAINT)

구분 설명
PRIMARY KEY(기본키) - 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 기본키
- 한 테이블에 하나만 정의 가능
- 기본키 제약 설정 시 DBMS는 자동으로 UNIQUE 인덱스를 생성하며,
  기본키를 구성하는 칼럼에는 NULL 입력 불가
UNIQUE KEY(고유키) - 테이블에 저장된 행 데이터를 고유하게 식별하기 위한 고유키
- 단, 기본키와 다르게 NULL을 입력할 수 있음
NOT NULL - NULL값 입력 금지(필수로 값을 입력해야 함)
NULL - 0이나 공백이 아닌, 아직 정의되지 않은 미지의 값
- 현재 데이터를 입력하지 못하는 경우
CHECK - 입력할 수 있는 값의 범위 등을 제한
- TRUE or FALSE로 평가하는 논리식 지정
FOREIGN KEY(외래키) - 관계형 데이터베이스에서 테이블 간 관계를 정의하기 위해,
  기본키를 다른 테이블의 외래키로 복사하는 경우 생성됨
- 외래키 지정 시, 참조 무결성 제약 옵션 선택 가능 
DEFAULT - 데이터 입력 시 컬럼의 값이 지정되어 있지 않을 경우 기본값을 사전에 설정하는 것

3) ALTER TABLE

(1) ADD COLUMN

기존 테이블에 필요한 칼럼 추가

ALTER  TABLE          테이블명
ADD    추가할 칼럼명  데이터 유형;

 

(2) DROP COLUMN

테이블에서 필요 없는 칼럼 삭제(한 번 삭제 후 복구 불가능)

ALTER TABLE   테이블명
DROP  COLUMN  삭제할 칼럼명;

 

(3) MODIFY/ALTER COLUMN

칼럼의 데이터 유형, DEFAULT 값, NOT NULL 제약조건 변경

  • 데이터가 테이블에 있는 상태에서는 칼럼의 크기를 줄일 수 없으며 데이터 유형 변경 불가 
  • 해당 칼럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 적용
  • 해당 칼럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건 추가 가능
[Oracle]
ALTER TABLE 테이블명
MODIFY (칼럼명1 데이터 유형 [DEFAULT] [NOT NULL],
       칼럼명2 데이터 유형 ...);
       
[SQL Server]
ALTER TABLE 테이블명
ALTER (칼럼명1 데이터 유형 [DEFAULT] [NOT NULL],
       칼럼명2 데이터 유형 ...);

(4) RENAME COLUMN

Oracle 등 일부 DBMS에서만 지원하는 기능

ALTER TABLE 테이블명
RENAME COLUMN 변경해야 할 칼럼명 TO 새로운 칼럼명;

(5) DROP CONSTRAINT 

테이블 생성 시 부여했던 제약조건 삭제

ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;

(6) ADD CONSTRAINT

특정 칼럼에 제약조건 추가

ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);

4) RENAME TABLE

테이블 이름 변경

[Oracle]
RENAME 변경 전 테이블명 TO 변경 후 테이블명;

[SQL Server]
SP_RENAME 변경 전 테이블명, 변경 후 테이블명;

 

5) DROP TABLE

불필요한 테이블 삭제

DROP TABLE 테이블명 [CASCADE CONSTRAINT];

[SQL Server]
CASCADE 옵션이 없으며, 
테이블 삭제 전에 FOREIGN KEY 제약 조건을 삭제하거나 FOREIGN KEY를 참조하는 테이블을 먼저 삭제해야 함
DROP TABLE 테이블명;

6) TRUNCATE TABLE  

테이블에 들어있던 데이터만 삭제됨(구조는 재생성함)

테이블 구조 변경이 없으므로 DML로 분류될 수도 있지만,

   내부 처리 방식이나 Auto Commit 특성 등으로 인해 DDL로 분류됨

TRUNCATE TABLE 테이블명;
반응형