DB Basics

Database

Database๋Š” ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์ฒด๊ณ„ํ™”ํ•ด ํ†ตํ•ฉ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ด๋‹ค.

DBMS (Database Management System)

  • RDBMS

    • ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ ๊ธฐ๋ฐ˜ databse ๊ด€๋ฆฌ ์‹œ์Šคํ…œ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (RDBMS)

  • ๊ด€๊ณ„๋ฅผ ์—ด๊ณผ ํ–‰์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ํ…Œ์ด๋ธ” ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ

  • ๊ฐ ์—ด์— ํŠน์ • ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ก

  • ํ…Œ์ด๋ธ”์˜ ํ–‰์€ ๊ฐ ๊ฐ์ฒด/entity์™€ ๊ด€๋ จ๋œ ๊ฐ’์˜ ๋ชจ์Œ

RDBMS vs NOSQL

Difference between SQL and NOSQL

๊ธฐ๋ณธ ์šฉ์–ด

Schema

  • Database์—์„œ ์ž๋ฃŒ์˜ ๊ตฌ์กฐ์™€ ์ œ์•ฝ์กฐ๊ฑด (๊ตฌ์กฐ, ํ‘œํ˜„ ๋ฐฉ๋ฒ•, ๊ด€๊ณ„ ๋“ฑ)์— ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ๋ช…์„ธ

Table (๊ด€๊ณ„)

  • ์—ด๊ณผ ํ–‰์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ์กฐ์ž‘๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ๋“ค์˜ ์ง‘ํ•ฉ

PK

  • ๊ฐํ–‰์˜ ๊ณ ์œ ๊ฐ’์œผ๋กœ ์ €์žฅ๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’

SQL (Structured Query Language)

RDBMS์˜ data๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ˆ˜ํ•˜๊ฒŒ ์„ค๊ณ„๋œ ์–ธ์–ด

DBMS SQL command

Table ์ƒ์„ฑ

CREATE TABLE table (
 column1 datatype [constraints],
 column2 datatype [constaraints],
);

ex)

CREATE TABLE contacts (
 contact_id INTEGER PRIMARY KEY,
 first_name TEXT NOT NULL,
 last_name TEXT NOT NULL,
 email TEXT NOT NULL UNIQUE,
 phone TEXT NOT NULL UNIQUE
);

Rename Table

ALTER TABLE table_name
 RENAME TO new_table_name;

Data Types (in SQLite)

All About Data Types In sqlite

SELECT

  • DISTINCT

    • ์ค‘๋ณต์—†์ด ๊ฐ€์ ธ์˜ค๊ธฐ

      sqlite> SELECT DISTINCT waypoint FROM flights;
      
      waypoint  
      ----------
      Beijing   
      Moscow    
      Beijing  
  • COUNT()

    • ํŠน์ • ๊ฐœ์ˆ˜ ๊ฐ€์ ธ์˜ค๊ธฐ

  • LIKE

    • ์™€์ผ๋“œ ์นด๋“œ

      • % : ๋ฌธ์ž์—ด์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค

      • _ : ๋ฐ˜๋“œ์‹œ ํ•œ ๊ฐœ์˜ ๋ฌธ์ž๊ฐ€ ์žˆ๋‹ค

  • LIMIT ... OFFSET

    • ๊ฐœ์ˆ˜ ์ œํ•œ .... ๋ช‡ ๋ฒˆ์งธ๊นŒ์ง€

    • ex)

      -- ์ฒ˜์Œ 10๊ฐœ์˜ Row๋ฅผ ๋ฐ˜ํ™˜
      SELECT * FROM test LIMIT 10;
      -- ์œ„ SQL๊ณผ ์•„๋ž˜์˜ SQL์€ ๊ฐ™์€ ๊ฒฐ๊ณผ
      SELECT * FROM test LIMIT 10 OFFSET 0;
       
      -- 11๋ฒˆ์งธ ๋ถ€ํ„ฐ 10๊ฐœ์˜ Row๋ฅผ ๋ฐ˜ํ™˜.
      SELECT * FROM test LIMIT 10 OFFSET 10;

.schema ____

CREATE

sqlite> CREATE TABLE flights(
   ...> id INTEGER PRIMARY KEY AUTOINCREMENT,
   ...> flight_num TEXT NOT NULL,
   ...> departure TEXT NOT NULL,
   ...> waypoint TEXT NOT NULL,
   ...> arrival TEXT NOT NULL,
   ...> price INTEGER NOT NULL
   ...> );

IF NOT EXISTS

  • ํ•ด๋‹น table์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ์—๋งŒ ์ƒ์„ฑํ•˜๊ธฐ

sqlite> CREATE TABLE IF NOT EXISTS flights(
   ...> id INTEGER PRIMARY KEY AUTOINCREMENT,
   ...> flight_num TEXT NOT NULL,
   ...> departure TEXT NOT NULL,
   ...> waypoint TEXT NOT NULL,
   ...> arrival TEXT NOT NULL,
   ...> price INTEGER NOT NULL
   ...> );

