DB Basics
Database
Database๋ ์ฌ๋ฌ ์ฌ๋์ด ๊ณต์ ํ์ฌ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ฒด๊ณํํด ํตํฉ, ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ์ ์งํฉ์ด๋ค.
DBMS (Database Management System)
RDBMS
๊ด๊ณํ ๋ชจ๋ธ ๊ธฐ๋ฐ databse ๊ด๋ฆฌ ์์คํ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค (RDBMS)
๊ด๊ณ๋ฅผ ์ด๊ณผ ํ์ผ๋ก ์ด๋ฃจ์ด์ง ํ ์ด๋ธ ์งํฉ์ผ๋ก ๊ตฌ์ฑ
๊ฐ ์ด์ ํน์ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ก
ํ ์ด๋ธ์ ํ์ ๊ฐ ๊ฐ์ฒด/entity์ ๊ด๋ จ๋ ๊ฐ์ ๋ชจ์
RDBMS vs NOSQL

๊ธฐ๋ณธ ์ฉ์ด
Schema
Database์์ ์๋ฃ์ ๊ตฌ์กฐ์ ์ ์ฝ์กฐ๊ฑด (๊ตฌ์กฐ, ํํ ๋ฐฉ๋ฒ, ๊ด๊ณ ๋ฑ)์ ๊ดํ ์ ๋ฐ์ ์ธ ๋ช ์ธ
Table (๊ด๊ณ)
์ด๊ณผ ํ์ ๋ชจ๋ธ์ ์ฌ์ฉํด ์กฐ์๋ ๋ฐ์ดํฐ ์์๋ค์ ์งํฉ
PK
๊ฐํ์ ๊ณ ์ ๊ฐ์ผ๋ก ์ ์ฅ๋ ๋ ์ฝ๋๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ ์ ์๋ ๊ฐ
SQL (Structured Query Language)
RDBMS์ data๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ํน์ํ๊ฒ ์ค๊ณ๋ ์ธ์ด

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
)
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?