SQL

SQLμ΄λž€

SQL은 Structured Query Language(ꡬ쑰적 질의 μ–Έμ–΄)의 μ€„μž„λ§λ‘œ RDBMS(κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œ)을 μ œμ–΄ν•˜λŠ” 컴퓨터 μ–Έμ–΄λ₯Ό λœ»ν•©λ‹ˆλ‹€. 저희가 잘 μ•„λŠ” 파이썬, μžλ°”μ™€ 같은 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ³΄λ‹€λŠ” κ·Έ λͺ…령문이 μ§§κ³  κ°„κ²°ν•©λ‹ˆλ‹€.

RDBMSμ—λŠ” μ—¬λŸ¬ κ°€μ§€ μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

  • Oracle DB : κ°€μž₯ μ˜€λž˜λ˜μ—ˆκ³  신뒰도가 λ†’μŠ΅λ‹ˆλ‹€. λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ—μ„œ 많이 μ“°μž…λ‹ˆλ‹€.

  • MySQL : μ˜€ν”ˆ μ†ŒμŠ€λ‘œ 저희듀이 μ΄μš©ν•  RDBMSμž…λ‹ˆλ‹€.

  • Maria DB : MySQL 5.5λ₯Ό 기반으둜 λ§Œλ“€μ–΄μ Έ MySQLκ³Ό ν˜Έν™˜μ„±μ΄ λ›°μ–΄λ‚©λ‹ˆλ‹€.

  • PostgreSQL : μ˜€ν”ˆ μ†ŒμŠ€ ORDBMS(κ°μ²΄ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ) μž…λ‹ˆλ‹€.

1. RDB ꡬ쑰

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” ν‚€(key)와 κ°’(value)의 관계λ₯Ό 2차원 ν…Œμ΄λΈ”μ˜ ν˜•μ‹μœΌλ‘œ λ‚˜νƒ€λ‚Έ λ°μ΄ν„°λ² μ΄μŠ€λ‘œ, ν•˜λ‚˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€ μ•ˆμ—λŠ” μ—¬λŸ¬κ°œμ˜ ν…Œμ΄λΈ”μ΄ μ‘΄μž¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ν…Œμ΄λΈ”μ€ ν–‰(row)와 μ—΄(column)으둜 이루어져 μžˆμŠ΅λ‹ˆλ‹€. ν…Œμ΄λΈ”μ˜ 각 행은 λ ˆμ½”λ“œ(record)라고 λΆ€λ¦…λ‹ˆλ‹€. 각각의 데이터 ν•œ 건을 μ˜λ―Έν•©λ‹ˆλ‹€. ν…Œμ΄λΈ”μ˜ μ—΄(column)은 λ°μ΄ν„°ν”„λ ˆμž„μ˜ 열이라고 μƒκ°ν•˜λ©΄ λ©λ‹ˆλ‹€.

[λ°μ΄ν„°λ² μ΄μŠ€ - ν…Œμ΄λΈ” - μ—΄, ν–‰]

2. SQL λͺ…λ Ήμ–΄ λΆ„λ₯˜

  • DDL : λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆμ™€ μ„€λͺ…을 μ •μ˜ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ™€ ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λŠ” μž‘μ—…μ— μ“°μž…λ‹ˆλ‹€.

  • DML : 데이터 검색, μ‚½μž…, λ³€κ²½, μ‚­μ œλ₯Ό μˆ˜ν–‰ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.

  • DCL : 데이터에 μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œμ„ κ΄€λ¦¬ν•˜λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.

  • TCL : Transaction을 λ‹€λ£¨λŠ” μ–Έμ–΄μž…λ‹ˆλ‹€.

3. 데이터 νƒ€μž…

κ°€μž₯ 자주 μ“°μ΄λŠ” 데이터 4κ°œλ§Œμ„ μ •λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€.

  • VARCHAR() : μ΅œλŒ€ 255자의 문자λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

  • INT() : ν‘œμ€€ Integer κ°’

  • DATE : λ‚ μ§œ. β€˜YYYY-MM-DD’ ν˜•μ‹

  • TIME : μ‹œκ°„. β€˜HH:MM:SS’ ν˜•μ‹

4. SQL μ‹€μŠ΅

  1. Database 생성

CREATE DATBASE λ°μ΄ν„°λ² μ΄μŠ€λͺ…;
  1. Database 접속

USE λ°μ΄ν„°λ² μ΄μŠ€λͺ…;
  1. Database μ‚­μ œ

DROP DATABASE λ°μ΄ν„°λ² μ΄μŠ€λͺ…;
  1. Table 생성

CREATE TABLE Table1(
    id INT(20) NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(id),
		detail TEXT NULL
);

# NOT NULL : ν•„μˆ˜ μž…λ ₯ 사항. 곡백 ν—ˆμš© ν•˜μ§€ μ•Šκ² λ‹€λŠ” μ˜΅μ…˜
# NULL : 곡백 ν—ˆμš© μ˜΅μ…˜

# AUTO_INCREMENT : μžλ£Œν˜•μ΄ INT(μ •μˆ˜ν˜•)μΌλ•Œ 적용 κ°€λŠ₯, 데이터가 λŠ˜μ–΄λ‚  λ•Œλ§ˆλ‹€ 1μ”© μžλ™ 증가

# PRIMARY KEY(컬럼λͺ…) : 쀑볡 κ°’ ν—ˆμš© μ•ˆν•˜λŠ” 컬럼 1개 선택. ν…Œμ΄λΈ”μ˜ μ£Όμš” 좕이 λ˜λŠ” 컬럼/
  1. Table 데이터 μΆ”κ°€

INSERT INTO ν…Œμ΄λΈ”λͺ… (컬럼1,컬럼2 ...) VALUES (κ°’1, κ°’2 ...)
  1. Table 데이터 확인

# λͺ¨λ“  데이터 확인
SELECT * FROM ν…Œμ΄λΈ”λͺ…;

# ν•΄λ‹Ήν•˜λŠ” 컬럼 λ°μ΄ν„°λ§Œ 확인
SELECT (컬럼λͺ…) FROM ν…Œμ΄λΈ”λͺ…;
  1. Table 데이터 μ •λ ¬ (row μ •λ ¬)

# DESC : λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬
SELECT * FROM ν…Œμ΄λΈ”λͺ… ORDER BY 컬럼λͺ… DESC; 

# ASC : μ˜€λ¦„μ°¨μˆœ μ •λ ¬
SELECT * FROM ν…Œμ΄λΈ”λͺ… ORDER BY 컬럼λͺ… ASC;
  1. Table 데이터 μˆ˜μ •

UPDATE ν…Œμ΄λΈ”λͺ… SET detail='λ‚΄μš©' WHERE id=1;
  1. Table 이름 λ³€κ²½

RENAME TABLE ν…Œμ΄λΈ”λͺ… TO μƒˆλ‘œμš΄ν…Œμ΄λΈ”λͺ…;
  1. Table 데이터 μ‚­μ œ

DELETE FROM ν…Œμ΄λΈ”λͺ… WHERE id=1;
  1. Table μ‚­μ œ

DROP TABLE ν…Œμ΄λΈ”λͺ…;

Last updated