공부 자료/SQL

[SQL] 관계 데이터베이스

뚜루뚜루세니 2021. 10. 5. 14:39
728x90

관계 데이터 모델

  • Relation Database란

- 관계형 데이터베이스는 현재 가장 많이 사용하고 있는 데이터베이스의 종류 중 하나이다.

- 관계형 데이터베이스는 테이블로 이루어져 있고, 이 테이블은 키(key)와 값(value)의 관계로 나타낸다.

- 데이터의 종속성을 관계로 표현하는 것이 관계형 데이터베이스의 특징이다.

 

* 용어정리
- 열(column) : 필드라고 부르면, 항목의 속성(명칭)을 나타낸다. 필드마다 char, integer 처럼 데이터 유형을 정할 수 있다.
- 행(row) : 레코드(record)라고 부르며, 각 데이터 항목을 저장한다.
- 스키마(schema) : 필드는 데이터 유형 뿐만 아니라 제약사항도 지정할 수 있는데 , 이러한 제약사항을 스키마라고 부른다. 필드는 중복 값을 해당 행에 저장할 수 없다거나, 반드시 값을 가져야한다는 등의 조건을 걸 수 있다.

SQL은 관계형 데이터베이스에 있는 데이터를 분석하는 언어이고, 관계형 데이터베이스는 테이블이 관계를 맺과 모여있는 집합체를 의미한다.

 

릴레이션 개념

- 릴레이션 : 두 개 이상의 집합이 주어질 때, 각 집합을 구성하는 원소들의 순서쌍에 대한 집합

--> 테이블을 릴레이션이라고 한다.

Table-oriented Record-oriented set - oriented
table file relation
row record tuple
column field attribute
  • 속성(attribute) = 필드(field) = 열 (column)
  • 튜플(tuple) = 레코드(record) = 행(row)
  • 도메인 : 각 필드에 입력 가능한 값들의 범휘, 즉 필드가 가질 수 있는 모든 값들의 집합이다.
  • 널(NULL) : 특정 필드에 대한 값을 알지 못하거나 아직 정해지지 않아, 입력하지 못한 경우를 의미

릴레이션 특성

- 한 애트리뷰트 내의 값들은 모두 같은 유형이다.

- 애트리뷰트들의 순서들은 중요하지 않다.

- 투플들의 순서는 중요하지 않다.

- 동일한 투플이 두개 이상 존재하지 않는다.

=> 키 가 존재한다.

- 한 투플의 각 애트리뷰트는 원자 값을 가진다. (= 더이상 쪼갤 수 없음을 의미한다.)

 

데이터베이스 키

- 릴레이션의 키 : 각 투플을 고유하게 식별할 수 있는 하나 이상의 애트리뷰트들의 모임

  • 수퍼 키(Super Key)

- 한 릴레이션 내의 특정 투플을 고유하게 식별하는 하나의 애트리뷰트 또는 애트리뷰트들의 집합

- 투플들을 고유하게 식별하는데 꼭 필요하지 않은 애트리뷰트들을 포함할 수 있다.

  • 후보 키(Candidate key)

- 각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임

- 유인성(uniqueness), 최소성(minimality) 2가지 특성을 모두 만족해야한다.

- 모든 릴레이션에는 최소 한 개 이사으이 후보키가 있다.

- 후보 키도 두 개 이상의 복합 애트리뷰트로 이뤄질 수 있다.

 

  • 기본 키(Primary key)

- 속성이 항상 고유한 값을 가져야한다.

- 기본 키로 지정된 애트리뷰트들은 모든 튜플에 대해 어느 때고 널 값을 가질 수 없다.

- Unique + Minmal + Not null

  • 대체 키(Alternate key)

- 기본 키가 아닌 후보 키

- 하나의 후보 키가 기본 키로 선택되면 다른 후보 키들은 대체키가 된다.

  • 외래 키(Foreign key)

- 어떤 다른 릴레이션의 기본 키를 참조하는 애트리뷰트를 의미

- 관계 데이터베이스에서 릴레이션들 간의 관계를 나타내기 위해서 사용된다.

- 외래 키 애트리뷰트는 참조되는 릴레이션의 기본 키와 동일한 도메인을 가져야한다.

- 자신이 속한 릴레이션의 기본 키의 구성요소가 되거나 되지 않을 수 있다.

 

SQL 데이터 조작문

데이터 조작어는 데이터를 삽입, 조회, 수정, 삭제할 때 사용하는 명령어이다.

  • 데이터 삽입

Can insert a single tuple using

EX) INSERT INTO Students(sid, login, age, gpa)

     VALUES (53688, 'Smith', 'smith@ee', 18, 3.2)

  • 데이터 삭제

- Can delete all tuples satisfying some condition

EX) DELETE

     FROM Students S

     WHERE S.name = 'Smith'

- 테이블 자체가 삭제되는 것이 아니고, 해당 테이블에 들어있던 모든 행들이 제거되고 저장 공간을 재사용 가능하게 해제하려면

EX) TRUNCATE TABLE Students

  • 데이터 갱신

- Can update all tuples satisfying some condition

  • 실습
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
create database Practice; /*데이터베이스 생성*/
use Practice; /*데이터베이스 사용*/
 
/*테이블 생성(CREATE)*/
create table 회원테이블(
회원번호 INT PRIMARY KEY,
이름 varchar(20),
가입일자 DATE NOT NULL,
수신동의 BIT
);
 
/*데이터 삽입*/
insert into 회원테이블 values (1001'홍길동''2020-01-02'1);
insert into 회원테이블 values (1002'이순신''2020-01-03'0);
insert into 회원테이블 values (1003'장영실''2020-01-04'1);
insert into 회원테이블 values (1004'유관순''2020-01-05'0);
 
/*회원 테이블 조회 */
select * from 회원테이블;
 
/*조건 위반*/
 
/*primary key 제약 조건 위반 */
insert into 회원테이블 values (1004,'장보고','2020-01-06',0);
 
/*not null 제약 조건 위반*/
insert into 회원테이블 values (1005,'장보고',NULL,0);
 
/*데이터 타입조건 위반*/
insert into 회원테이블 values (1005,'장보고',1,0);
 
/*데이터 조회*/
 
/*모든 열 조회 */
select * from 회원테이블;
 
/*특정 열 조회 */
select 회원번호, 이름 from 회원테이블;
 
/*특정 열 이름 변경한 후 조회 */
select 회원번호,
        이름 AS 성명
        from 회원테이블;
 
/* 데이터 수정 */
update 회원테이블
set 수신동의 = 0;
 
/*회원 테이블 조회*/
select * from 회원테이블;
 
/*특정 조건 데이터 수정 */
update 회원테이블
set 수신동의 = 1
where 이름 = '홍길동';
 
/*데이터 삭제*/
/*특정 데이터 삭제*/
delete
from 회원테이블
where 이름 = '홍길동';
 
/*회원 테이블 조회*/
select * from 회원테이블;
 
/*모든 데이터 삭제 */
delete from 회원테이블;
 
/*회원 테이블 조회*/
select * from 회원테이블;
cs

개체 무결성

- 기본 테이블의 기본 키를 구성하는 어떤 속성도 NULL 값을 가질수없다.

참조 무결성

- 외래 키 값은 NULL 이거나, 참조 릴레이션의 기본 키 값과 동일해야한다.

- 릴레이션은 참조할 수 없는 외래 키 값을 가질 수 없다.

- 외래 키(Foreign key) : Set of fields in one relation that is used to 'refer' to a tuple in another relation.

728x90