Table ์กฐํšŒ

sqlite> .tables

INSERT

lite> INSERT INTO flights(flight_num, departure, waypoint, arrival, price) VALUES('RT9122', 'Madrid', 'Beijing', 'Incheon', 200);

id          flight_num  departure   waypoint    arrival     price     
----------  ----------  ----------  ----------  ----------  ----------
1           RT9122      Madrid      Beijing     Incheon     200    

UPDATE

sqlite> UPDATE flights SET waypoint = 'Tokyo' WHERE flight_num = 'SQ0972';

DELETE

sqlite> DROP TABLE flights;

sqlite> .tables
sqlite> select*from flights;
Error: no such table: flights

Select exercise

1. flights ํ…Œ์ด๋ธ” ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์‹œ์˜ค

sqlite> SELECT * FROM flights;

id          flight_num  departure   waypoint    arrival     price     
----------  ----------  ----------  ----------  ----------  ----------
1           RT9122      Madrid      Beijing     Incheon     200       
2           XZ0352      LA          Moscow      Incheon     800       
3           SQ0972      London      Beijing     Sydney      500 

2. ๋ชจ๋“  waypoint๋ฅผ ์กฐํšŒํ•˜์‹œ์˜ค

sqlite> SELECT waypoint FROM flights;

waypoint  
----------
Beijing   
Moscow    
Beijing   

3. ํ•ญ๊ณต๊ถŒ ๊ฐ€๊ฒฉ์ด 600 ๋ฏธ๋งŒ์ธ ํ•ญ๊ณตํŽธ๋“ค์˜ id์™€ flight_num์„ ์กฐํšŒํ•˜์‹œ์˜ค

sqlite> SELECT id, flight_num from flights WHERE price<600;

id          flight_num
----------  ----------
1           RT9122    
3           SQ0972   

4. ๋„์ฐฉ์ง€๊ฐ€ Incheon์ด๊ณ  ๊ฐ€๊ฒฉ์ด 500 ์ด์ƒ์ธ ํ•ญ๊ณตํŽธ์˜ departure๋ฅผ ์กฐํšŒํ•˜์‹œ์˜ค

sqlite> SELECT departure FROM flights WHERE arrival = 'Incheon' AND 500 <= price;

departure 
----------
LA    

5. ํ•ญ๊ณตํŽธ์˜ ์ˆซ์ž๋ถ€๋ถ„์ด 0์œผ๋กœ ์‹œ์ž‘ํ•˜๊ณ  2๋กœ ๋๋‚˜๋ฉด์„œ ๊ฒฝ์œ ์ง€๊ฐ€ Beijing์ธ ํ•ญ๊ณตํŽธ๋“ค์˜ id์™€ flight_num์„ ์กฐํšŒํ•˜์‹œ์˜ค

ver 1

sqlite> SELECT id, flight_num FROM flights where waypoint = 'Beijing' AND flight_num LIKE '__0__2';

id          flight_num
----------  ----------
3           SQ0972 

ver 2

sqlite> SELECT id, flight_num FROM flights where waypoint = 'Beijing' AND flight_num LIKE '__0%2';

id          flight_num
----------  ----------
3           SQ0972 

ver 2

sqlite> SELECT id, flight_num FROM flights where waypoint = 'Beijing' AND flight_num LIKE '%0%2';

id          flight_num
----------  ----------
3           SQ0972    

.read

sqlite> .read hello_user.sql
1,"์ •ํ˜ธ","์œ ",40,"์ „๋ผ๋ถ๋„",016-7280-2855,370
2,"๊ฒฝํฌ","์ด",36,"๊ฒฝ์ƒ๋‚จ๋„",011-9854-5133,5900
3,"์ •์ž","๊ตฌ",37,"์ „๋ผ๋‚จ๋„",011-4177-8170,3100
4,"๋ฏธ๊ฒฝ","์žฅ",40,"์ถฉ์ฒญ๋‚จ๋„",011-9079-4419,250000
5,"์˜ํ™˜","์ฐจ",30,"์ถฉ์ฒญ๋ถ๋„",011-2921-4284,220
6,"์„œ์ค€","์ด",26,"์ถฉ์ฒญ๋ถ๋„",02-8601-7361,530
7,"์ฃผ์›","๋ฏผ",18,"๊ฒฝ๊ธฐ๋„",011-2525-1976,390
8,"์˜ˆ์ง„","๊น€",33,"์ถฉ์ฒญ๋ถ๋„",010-5123-9107,3700
9,"์„œํ˜„","๊น€",23,"์ œ์ฃผํŠน๋ณ„์ž์น˜๋„",016-6839-1106,43000
10,"์„œ์œค","์˜ค",22,"์ถฉ์ฒญ๋‚จ๋„",011-9693-6452,49000

+

CLI์—์„œ ์˜ˆ์˜๊ฒŒ ๋ณด๊ธฐ

sqlite> .headers on
sqlite> .mode column

Last updated

Was this helpful?