Search

3 : Introduction to SQL

course
last review
2023/04/14
mastery
ranger
progress
not started
date
2023/03/09
4 more properties
Previous chapter

Data Definition Language

SQL data-definition language(DDL)은 관계에 대한 정보를 특정(저격)하는 것을 허락한다.
아래와 같은 것들을 포함
각 Relation을 위한 Schema
각 attribute에 엮인 value의 domain
INTEGRITY CONSTRAINTS
제약조건(A > 0, 수강신청 시 최소 최대학점 등등)
그리고 등등…

Domain Types in SQL

char(n). 고정문자열. 사용자지정 길이 n
모든 tuple이 s 바이트만큼의 길이를 가지고 있어야 함.
varchar(n). 가변문자열. 사용자지정 최대길이 n.
문자열의 길이차가 심할 경우 varchar을 쓰는게 나을 것
int. 정수.
smallint. 작은 정수?
numeric(p,d). 고정 소수점
추천안함. 유효숫자를 어디까지 표현할 것인가에 대한 것.
real. floating point number. double에 해당됨
float(n). float에 해당됨.

Create Table Construct

create table r (A1 D1, A2 D2, ..., An Dn, (integrity-constraint1), ..., (integrity-constraintk))
SQL
복사
r : relation 이름
각 Ai는 r의 Attribute의 이름.
Di는 Ai의 타입.
Example
create table instructor ( ID char(5), name varchar(20), dept_name varchar(20), salary numeric(8,2))
SQL
복사

Integrity Constraints in Create Table

Integrity constraints의 타입
primary key(A1, A2 … , An)
foreign key (Am, … , An) references R
not null
Example
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);
SQL
복사

And a Few More Relation Definitions

Updates to tables

Insert
insert into {r} values(A1, A2, ... ,An);
SQL
복사
Delete
대상 Relation의 모든 tuples 삭제
tuple만 사라지며 table의 존재 자체는 잔존한다.
delete from {r}
SQL
복사
특정 정보만 삭제하려면 조건을 더 붙여야 함.
Drop Table
테이블 존재 말소;;;
drop table {r}
SQL
복사
Alter
alter table {r} add {A} {D}
SQL
복사
r : Relation, A : Attribute, D : Domain of A
테이블의 Attribute를 새로 추가한다. 모든 값들은 null 값으로 지정됨.
alter table {r} r drop A
SQL
복사
r의 Attribute를 날린다.

Basic Query Structure

select A1, A2, ..., An from r1, r2, ..., rm where P
SQL
복사
P는 predicate.(???)

The Select Clause : 찾아라!

특정한 요소를 찾아라!
select name from instructor select distinct {r} select * from {r}
SQL
복사
SQL은 대문자 소문자 구분없음.
중복자 제거 버전은 distinct를 붙여준다.
모든 Attribute를 선택할 시 asterisk 사용.
중간에 콤마(,)가 붙을 경우 cartisean product를 수행함.
select 절에 상수나 튜플의 속성에 적용되는 사칙연산 연산자를 포함하는 산술 표현을 사용할 수 있다.
select ID, name, dept_name, salary * 1.1 from instructor
C
복사
이 질의는 각 교수의 급여를 10% 인상하면 어떤 결과가 나오는지 보여준다.
그렇지만 instructor 릴레이션의 실제 값 변화는 일어나지 않는다.
또한 SQL은 날짜 타입과 같은 특수한 데이터 타입을 제공하며 이러한 데이터 타입에 적용 가능한 여러 산술 함수를 허용한다.

The where Clause

뒤에 조건을 붙여라!
select name from instructor where dept_name = 'Comp. Sci.'
SQL
복사
비교연산자 < ≤ > ≥ = <>를 사용하면 됨.

The from Clause

어디에서 찾을지 정해라!

Query structure of Multiple Relations

모든 교수의 이름과 함께, 그들의 학과 이름과 건물 이름을 구하라.
는 질의의 답을 얻으려고 한다고 해 보자.
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);
SQL
복사
instructor 릴레이션의 스키마를 보면, dept_name으로부터 학과 이름은 가져올 수 있지만, 학과 건물 이름은 department 릴레이션의 building 속성에 있음을 알 수 있다.
instructor 릴레이션의 각 튜플은 어떤 deprartment 릴레이션의 튜플과 대응해야 하는데, 이때 그 department 튜플의 dept_name 값이 대응하는 instructor 튜플의 dept_name 값과 반드시 일치해야 한다.
따라서 이 조건에 답을 하려면 SQL에 접근해야 하는 릴레이션을 from절에 나열하고 일치 조건을 where 절에 지정해야 한다.
select name, instructor.dept_name, building' from instructor, department where instructor.dept_name = department.dept_name;
SQL
복사
Next chapter