RDBMS
데이터 베이스 관리 시스템
Relational DataBase Management System
Table
Column
개체의 고유한 특성
컬럼, 열, 필드
Row
각 컬럼에 어떤 값을 대응 시킨 한 건의 데이터
로우, 행, 레코드
Primary Key 기본키(PK)
table의 각 row를 고유하게 식별할 수 있게 하는 한 개 이상의 column들.
한 테이블에 한 개만 정의 가능
Unique Key 고유키(UK)
table의 각 row가 고유한 값을 가지는 column
한 테이블에 여러 개 정의 가능
Foreign Key 외래키(FK)
다른 table의 기본키 또는 고유키를 참조하는 column들
외래키에 지정되는 값은 항상 참조하는 column에 존재하는 값
Check Constraint 검사규정(CC)
참조무결성
SQL Structured Query Language
구조적 질의 언어
RDBMS의 데이터를 관리하기 위해 사용하는 데이터 언어
기본적인 영어 구문의 형식을 이용하여 사용자가 원하는 작업을 표현
비절차적인 언어 : 원하는 작업은 지정하지만 방법이나 절차는 지정하지 않음
DDL Data Definition Language
데이터 정의 언어
table을 비롯한 database 객체를 정의하는 SQL문
CREATE
: 데이터베이스 객체 생성
ALTER
: 데이터베이스 객체의 특성 변경
DROP
: 데이터베이스 객체 제거
DML Data Manipulation Language
데이터 조작 언어
table의 데이터를 조작하는 SQL문
SELECT
: 테이블의 데이터를 조회
SELECT
는 데이터를 변경시키지 않으므로 데이터 쿼리 언어로 분류하기도 한다.INSERT
: 테이블에 데이터를 추가
UPDATE
: 테이블의 데이터를 변경
DELETE
: 테이블의 데이터를 삭제
DCL Data Control Language
데이터 제어 언어
사용자의 데이터 접근을 제어하고, 사용자가 실행하는 transaction을 제어하는 SQL문
Transaction
: 여러 개의 SQL문을 묶어서 한 개의 작업 단위로 처리하는 것권한 제어
GRANT
: 데이터베이스 객체에 대한 권한을 부여REVOKE
: 데이터베이스 객체에 대한 권한을 회수접속 제어
CONNECT
: 데이터베이스에 접속하거나, 데이터베이스의 접속을 해제트랜잭션 제어
SAVEPOINT
: 세이브 포인트를 설정RELEASE SAVEPOINT
: 세이브 포인트를 해제COMMIT
: 트랜잭션을 확정ROLLBACK
: 트랜잭션을 취소SQL의 구성 요소
절 (Clause)
수식, 필드 (Expression)
술어, 조건 (Predicate)
# 테이블 KES.EMPL의 데이터를 조회하는 문장
SELECT ENAME SALARY * 1.2 # SELECT절 # ENAME : 컬럼명 # SQLARY * 1.2 : 수식
FROM KES.EMPL # FROM절 # KES.EMPL : 테이블 명
WHERE COMM >= 10 # WHERE절 # COMM >= 10 : 술어
SQL문 작성 방법
키워드 구분자 : 한 개 이상의 공백, 탭, 개행 문자로 키워드를 구분
항목 구분자 : ,
로 동일 수준의 항목들을 구분
문장 구분자 : ;
으로 SQL문을 구분
키워드, 테이블명, 컬럼명 : 대소문자를 구분하지 않고 지정
연산자 : 두 글자 이상의 연산자는 분리하지 말고 한 단어로 표시
숫자 상수 : 0
~ 9
, +
, -
, 소수점, E
기호 사용
문자 상수 : 작은 따옴표 안에 문자열 지정, 지정된 문자열은 대소문자 구분, 공백, 탭 등도 유효
날짜 상수 : 한국 기준 'YYYY-MM-DD'
, 시간은 'HH-MM-SS'
형식으로 지정
주석문 : /*
와 */
사이에 지정 한 줄 주석은 --
테이블명 지정 방법
완전 테이블명 지정이 원칙
스키마명
.
테이블명
스키마명
과 테이블명
은 대소문자 구분하지 않음
테이블명
만 지정할 경우 스키마명
과 .
은 생략된 것으로 해석
스키마명
은스키마명
스키마명
해석되는 테이블명
이 데이터베이스에 없으면 오류 발생
테이블의 별명 지정 방법
테이블명
바로 뒤에 한 칸 이상의 공백 문자로 구분하여 지정
대소문자 구분 없음
짧은 것이 좋음
컬럼명 지정 방법
완전 컬럼명 지정이 원칙
스키마명
.
테이블명
.
컬럼명
대소문자 구분 없음
컬럼명은 테이블 내에서 고유해야 함
SQL문에 한 개의 테이블만 있다면 단순히 컬럼명만 지정해도 된다
여러 개의 테이블이 있는 경우에도 컬럼명만으로 구분이 된다면 컬럼명만 지정 가능
별명이 있는 경우 별명.컬럼명 형식으로 지정하거나 단순히 컬럼명으로 지정해야 함
데이터 지정 방법
NULL
컬럼에 지정할 데이터가 없을 때 값이 없음을 의미하는 NULL
숫자형, 문자형, 날짜형 데이터의 초기값이 아님
다른 값 또는 다른 NULL과 동등 비교 또는 대소 비교 불가능
어떤 컬럼에 NULL을 지정하도록 허용할 것인지는 테이블을 정의할 때 결정 가능
NULL != '' # 길이가 0인 문자열
!= ' ' # 공백 문자
!= 0 # 숫자 0
!= NULL # 다른 NULL
쿼리와 결과 집합
쿼리 : 사용자가 SQL문을 이용하여 RDBMS에게 보내는 모든 요청
결과 집합(결과 테이블) : 쿼리의 실행 결과로 반환 되는 row의 집합
SQLCA SQL Communication Area
SQL 통신 영역
DBMS가 사용자에게 SQL문의 실행에 대한 정보를 전달하기 위해 사용하는 구조체
사용자가 SQL문의 실행을 요청하면, DBMS는 요청된 SQL문을 실행하고, 해당 SQL문의 성공 여부에 대한 정보를 SQLCA
의 각 필드에 저장하여 사용자에게 반환
SQL문이 실패했다면, SQLCODE
와 SQLSTATE
를 이용해 SQL문의 실패 원인 파악 가능
ex)
# 오류 메시지
SQL0407N NOT NULL 컬럼 # SQLCODE : SQL 다음에 숫자가 오고 N은 Negative의 약자
TBSQPCEID=3, TABLEID=26,
COLNO-1"에 널(NULL) 값을
지정할 수 없습니다.
SQLSTATE=23502 # SQLSTATE : SQLSTATE= 다음에 5개의 문자로 표시