Home > SQL > 2024 > πŸ’Ύ[Database] SQL 쿼리.

πŸ’Ύ[Database] SQL 쿼리.
Database

πŸ’Ύ[Database] SQL 쿼리 - μŠ€ν‚€λ§ˆ μ‚­μ œ, ν…Œμ΄λΈ” 생성.쑰회.μˆ˜μ •

1️⃣ μŠ€ν‚€λ§ˆ μ‚­μ œ.

  • MySQLμ—μ„œ μŠ€ν‚€λ§ˆ(schema) λ˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€(database) λ₯Ό μ‚­μ œν•˜λŠ” 방법은 맀우 κ°„λ‹¨ν•©λ‹ˆλ‹€.
  • μŠ€ν‚€λ§ˆμ™€ λ°μ΄ν„°λ² μ΄μŠ€λŠ” 사싀상 같은 κ°œλ…μœΌλ‘œ μ·¨κΈ‰λ˜λ©°, MySQLμ—μ„œλŠ” 주둜 β€œλ°μ΄ν„°λ² μ΄μŠ€β€ λΌλŠ” μš©μ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • μŠ€ν‚€λ§ˆλ₯Ό μ‚­μ œν•˜κΈ° μœ„ν•΄μ„œλŠ” DROP DATABASE λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • 이 λͺ…λ Ήμ–΄λŠ” μ§€μ •ν•œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ™„μ „νžˆ μ‚­μ œν•˜λ©°, ν•΄λ‹Ή λ°μ΄ν„°λ² μ΄μŠ€ μ•ˆμ˜ λͺ¨λ“  ν…Œμ΄λΈ”κ³Ό 데이터도 ν•¨κ»˜ μ‚­μ œλ©λ‹ˆλ‹€.

μŠ€ν‚€λ§ˆ(λ°μ΄ν„°λ² μ΄μŠ€) μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄

DROP DATABASE database_name;
  • μ—¬κΈ°μ„œ database_name은 μ‚­μ œν•˜λ €λŠ” λ°μ΄ν„°λ² μ΄μŠ€(μŠ€ν‚€λ§ˆ)의 μ΄λ¦„μž…λ‹ˆλ‹€.

μ˜ˆμ‹œ.

DROP DATABASE mydatabase;
  • μœ„ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ mydatabase λΌλŠ” μ΄λ¦„μ˜ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‚­μ œλ©λ‹ˆλ‹€.

μ‚­μ œ 전에 μ£Όμ˜ν•  점.

  • 1. λ°±μ—…
    • λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‚­μ œλ˜λ©΄ κ·Έ μ•ˆμ— μžˆλŠ” λͺ¨λ“  데이터가 영ꡬ적으둜 μ‚¬λΌμ§‘λ‹ˆλ‹€.
    • ν•„μš”ν•œ 데이터가 μžˆλ‹€λ©΄ λ¨Όμ € 백업을 ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
  • 2. 쑴재 μ—¬λΆ€ 확인
    • λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ„ 경우 μ—λŸ¬κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€κ°€ μ‘΄μž¬ν•˜λŠ” κ²½μš°μ—λ§Œ μ‚­μ œν•˜λŠ” λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
      DROP DATABASE IF EXISTS mydatabase;
      
  • 이 λͺ…λ Ήμ–΄λŠ” mydatabaseκ°€ μ‘΄μž¬ν•  κ²½μš°μ—λ§Œ μ‚­μ œν•˜κ³ , μ‘΄μž¬ν•˜μ§€ μ•Šμ„ κ²½μš°μ—λŠ” 아무 μž‘μ—…λ„ ν•˜μ§€ μ•ŠμœΌλ©° μ—λŸ¬ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

