개요
- SQL언어는 세 종류의 명령어로 이루어진다.
1. DDL(Data-definition language):
relation schema를 정의하고, relation을 삭제하고, relation schema를 수정하는 명령어를 제공한다.
예시) CREATE, INDEX, DROP 등
2. DML(Data-manipulation language):
정보를 찾기 위해 데이터베이스에 질의하고, 튜플을 삽입, 삭제, 수정하는 명렁어를 제공한다.
예시) SELECT, INSERT, UPDATE, DELETE 등
3. DCL(Data-control language):
데이터베이스에 접근하거나 객체에 권한을 주는 등의 기능을 제공한다.
예시) START, COMMIT ROLLBACK 등
- 관계형 모델(relational model)과 SQL 언어의 비교
1. 용어 비교
2. 이론 비교
set은 중복된 element(row)를 포함할 수 없지만, multiset은 중복된 element(row)를 포함할 수 있다.
SQL에서 Domain Type
- char(n): 사용자가 지정한 길이 n을 갖는 고정 길이 문자.
- varchar(n): 사용자가 지정한 최대 길이 n을 가지는 가변 길이 문자.
- int: 정수.
- smallint: 작은 정수.
- numeric(p, d): 사용자가 지정한 정밀도(precision)를 갖는 고정 소수점 수. 수는 p 개의 숫자로 구성되며, p 개의 숫자 중 d개는 소수점 이하에 있는 숫자의 개수를 의미한다.
- real: 부동 소수점 수.
- double precision: 배정밀도(double-precision) 부동 소수점 수.
- float(n): 적어도 n개의 숫자로 나타낼 수 있는 정밀도(precision)를 갖는 부동 소수점 수.
DDL로서의 SQL
- 테이블(table) 정의
예시)
create table instructor(ID char(5),
name varchar(20) not null,
dept_name varchar(20),
salary numeric(8, 2),
primary key (ID),
foreign key (dept_name) references department);
- 뷰(View) 정의
뷰(View)는 특정 user의 view에서 특정 data를 숨기기 위해 유도된 "가상 테이블(virtual table)"이다.
뷰(View)는 create view 명령을 사용해서 정의된다. 형태는 다음과 같다.
create view v as < query expression >
뷰(View)는 query 결과의 tuple을 미리 계산하고 저장하는 것이 아니라, 뷰에 접근 할 때마다 질의 결과를 계산하여 tuple을 생성한다.
예시)
create view faculty as
select ID, name, dept_name
from instructor;
create view departments_total_salary(dept_name, total_salary) as
select dept_name, sum(salary)
from instructor
group by dept_name;
-> 뷰의 column title을 지정할 수 있다.
- 테이블(table) 제거
drop table table_name
: 테이블을 삭제하는 명령문.
- 테이블(table) 속성 추가
alter table r add A D
: column을 추가하는 명령문. A는 table r에 추가할 속성의 이름이고, D는 A의 domian이다.
alter table r drop A
: column을 삭제하는 명령문. A는 table r에서 삭제할 속성의 이름이다.
DML로서의 SQL
- 삽입(insert)
하나의 튜플을 삽입하는 insert 문.
예시)
insert into instrutor (ID, name, dept_name, salary)
values ('22222', 'Einstein', 'Physics', 95000);
- 갱신(update)
tuple의 모든 값을 바꾸지 않고 tuple의 하나의 값만 변경하는 update 문.
예시)
update instructor
set salary = 100000
where ID = '22222';
- 삭제(delete)
전체 tuple의 값을 삭제하는 delete 문. (특정 속성이 값만 삭제할 수는 없다.)
예시)
delete from instructor
where ID = '22222';
- SQL query의 기본 구조
SQL query는 다음과 같은 형태를 가진다.
select A1, A2, ..., An
from r1, r2, ..., rm
where P
여기서 Ai는 attribute이고, ri는 table이며, P는 predicate이다.
SQL query의 결과는 table(relation)이다.
예시)
select name, course_idfrom instructor, teaches //cartesian productwhere instructor.ID = teaches.ID and year = 2010;
'전공 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] SQL - (3) (0) | 2021.10.19 |
---|---|
[데이터베이스] SQL - (2) (0) | 2021.10.19 |
[데이터베이스] 관계형 모델 - (4) (0) | 2021.09.22 |
[데이터베이스] 관계형 모델 - (3) (0) | 2021.09.16 |
[데이터베이스] 관계형 모델 - (2) (0) | 2021.09.15 |