TIL/🧬 DB

DB와 DBMS, 그리고 SQL λͺ…λ Ήμ–΄ λͺ¨μŒ

devussy 2023. 3. 12. 01:26

DB(DataBase)


μ—¬λŸ¬ μ‚¬λžŒλ“€μ΄ κ³΅μœ ν•˜κ³  μ‚¬μš©ν•  λͺ©μ μœΌλ‘œ 톡합 κ΄€λ¦¬λ˜λŠ” λ°μ΄ν„°λ“€μ˜ λͺ¨μž„ 즉, κ΄€λ ¨λœ λ°μ΄ν„°μ˜ λͺ¨μž„

 

 

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ •μ˜ 4κ°€μ§€

  1. Integrated data(톡합 데이터) : 쀑볡 μ΅œμ†Œν™”, ν†΅μ œκ°€ κ°€λŠ₯ν•œ μ€‘λ³΅λ§Œ ν—ˆμš©
  2. Shared data(곡유 데이터) : μ—¬λŸ¬ μ‚¬μš©μžκ°€ ν•¨κ»˜ μ†Œμœ , μ΄μš©ν•  수 μžˆλŠ” 곡용 데이터
  3. Operational data(운영 데이터) : 쑰직 κΈ°λŠ₯을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ λ°˜λ“œμ‹œ ν•„μš”ν•œ 데이터
  4. Stored data(μ €μž₯ 데이터) : 컴퓨터가 μ ‘κ·Όν•  수 μžˆλŠ” 맀체에 μ €μž₯된 데이터

νŠΉμ§•

  1. Continuous evolution 계속 λ³€ν™” : insert, delete, update
  2. Real-time accessibility μ‹€μ‹œκ°„ μ ‘κ·Όμ„± : μ‚¬μš©μžμ˜ 데이터 μš”κ΅¬μ— μ‹€μ‹œκ°„μœΌλ‘œ 응닡
  3. Concurrent sharing λ™μ‹œ 곡유 : μ„œλ‘œ λ‹€λ₯Έ 데이터 λ™μ‹œ μ‚¬μš©, 같은 λ°μ΄ν„°μ˜ λ™μ‹œ μ‚¬μš©
  4. Content reference λ‚΄μš© 기반 μ°Έκ³  : μ €μž₯된 μ£Όμ†Œλ‚˜ μœ„μΉ˜κ°€ μ•„λ‹Œ λ°μ΄ν„°μ˜ λ‚΄μš©, value(κ°’)으둜 μ°Έμ‘°

κ΅¬μ„±μš”μ†Œ

  1. external schema(μ™ΈλΆ€ μŠ€ν‚€λ§ˆ) : 개인 μ‚¬μš©μžκ°€ μ ‘κ·Όν•˜λŠ” DB
  2. conceptual schema(κ°œλ… μŠ€ν‚€λ§ˆ) : ν†΅ν•©λœ 쑰직 μ „μ²΄μ˜ DB
  3. internal schema(λ‚΄λΆ€ μŠ€ν‚€λ§ˆ) : μ €μž₯μž₯치의 μž…μž₯μ—μ„œ DB 전체가 μ €μž₯λ˜λŠ” 방법 λͺ…μ„Έ

⇒ DBλŠ” λ¬΄μ—‡μœΌλ‘œ κ΅¬μ„±λ˜λŠ” κ°€?

ν…Œμ΄λΈ”λ“€λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

 

 

ν…Œμ΄λΈ”(Table)

λ¦΄λ ˆμ΄μ…˜, μŠ€ν‚€λ§ˆμ™€ 같은 뜻으둜, column(μ—΄)κ³Ό row(ν–‰)으둜 κ΅¬μ„±λœ 2차원 ν‘œμ˜ ν˜•νƒœ

  • ν–‰ row == λ ˆμ½”λ“œ record == νˆ¬ν”Œ tuple μ—΄ coliumn == 속성 attribute == ν•„λ“œ field
  • ν…Œμ΄λΈ” == ν‘œ == μ—‘μ…€νŒŒμΌ
  • ν‘œ == 칼럼(μ—΄, 1쀄) + 둜우(ν–‰, μ—¬λŸ¬μ€„)
  • 칼럼 == 번호, 이름, λ‚˜μ΄, μ—°λ½μ²˜
  • 둜우 == 1, 홍길동, 24, 010-1234-1234

 

μ£Όμ˜ν•  점

  • ν‘œμ—μ„œ μΉΌλŸΌμ€ ν•œμ€„λ§Œ μ‘΄μž¬ν•œλ‹€.
  • ν‘œμ—μ„œ λ‘œμš°λŠ” 0 ~ N쀄 μ‘΄μž¬ν•  수 μžˆλ‹€.

 

카디널리티(cardnality)

