create table EMPLOYEE ( 
   id                  INT                 PRIMARY KEY,
   name                VARCHAR(20)         NOT NULL,
   birth_date          DATE,
   sex                 CHAR(1)             CHECK(sex in ('M', 'F')),
   position            VARCHAR(10),
   salary              INT                 DEFAULT 50000000,
   dept_id             INT,
   FOREIGN KEY (dept_id) references DEPARTMENT(id) 
       on delete SET NULL on update CASCADE,
   CHECK (salary >= 50000000)
   );

 

'database' 카테고리의 다른 글

table 생성 기초  (0) 2023.10.19
sqlite 사용하기  (0) 2023.10.19
table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07

 

create table DEPARTMENT (

id               INT                 PRIMARY KEY,

name             VARCHAR(20)         NOT NULL            UNIQUE,

leader_id        INT

);

 

 

괄호() 안의 부분을 살펴보면,

attribute name = id

data type = INT

 

attribute data type 참고: https://spidyweb.tistory.com/61

 


※ Key constraints : PRIMARY KEY

 

- table의 tuple을 식별하기 위해 사용, 하나 이상의 attribute(s)로 구성

- primary key는 중복된 값을 가질 수 없으며, NULL도 값으로 가질 수 없다

 

 

PRIMARY KEY를 선언하는 방법은 두 가지가 있다. 

 

1) attribute 하나로 구성될 때

create table PLAYER (

   id          INT          PRIMARY KEY,

   ...

);

 

2) attribute 하나 이상으로 구성될 때

create table PLAYER (

   team_id           VARCHAR(12),

   back_number       INT,

   ...

   PRIMARY KEY(team_id, back_number)

);

 

즉, 2번을 적용하여 1을 이렇게 쓸 수도 있다.

create table PLAYER (

   id          INT,

   ...

   PRIMARY KEY(id)

);

 


※ Key constraints : UNIQUE

 

- UNIQUE로 지정된 attribute(s)는 중복된 값을 가질 수 없다.

- 단, NULL은 중복을 허용할 수도 있다. (RDBMS마다 다름)

- UNIQUE를 선언하는 방법은 PRIMARY KEY와 동일하게 attribute가 하나로 구성되는 경우, 하나 이상으로 구성되는 경우로 표현

 


※ NOT NULL constraint

 

- attribute가 NOT NULL로 지정되면 해당 attribute는 NULL을 값으로 가질 수 없다.

 

'database' 카테고리의 다른 글

sqlite 사용하기  (0) 2023.10.19
SQL 예제로 구조 파악하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04

현재 접근 가능한 데이터베이스 보기

SHOW DATABASES;

 

데이터베이스 구축하기

CREATE DATABASE 데이터베이스명;

 


다시 SHOW DATABASES;를 하면 내가 생성한 데이터베이스가 보인다.

 

지금 선택된 데이터베이스 보고 싶을 때

SELECT database();

 

내가 사용하고자 하는 데이터베이스 보기

USE 데이터베이스명;

(-> 아마 Database changed라고 뜸)

 

잘 수행됐는지 확인해보자.

SELECT database();

(-> 아마 내가 만든 데이터베이스가 뜸. 아까 실행했을 땐 NULL이었을 것)

 

만약 내가 만든 데이터베이스를 지우고 싶다면?

DROP DATABASE 데이터베이스명;


DATABASE  vs  SCHEMA

 

- MySQL에서는 DATABASE와 SCHEMA가 같은 뜻을 의미한다. 

  즉, CREATE DATABASE 데이터베이스명 = CREATE SCHEMA 데이터베이스명

- 다른 RDBMS에서는 의미가 다르게 쓰인다

 

 

'database' 카테고리의 다른 글

SQL 예제로 구조 파악하기  (0) 2023.08.17
table 생성하기  (0) 2023.08.17
relational data model  (0) 2023.08.07
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (0) 2023.08.04

먼저, relational의 의미를 살펴보기에 앞서, set에 대해 알아보자.

 

set

- 서로 다른 elements를 가지는 collection

- 하나의 set에서 elements의 순서는 중요하지 않다

- ex) {1, 3, 22, 11, 7}

 


수학에서의 relation이란 어떤 의미가 있을까?

 

relation in mathematics

set A와 set B가 있다고 하자.

set A = {1, 2}

set B = {p, ,q, r}

 

Cartesian product A X B = {(a, b) | a ∈ A and b ∈ B}

여기에서 Cartesian product란, set A와 set B로 만들 수 있는 모든 pair의 조합즉, (1, p), (1, q), (1, r), (2, p), (2, q), (2, r)을 의미한다.

 

이와 같은 set A, set B 상황에서는 Cartesian product가 binary relation으로 밖에 나오지 않는다.

binary relation ⊆ A X B

※ ⊆ : 부분집합

 

 

 

이 개념을 확장해보자.

 

집합이 여러 개가 되면 어떻게 될까?

 

n개의 set이 있다고 하자. 

n-ary relation A X B X C X D ..... 

이런 경우를 n 튜플이라고 한다. 

 

즉, relation in mathematics는 subset of Cartesian product, set of tuples 이다.


이제 수학적 의미에서의 relation이 relational data model에 어떻게 적용되었는지 살펴보자.

 

student relation을 예로 들어보자.

 

1. domain 정의하기

- student_ids : 학번 집합, 7자리 정수

- human_names : 사람 이름 집합, 문자열

- university_grades : 대학교 학년 집합 

- major_names : 대학교에서 배우는 전공 이름 집합

- phone_numbers : 핸드폰 번호 집합

 

2. attribute of student relation

- student_ids : id

- human_names : name

- university_grades : grade 

- major_names : major

- phone_numbers : phone_num (학생 번호)

- phone_numbers : emer_phone_num (비상연락망)

 

3. student relation in relational data model

 

 

relational data model에서의 주요 개념

domain : set of atomic values (더 이상 나누어질 수 없는 값들로 이루어져 있다)

domain name : domain 이름

attribute : domain이 relation에서 맡은 역할 이름

tuple : 각 attribute의 값으로 이루어진 리스트. 일부 값은 NULL일 수 있다

relation : set of tuples

relation name : relation 이름

 

 

 

relation schema

- relation의 구조를 나타낸다.

- relation의 이름과 attributes 리스트로 표기된다

- ex) STUDENT(id, name, grade, major, phone_num, emer_phone_num)

 - attribute와 관련된 constraints도 포함한다

 

 

degree of a relation

- relation schema에서 attribute의 수

- ex) STUDENT(id, name, grade, major, phone_num, emer_phone_num)  → degree 6

 

 

 

 

'database' 카테고리의 다른 글

table 생성하기  (0) 2023.08.17
SQL 명령어  (0) 2023.08.17
[데이터베이스 용어] database language  (0) 2023.08.04
[데이터베이스 용어] schema & state  (0) 2023.08.04
[데이터베이스 용어] Data Models  (0) 2023.08.04

+ Recent posts