MySQLμ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ 확인 및 μ‚­μ œ κ³Όμ •.

  • 1. ν˜„μž¬ λ°μ΄ν„°λ² μ΄μŠ€ λͺ©λ‘ 확인
    • λ°μ΄ν„°λ² μ΄μŠ€ λͺ©λ‘μ„ ν™•μΈν•˜λ €λ©΄ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
      SHOW DATABASES;
      
  • 2. λ°μ΄ν„°λ² μ΄μŠ€ μ‚­μ œ
    • 데이터 베이슀 이름을 ν™•μΈν•œ ν›„, DROP DATABASE λͺ…령을 μ‚¬μš©ν•˜μ—¬ μ‚­μ œν•©λ‹ˆλ‹€.
  • 3. μ‚­μ œ 확인
    • λ‹€μ‹œ λ°μ΄ν„°λ² μ΄μŠ€ λͺ©λ‘μ„ ν™•μΈν•˜μ—¬ μ‚­μ œλœ λ°μ΄ν„°λ² μ΄μŠ€κ°€ λͺ©λ‘μ— μ—†λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
      SHOW DATABASES;
      
  • μœ„ κ³Όμ •μœΌλ‘œ MySQLμ—μ„œ μ•ˆμ „ν•˜κ²Œ μŠ€ν‚€λ§ˆ(λ°μ΄ν„°λ² μ΄μŠ€)λ₯Ό μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2️⃣ ν…Œμ΄λΈ” 생성.

  • MySQLμ—μ„œ shopdb λΌλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ•ˆμ— memberTBLμ΄λΌλŠ” ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

1. MySQLμ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ 선택.

  • λ¨Όμ € shopdb λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  • MySQLμ—μ„œ μž‘μ—…ν•  λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„ νƒν•˜λ €λ©΄ USE λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.
USE shopdb;
  • 이 λͺ…령을 μ‹€ν–‰ν•˜λ©΄ MySQL은 shopdb λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜μ—¬ μ΄ν›„μ˜ λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

2. memberTBL ν…Œμ΄λΈ” 생성.

  • memberTBL ν…Œμ΄λΈ”μ„ λ§Œλ“€κΈ° μœ„ν•΄ CREATE TABLE λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν…Œμ΄λΈ”μ€ λ‹€μ–‘ν•œ 컬럼(ν•„λ“œ)둜 κ΅¬μ„±λ˜λ©°, 각 μ»¬λŸΌμ€ 이름과 μžλ£Œν˜•μ„ κ°€μ§‘λ‹ˆλ‹€.
  • μ˜ˆμ‹œλ‘œ, νšŒμ› 정보λ₯Ό μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”μ„ λ§Œλ“€μ–΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.
    • 이 ν…Œμ΄λΈ”μ€ νšŒμ›μ˜ ID, 이름, 이메일, κ°€μž…μΌ 등을 μ €μž₯ν•œλ‹€κ³  κ°€μ •ν•˜κ² μŠ΅λ‹ˆλ‹€.
CREATE TABLE memberTBL (
    memberID INT AUTO_INCREMENT PRIMARY KEY, -- νšŒμ› ID(μžλ™ 증가)
    memberName VARCHAR(50) NOT NULL, -- νšŒμ› 이름
    memberEmail VARCHAR(100), -- νšŒμ› 이메일
    joinDate DATE -- κ°€μž… λ‚ μ§œ
);

ν…Œμ΄λΈ” 생성 μ½”λ“œ μ„€λͺ…

  • memberID INT AUTO_INCREMENT PRIMARY KEY
    • νšŒμ› IDλŠ” μ •μˆ˜ν˜•(INT)이고, μžλ™μœΌλ‘œ μ¦κ°€ν•˜λŠ” κ°’(AUTO_INCREMENT)μž…λ‹ˆλ‹€.
    • λ˜ν•œ, κΈ°λ³Έ ν‚€(PRIMARY KEY)둜 μ„€μ •λ˜μ–΄ 각 νšŒμ›μ΄ κ³ μœ ν•œ 값을 κ°€μ§‘λ‹ˆλ‹€.
  • memberName VARCHAR(50) NOT NULL
    • νšŒμ› 이름은 μ΅œλŒ€ 50자 λ¬Έμžμ—΄(VARCHAR)둜 μ €μž₯되며, λΉ„μ–΄μžˆμ„ 수 μ—†μŠ΅λ‹ˆλ‹€(NOT NULL).
  • memberEmail VARCHAR(100)
    • νšŒμ› 이메일은 μ΅œλŒ€ 100자의 λ¬Έμžμ—΄λ‘œ μ €μž₯λ©λ‹ˆλ‹€.
    • ν•„μˆ˜ μž…λ ₯은 μ•„λ‹™λ‹ˆλ‹€.
  • joinDate DATE
    • κ°€μž… λ‚ μ§œλŠ” DATE ν˜•μ‹μœΌλ‘œ μ €μž₯λ©λ‹ˆλ‹€.