λ ˆμ½”λ“œ(==ν–‰)의 개수

 

 

DBMS(DataBase Management System)


DBλ₯Ό κ΄€λ¦¬ν•˜λŠ” μ‹œμŠ€ν…œ

  • 파일 μ‹œμŠ€ν…œμ˜ 문제(쀑볡성, 쒅속성)λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ œμ‹œλœ μ†Œν”„νŠΈμ›¨μ–΄
  • 쑰직에 ν•„μš”ν•œ 데이터λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— ν†΅ν•©ν•˜μ—¬ μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•œλ‹€.
  • 자료의 톡합성 증진, 데이터 접근에 용이
  • μž₯점: 쀑볡 μ΅œμ†Œν™”, 데이터 독립성

⇒ MySQL은 DBMS이닀.

 

DBMS μ£Όμš” κΈ°λŠ₯

  1. definition facility μ •μ˜ κΈ°λŠ₯ : λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰λ₯Ό μ •μ˜ν•˜κ±°λ‚˜ μˆ˜μ • κ°€λŠ₯
  2. manipulation facility μ‘°μž‘ κΈ°λŠ₯ : 데이터λ₯Ό μ‚½μž…, μ‚­μ œ, μˆ˜μ •, κ²€μƒ‰ν•˜λŠ” μ—°μ‚°
  3. control facility μ œμ–΄ κΈ°λŠ₯ : 데이터λ₯Ό 항상 μ •ν™•ν•˜κ³  μ•ˆμ „ν•˜κ²Œ μœ μ§€
    • λ°μ΄ν„°μ˜ 무결성 μœ μ§€, λ³΄μ•ˆ μœ μ§€, κΆŒν•œ 검사, 병행 μ œμ–΄, μ—¬λŸ¬ μ‚¬μš©μž μ ‘κ·Ό κ°€λŠ₯

 

 

SQL


DBμ—κ²Œ λͺ…령을 내릴 λ•Œ μ‚¬μš©λ˜λŠ” λͺ…λ Ήμ–΄

λͺ…λ Ήμ–΄ μ’…λ₯˜

  1. 전체 λ°μ΄ν„°λ² μ΄μŠ€ λ¦¬μŠ€νŒ…
    • SHOW DATABASES;
  2. νŠΉμ • λ°μ΄ν„°λ² μ΄μŠ€ 선택, λ‹€λ₯Έλ§λ‘œ ν•˜λ©΄ νŠΉμ • 폴더(DB)둜 접속 λͺ…λ Ήμ–΄
    • USE DB이름;
      • EX : USE mysql;
  3. ν˜„μž¬ 접속해 μžˆλŠ” DBμ•ˆμ˜ λͺ¨λ“  ν…Œμ΄λΈ”λ“€μ„ λ¦¬μŠ€νŒ…
    • SHOW TABLES;

 

 

DB, ν…Œμ΄λΈ”, 둜우 별 쑰회, 생성, μ‚­μ œ, μˆ˜μ • λͺ…λ Ήμ–΄

기본적인 SQL 정리

μ’…λ₯˜ DB(λ°μ΄ν„°λ² μ΄μŠ€/폴더) TABLE(ν…Œμ΄λΈ”/μ—‘μ…€νŒŒμΌ) ROW(둜우/μ—‘μ…€νŒŒμΌμ˜ ν•œ ν–‰)

쑰회 SHOW DATABASES; SHOW TABLES;
SHOW TABLES LIKE 'ar%'DESC article; (ν•œ ν…Œμ΄λΈ” μ•ˆμ— μžˆλŠ” μΉΌλŸΌλ“€ 쑰회)
SELECT id, regDate
FROM article
WHERE id >= 4
AND title LIKE '제%'
ORDER BY id DESC
LIMIT 3;
생성 CREATE DATABASE a1; CREATE TABLE article (  
id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,  
regDate DATETIME NOT NULL,  
title VARCHAR(100) NOT NULL, 
body TEXT NOT NULL,  
PRIMARY KEY(id)
);
INSERT INTO artile
SET regDate = NOW(),
title = '제λͺ©1',
body = 'λ‚΄μš©1';
μˆ˜μ • μ—†μŒ ALTER TABLE article ADD COLUMN hit INT(10);
ALTER TABLE article MODIFY COLUMNhit INT(10) UNSIGNED NOT NULL;
ALTER TABLE article CHANGE COLUMN hit hitNumber INT(10) UNSIGNED NOT NULL;
ALTER TABLE article DROP COLUMN hit;
ALTER TABLE article DROP INDEXPRIMARY;
ALTER TABLE article ADD PRIMARYKEY(id);
UPDATE article
SET title = '인기글'
WHERE id > 3;
μ‚­μ œ DROP DATABASE a1; DROP TABLE article; DELETE FROM article;