λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
⭐ Personal_Study/Database

DDL (Data Definition Language)

by ν¬μŠ€νŠΈμ‰μ΄ν¬ 2022. 10. 7.

DDL

DDLμ΄λž€?

βœ” 'Data Definition'
βœ” DDL은 ν…Œμ΄λΈ” ꡬ쑰λ₯Ό 관리: CREATE, ALTER, DROP

CREATE TABLE statement

image

Data Type μ’…λ₯˜

  1. Null: 정보가 μ—†κ±°λ‚˜ μ•Œ 수 μ—†μŒ
  2. Integer: μ •μˆ˜
  3. Real: μ‹€μˆ˜
  4. Text: 문자
  5. BLOB(Binary Large Object): μž…λ ₯된 κ·ΈλŒ€λ‘œ μ €μž₯된 데이터 덩어리 (λŒ€μš© νƒ€μž… μ—†μŒ)

Boolean Type...?

βœ” SQLiteμ—λŠ” λ³„λ„μ˜ boolean νƒ€μž… μ—†μŒ
βœ” 0(False), 1(True)둜 μ €μž₯

Date & Time ...?

βœ” SQLiteμ—λŠ” λ‚ μ§œ 및 μ‹œκ°„μ„ μ €μž₯ν•˜κΈ° μœ„ν•œ λ³„λ„μ˜ νƒ€μž… x
βœ” λŒ€μ‹  builtin 'Date And Time Functions'둜 TEXT, REAL, λ˜λŠ” INTEGERκ°’μœΌλ‘œ μ €μž₯

Binary DATA

βœ” λ°μ΄ν„°μ˜ μ €μž₯κ³Ό 처리λ₯Ό λͺ©μ μœΌλ‘œ 0κ³Ό 1의 이진 ν˜•μ‹μœΌλ‘œ μΈμ½”λ”©λœ 파일

SQLite의 Data Type

βœ” 값에 λ‘˜λŸ¬μ‹ΈλŠ” λ”°μ˜΄ν‘œμ™€ μ†Œμˆ˜μ  λ˜λŠ” μ§€μˆ˜ x -> INTEGER
βœ” 값이 μž‘μ€ λ”°μ˜΄ν‘œλ‚˜ 큰 λ”°μ˜΄ν‘œλ‘œ 묢이면 -> TEXT
βœ” 값에 λ”°μ˜΄ν‘œλ‚˜ μ†Œμˆ˜μ , μ§€μˆ˜κ°€ μ—†μœΌλ©΄ -> REAL
βœ” 값이 λ”°μ˜΄ν‘œ 없이 NULL이면 -> NULL

SQLite datatypes의 νŠΉμ§•

βœ” SQLiteλŠ” λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€ μ—”μ§„μ˜ 정적이고 μ—„κ²©ν•œ νƒ€μž…μ΄ μ•„λ‹Œ "동적 νƒ€μž… μ‹œμŠ€ν…œ(dynamic type system)"을 μ‚¬μš©
βœ” μ»¬λŸΌμ— μ €μž₯된 값에 따라 데이터 νƒ€μž…μ΄ 결정됨
βœ” λ”°λΌμ„œ ν…Œμ΄λΈ”μ„ 생성할 λ–„ μ»¬λŸΌμ— λŒ€ν•΄ νŠΉμ • 데이터 νƒ€μž…μ„ μ„ μ–Έν•˜μ§€ μ•Šμ•„λ„ 됨
βœ” κ·ΈλŸ¬λ‚˜ λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€μ™€μ˜ ν˜Έν™˜μ„± λ¬Έμ œκ°€ 있기 λ•Œλ¬Έμ— 데이터 νƒ€μž… μ§€μ •κΆŒμž₯
βœ” 데이터 νƒ€μž…μ„ μ§€μ •ν•˜λ©΄ SQliteλŠ” μž…λ ₯된 λ°μ΄ν„°μ˜ νƒ€μž…μ„ μ§€μ •λœ 데이터 νƒ€μž…μœΌλ‘œ λ³€ν™˜

(μ°Έκ³ ) μžλ™ ν˜•λ³€ν™˜

image

SQLite Data Type Affinity

image


βœ” λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€ 엔진 κ°„μ˜ ν˜Έν™˜μ„±μ„ μ΅œλŒ€ν™”

Contraints

βœ” '데이터 무결성'을 μœ μ§€ν•˜κΈ° μœ„ν•΄ ν…Œμ΄λΈ”μ˜ μ»¬λŸΌμ— μ„€μ •ν•˜λŠ” μ œμ•½