3. ν…Œμ΄λΈ” 확인.

  • ν…Œμ΄λΈ”μ΄ μ •μƒμ μœΌλ‘œ μƒμ„±λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λ €λ©΄ SHOW TABLES λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.
SHOW TABLES;
  • memberTBL이 λͺ©λ‘μ— λ‚˜νƒ€λ‚˜λ©΄ ν…Œμ΄λΈ”μ΄ μ„±κ³΅μ μœΌλ‘œ μƒμ„±λœ κ²ƒμž…λ‹ˆλ‹€.

4. ν…Œμ΄λΈ” ꡬ쑰 확인.

  • ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό ν™•μΈν•˜λ €λ©΄ DESCRIBE λͺ…령을 μ‚¬μš©ν•©λ‹ˆλ‹€.
DESCRIBE memberTBL;
  • 이 λͺ…λ Ήμ–΄λŠ” ν…Œμ΄λΈ”μ˜ 각 컬럼 이름, 데이터 νƒ€μž…, κΈ°λ³Έκ°’, 인덱슀 등을 λ³΄μ—¬μ€λ‹ˆλ‹€.

5. κ²°λ‘ .

  • μœ„ 과정을 톡해 MySQLμ—μ„œ shopdbλΌλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ— memberTBLμ΄λΌλŠ” ν…Œμ΄λΈ”μ„ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
  • ν…Œμ΄λΈ” κ΅¬μ‘°λŠ” ν•„μš”μ— 따라 μˆ˜μ •ν•  수 있으며, 각 ν•„λ“œλŠ” μ›ν•˜λŠ” 데이터 νƒ€μž…κ³Ό μ œμ•½ 쑰건을 μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3️⃣ ν…Œμ΄λΈ” 쑰회.

  • MySQLμ—μ„œ ν…Œμ΄λΈ” λ‚΄λΆ€μ˜ 데이터λ₯Ό μ‘°νšŒν•˜λ €λ©΄ SELECT 문을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • SELECT 문은 ν…Œμ΄λΈ”μ— μ €μž₯된 데이터λ₯Ό κ²€μƒ‰ν•˜μ—¬ 좜λ ₯ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

1. ν…Œμ΄λΈ”μ˜ λͺ¨λ“  데이터λ₯Ό μ‘°νšŒν•˜λŠ” 방법.

  • memberTBL ν…Œμ΄λΈ”μ˜ λͺ¨λ“  데이터λ₯Ό ν™•μΈν•˜λ €λ©΄ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
SELECT * FROM memberTBL;
  • 이 λͺ…λ Ήμ–΄λŠ” memberTBL ν…Œμ΄λΈ”μ— μžˆλŠ” λͺ¨λ“  ν–‰(Row)κ³Ό μ—΄(Column)을 κ°€μ Έμ˜΅λ‹ˆλ‹€.

2. νŠΉμ • 컬럼(Column,μ—΄)만 μ‘°νšŒν•˜λŠ” 방법.

  • νŠΉμ • 컬럼(Column, μ—΄)만 μ‘°νšŒν•˜κ³  μ‹Άλ‹€λ©΄ μ—΄ 이름을 μ§€μ •ν•˜μ—¬ SELECT 문을 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
SELECT memberID, memberName FROM memberTBL;
  • μœ„ λͺ…λ Ήμ–΄λŠ” memberID와 memberName μ»¬λŸΌμ— ν•΄λ‹Ήν•˜λŠ” κ°’λ“€λ§Œ 좜λ ₯ν•©λ‹ˆλ‹€.

3. 쑰건에 λ§žλŠ” 데이터λ₯Ό μ‘°νšŒν•˜λŠ” 방법.

  • νŠΉμ • 쑰건에 λ§žλŠ” λ°μ΄ν„°λ§Œ μ‘°νšŒν•˜κ³  싢을 λ•ŒλŠ” WHERE μ ˆμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
  • 예λ₯Ό λ“€μ–΄, memberID κ°€ β€˜user01’인 데이터λ₯Ό μ‘°νšŒν•˜λ €λ©΄ μ•„λž˜μ™€ 같이 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
SELECT * FROM memberTBL WHERE memberID = 'user01';

4. ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό ν™•μΈν•˜λŠ” 방법.

  • ν…Œμ΄λΈ”μ˜ ꡬ쑰(μ—΄ 이름, 데이터 νƒ€μž… λ“±)λ₯Ό ν™•μΈν•˜λ €λ©΄ DESCRIBE λ˜λŠ” SHOW COLUMNS λͺ…령을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
DESCRIBE memberTBL;

λ˜λŠ”

SHOW COLUMNS FROM memberTBL;
  • 이 λͺ…령어듀은 ν…Œμ΄λΈ”μ˜ 각 열에 λŒ€ν•œ 정보(μ—΄ 이름, 데이터 νƒ€μž…, NULL ν—ˆμš© μ—¬λΆ€ λ“±)λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.
  • 이 λͺ…령어듀을 톡해 memberTBL ν…Œμ΄λΈ”μ— μ €μž₯된 데이터λ₯Ό μ‰½κ²Œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

4️⃣ ν…Œμ΄λΈ” μˆ˜μ •.

  • 이미 μƒμ„±λœ ν…Œμ΄λΈ”μ—μ„œ memberIDλ₯Ό κΈ°λ³Έ ν‚€(Primary Key)둜 μ„€μ •ν•˜λ €λ©΄ ALTER TABLE λͺ…령을 μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ”μ„ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ•„λž˜μ˜ SQL λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ memberIDλ₯Ό κΈ°λ³Έ ν‚€λ‘œ μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

1. ALTER TABLE을 μ‚¬μš©ν•˜μ—¬ Primary Key μΆ”κ°€.

ALTER TABLE memberTBL
ADD PRIMARY KEY (memberID);
  • 이 λͺ…λ Ήμ–΄λŠ” 기쑴의 memberTBL ν…Œμ΄λΈ”μ—μ„œ memberID μ»¬λŸΌμ„ κΈ°λ³Έ ν‚€λ‘œ μ„€μ •ν•©λ‹ˆλ‹€.

2. ν…Œμ΄λΈ” ꡬ쑰 확인

  • DESCRIBE λͺ…령을 μ‚¬μš©ν•˜μ—¬ ν…Œμ΄λΈ” ꡬ쑰λ₯Ό ν™•μΈν•˜κ³  memberIDκ°€ κΈ°λ³Έ ν‚€λ‘œ μ„€μ •λ˜μ—ˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
    DESCRIBE memberTBL;
    

3. 주의 사항.

  • memberID μ»¬λŸΌμ— μ€‘λ³΅λœ 값이 μ—†μ–΄μ•Ό ν•˜λ©°, NULL 값도 μ—†μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • κΈ°λ³Έ ν‚€λŠ” κ³ μœ ν•΄μ•Ό ν•˜λ―€λ‘œ μ€‘λ³΅λœ κ°’μ΄λ‚˜ NULL 값이 μ‘΄μž¬ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ§Œμ•½ ν…Œμ΄λΈ”μ— 이미 μ€‘λ³΅λœ 값이 μžˆκ±°λ‚˜ NULL이 ν¬ν•¨λœ 경우, κΈ°λ³Έ ν‚€λ₯Ό μΆ”κ°€ν•˜κΈ° 전에 데이터λ₯Ό 정리해야 ν•©λ‹ˆλ‹€.

4. μΆ”κ°€ μ˜ˆμ‹œ : μƒˆλ‘œμš΄ ν…Œμ΄λΈ”μ—μ„œ Primary Key 지정

  • λ§Œμ•½ ν…Œμ΄λΈ”μ„ μ²˜μŒλΆ€ν„° μƒμ„±ν•˜λ©΄μ„œ memberIDλ₯Ό κΈ°λ³Έ ν‚€λ‘œ μ„€μ •ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
CREATE TABLE memberTBL (
    memberID CHAR(8) NOT NULL PRIMARY KEY, -- 8κΈ€μž, κΈ°λ³Έν‚€
    memberName CHAR(5) NOT NULL, -- 5κΈ€μž, NULL ν—ˆμš© μ•ˆ 함
    memberAddress CHAR(20) NULL -- 20κΈ€μž, NULL ν—ˆμš©
);
  • μ΄λ ‡κ²Œ ν•˜λ©΄ ν…Œμ΄λΈ”μ„ 생성할 λ•Œ memberIDκ°€ κΈ°λ³Έ ν‚€λ‘œ μ„€μ •λ©λ‹ˆλ‹€.