1. 질의어, 관계대수, 그리고 SQL
질의어 (Query Language)
- 사용자가 데이터베이스에 존재하는 정보를 요구하기 위해 사용하는 언어
- ex) 관계 대수, SQL
관계 대수 (Relational Algebra)
- 절차적 질의어의 한 종류로, 질의를 수학적으로 표현
- 직관적으로 이해하기 어려우며, 사용자가 연산 순서까지도 기술해야 하는 단점을 가짐
SQL (Structured Query Language)
- 비절차적 질의어
- ANSI (American National Standards Institute)와 ISO (International Standards Organization)에서 표준 질의어로 채택
- SQL에서 제공하는 기능은 크게 DDL과 DML로 구분할 수 있음
2. DDL
데이터 정의 언어 (Data Defenition Language, DDL)
- 데이터베이스에 의해 사용되는 데이터 저장 구조를 명시하는 언어
- 테이블을 생성하거나 수정, 삭제하는 명령문을 제공
테이블 생성
create table <테이블 이름> ( <필드 리스트> )
create table student
(
stu_id varchar2(10), -- 기본키는 not null 생략 가능
resident_id varchar2(14) not null,
name varchar2(10) not null,
year int,
address varchar2(10),
dept_id varchar2(10),
constraint pk_student primary key(stu_id), -- 기본키 제약조건 정의
constraint fk_student foreign key(dept_id)
references department(dept_id) -- 외래키 제약조건 정의
);
create table department
(
dept_id varchar2(10),
dept_name varchar2(14) not null,
office varchar2(10),
constraint pk_department primary key(dept_id)
);
테이블 삭제
drop table <테이블 이름>
drop table department; -- student 테이블이 department 테이블을 참조하므로 오류 발생
drop table student; -- 가능
테이블 수정
alter table <테이블 이름> add <필드 이름>
alter table <테이블 이름> drop column <필드 이름>
alter table student add age int -- 필드 추가
alter table student drop column age; -- 필드 삭제
3. DML
데이터 조작 언어 (Data Manipulation Language)
- 사용자가 데이터에 접근하고 조작할 수 있게하는 언어
- 검색, 삽입, 삭제, 수정과 같은 명령문을 제공
레코드 삽입
insert into <테이블 이름> ( <필드 리스트> ) values ( <값 리스트> )
insert into department (dept_id, dept_name, office)
values ('920', '컴퓨터공학과', '201호');
insert into department
values ('920', '컴퓨터공학과', '201호'); -- 테이블의 모든 필드에 데이터 삽입 시 필드 리스트 생략 가능
레코드 수정
update <테이블 이름> set <수정 내역> where <조건>
update professor
set position='교수', dept_id='923'
where name='마학영';
update student
set year=year + 1 -- 모든 레코드에 대한 수정 시 where절 생락 가능
레코드 삭제
delete from <테이블 이름> where <조건>
delete from professor
where name='마학영';
레코드 검색
select <필드 리스트> from <테이블 리스트> where <조건>
select *
from department, student
where department.dept_id = student.dept_id;
select distinct address -- 중복 레코드 제거
from student -- 모든 레코드에 대한 검색 시 where절 생략 가능
4. JOIN 연산
JOIN 연산
- 두 테이블로부터 특정 조건을 만족하는 레코드들을 하나의 레코드로 결합하는 연산
- 크게 내부 조인과 외부 조인으로 나눌 수 있음
내부 조인 (Inner Join)
- 두 테이블의 조인 조건에 일치하는 레코드만 결합하는 조인 방식
내부 조인의 종류
- 동등 조인 (Equi Join): 조인 조건에 = 연산자를 사용하는 내부 조인
- 세타 조인 (Theta Join): 조인 조건에 다양한 비교 연산자를 사용하는 내부 조인
- 자연 조인 (Natural Join): 공통으로 존재하는 필드명에 대해 자동으로 동등 조인을 수행하는 내부 조인
외부 조인 (Outer Join)
- 두 테이블의 조인 조건에 일치하지 않는 레코드도 포함하여 결합하는 조인 방식
- 조인 조건에 일치하지 않는 레코드의 필드는 null로 채워짐
외부 조인의 종류
- 왼쪽 외부 조인 (Left Outer Join): 왼쪽 테이블의 모든 레코드를 포함하는 외부 조인
- 오른쪽 외부 조인 (Right Outer Join): 오른쪽 테이블의 모든 레코드를 포함하는 외부 조인
- 완전 외부 조인 (Full Outer Join): 양쪽 테이블의 모든 레코드를 포함하는 외부 조인
Reference
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=104610433
'데이터베이스' 카테고리의 다른 글
6. 함수적 종속 (0) | 2024.10.21 |
---|---|
5. 무결성 (0) | 2024.10.19 |
3. 오라클 구조 (0) | 2024.10.15 |
2. 관계형 데이터베이스 (0) | 2024.10.14 |
1. 데이터베이스와 DBMS (0) | 2024.10.14 |