데이터 무결성

βœ” 데이터 베이슀 λ‚΄μ˜ 데이터에 λŒ€ν•œ μ •ν™•μ„±, 일관성을 보μž₯ν•˜κΈ° μœ„ν•΄ 데이터 λ³€κ²½ ν˜Ήμ€ μˆ˜μ • μ‹œ μ—¬λŸ¬ μ œν•œμ„ 두어 정확성을 λ³΄μ¦ν•˜λŠ” 것

1. NOT NULL

βœ” 컬럼이 NULL 값을 ν—ˆμš©ν•˜μ§€ μ•Šλ„λ‘ 지정

2. UNIQUE

βœ” 컬럼의 λͺ¨λ“  값이 μ„œλ‘œ κ΅¬λ³„λ˜κ±°λ‚˜ κ³ μœ ν•œ 값이 λ˜λ„λ‘ 함

3. PRIMARY KEY

βœ” ν…Œμ΄λΈ”μ—μ„œ ν–‰μ˜ κ³ μœ μ„±μ„ μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 컬럼
βœ” μ•”μ‹œμ μœΌλ‘œ NOT NULL μ œμ•½ 쑰건이 ν¬ν•¨λ˜μ–΄ 있음
βœ” λ”°λ‘œ λͺ…μ‹œ μ•ˆ ν•˜λ©΄ 'row id' μžλ™ 생성

4. AUTOINCREMENT

βœ” μ‚¬μš©λ˜μ§€ μ•Šμ€ κ°’μ΄λ‚˜ 이전에 μ‚­μ œλœ ν–‰μ˜ 값을 μž¬μ‚¬μš©ν•˜λŠ” 것을 방지
βœ” INTEGER PRIMARY KEY λ‹€μŒμ— μž‘μ„±ν•˜λ©΄ ν•΄λ‹Ή rowidλ₯Ό μž¬μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λ„둝 함
βœ” Djangoμ—μ„œ ν…Œμ΄λΈ” 생성 μ‹œ idμ»¬λŸΌμ— 기본적으둜 μ‚¬μš©ν•˜λŠ” μ œμ•½ 쑰건

row id의 νŠΉμ§•

βœ” ν…Œμ΄λΈ”μ„ 생성할 λ•Œλ§ˆλ‹€ rowidλΌλŠ” μ•”μ‹œμ  μžλ™ 증가 컬럼이 μžλ™μœΌλ‘œ 생성됨
βœ” ν…Œμ΄λΈ”μ˜ 행을 κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” 64λΉ„νŠΈ λΆ€ν˜Έμ˜ μ •μˆ˜ κ°’
βœ” ν…Œμ΄λΈ”μ— μƒˆ 행을 μ‚½μž…ν•  λ•Œλ§ˆλ‹€ μ •μˆ˜ 값을 μžλ™μœΌλ‘œ ν• λ‹Ή (start = 1)
βœ” λ§Œμ•½ INTEGER PRiMARY KEY ν‚€μ›Œλ“œλ₯Ό 가진 μ»¬λŸΌμ„ 직점 λ§Œλ“€λ©΄ 이 μ»¬λŸΌμ€ rowid 컬럼의 별칭(alias)κ°€ λœλ‹€.

Alter Table

βœ” κΈ°μ‘΄ ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό μˆ˜μ •(λ³€κ²½)

  1. Rename a table
  2. Rename a column
  3. Add a new column to a tabl
  4. Delete a column

μ˜ˆμ‹œ

image

DROP TABLE

βœ” 데이터 λ² μ΄μŠ€μ—μ„œ ν…Œμ΄λΈ”μ„ 제거

DROP TABLE의 νŠΉμ§•

βœ” ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”λ§Œ μ‚­μ œ -> μ—¬λŸ¬ ν…Œμ΄λΈ”μ„ μ œκ±°ν•˜λ €λ©΄ μ—¬λŸ¬ DROP TABLE λ¬Έ μ‹€ν–‰

βœ” μ‹€ν–‰ μ·¨μ†Œ or 볡ꡬ λΆˆκ°€!

μ˜ˆμ‹œ

image

'⭐ Personal_Study > Database' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

N:1 Relationship  (1) 2022.10.08
Relational Database  (0) 2022.10.08
DML (Data Manipulation Language)  (0) 2022.10.08
SQL  (0) 2022.10.07
Database: Intro  (2) 2022.10.05

λŒ“κΈ€