ํ ์กฐ์ง์ ํ์ํ ์ ๋ณด๋ฅผ ์ฌ๋ฌ ์์ฉ ์์คํ ์์ ๊ณต์ฉํ ์ ์๋๋ก ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๊ณ , ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ์ต์ํํ์ฌ ๊ตฌ์กฐ์ ์ผ๋ก ํตํฉ/์ ์ฅํด ๋์ ๊ฒ์ด๋ค.
Database๋ฅผ ์ฌ์ฉํ๊ธฐ ํธํ๊ฒ ๋ง๋ ์์คํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถ,์กฐ์,์ ์,์ ์ด ํ ์ ์๊ฒํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฉ ๊ด๋ฆฌ ํ๋ก๊ทธ๋จ
- DBMS ์ข
๋ฅ
1. SQL Server
2. Oracle
3. MySQL
4. MariaDB
5. DB2
6. SQLite
Atomicity(์์์ฑ)
: ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ์ฐ์ฐ์ ํ๋์ ๋จ์๋ก ๊ฐ์ฃผ๋์ด์ผ ํ๋ค. ํธ๋์ญ์ ์ ๋ชจ๋ ์คํ๋๊ฑฐ๋, ์ ํ ์คํ๋์ง ์์์ผ ํ๋ค.
Consistency(์ผ๊ด์ฑ)
: ํธ๋์ญ์ ์ ์คํ์ด ์๋ฃ๋๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ค. (๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ๋ง์กฑํจ์ ๋ณด์ฆ)
Isolation(๊ณ ๋ฆฝ์ฑ)
: ๋์์ ์คํ๋๋ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์๋ก ์ํฅ์ ์ฃผ์ง ์๋๋ก ๊ด๋ฆฌํด์ ๋์์ฑ์ ๊ด๋ฆฌํด์ผ ํ๋ค. ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋ ๋, ๊ฐ๊ฐ์ ํธ๋์ญ์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์ผ ํ๋ค.
Durability(์ง์์ฑ)
: ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ์์คํ ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผํ๋ค.(์ปค๋ฐ ๋๋ฉด ์์ ํ๊ฒ ์ ์ฅ๋จ์ ๋ณด์ฆ)

์คํ์์ค์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)๋ก MySQL์ fork๋ก ์์๋์ด MySQL๊ณผ API(Application Programming Interface) ๋ฐ ABI(Application Binary Interface) ํธํ์ฑ์ ์ ์งํ๋ฉด์๋ ๋ ์์ ์ธ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ฌํญ์ ์ถ๊ฐํด ๋๊ฐ๊ณ ์๋ค.
ip ์ฃผ์
192.168.0.38
ํฌํธ๋ ํน์ ํ๋ก๊ทธ๋จ์ ์ง์นญํ๋ค
mySQL, MariaDB ๋ ๋ค 3306
๋ฐ๋ผ์ mySQL์ด ์ด๋ฏธ ์์ผ๋ฉด MariaDB๋ 3307๋ก
์์ฃผ ์ฐ์ด๋ ํฌํธ ์์
8080 โ ์น ์๋ฒ์์ ์์ฃผ ์ฐ๋ ํฌํธ
์๋ HTTP ๊ธฐ๋ณธ ํฌํธ๋ 80๋ฒ์ธ๋ฐ, ์ด๋ฏธ ๋ค๋ฅธ ๊ณณ์์ ์ฐ๊ณ ์๊ฑฐ๋ ๊ฐ๋ฐ์ฉ ์๋ฒ๋ฅผ ๋์ธ ๋ ๋ณดํต 8080์ ๋ง์ด ์ฌ์ฉ.
์: http://localhost:8080 โ ๋ด PC์์ ์คํ ์ค์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์.
3306 โ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ๊ธฐ๋ณธ ํฌํธ
ํด๋ผ์ด์ธํธ(phpMyAdmin, ์ ํ๋ฆฌ์ผ์ด์
๋ฑ)๊ฐ MySQL DB์ ํต์ ํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 3306 ํฌํธ๋ฅผ ์ฌ์ฉ.
์: mysql -h 127.0.0.1 -P 3306 -u root -p โ ๋ก์ปฌ MySQL ์ ์
IP:8080 โ ์น ์ ํ๋ฆฌ์ผ์ด์ (๊ฐ๋ฐ์ฉ ์๋ฒ ๋ฑ)์ ์ ์
IP:3306 โ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์

mariadb -u root -p
์๋ก์ด swcamp ๊ณ์ ๋ง๋ค๊ธฐ
CREATE USER 'swcamp'@'%' IDENTIFIED BY 'swcamp';
-> 'localhost' ๋์ '%'๋ฅผ ์ฐ๋ฉด ์ธ๋ถ ip๋ก ์ ์ ๊ฐ๋ฅํ๋ค. ์ด๋์๋ (๋ชจ๋ ์ธ๋ถ IP) ์ ์ ๊ฐ๋ฅ.
%๋ '์ด๋๊ณณ์์๋ ์ ์ํ ๊ฒ์'๋ผ๋ ๋ป ('swcamp'@'localhost' ์ค์ง ๋ก์ปฌ ๋จธ์ (์๋ฒ ์๊ธฐ ์์ ) ์์๋ง ์ ์ ๊ฐ๋ฅ
ํ์ฌ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ธ
SHOW DATABASES;
mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ณ์ ์ ๋ณด ํ์ธํ๊ธฐ
USE mysql; (mysql database๋ ๊ธฐ๋ณธ ์ ์ผ๋ก ์ ๊ณต๋จ)
mysql database์์ user๋ฅผ ํ์ธํด ๊ณ์ ์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธ
SELECT * FROM user;
๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง) ์์ฑ
CREATE DATABASE menudb;
MySQL ๋๋ MariaDB๋ ๊ฐ๋
์ ์ผ๋ก database์ schema๋ฅผ ๊ตฌ๋ถํ์ง ์์(CREATE DATABASE = CREATE SCHEMA)
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ ์๋ฃ ํ์ธ
SHOW DATABASES;
swcamp ๊ณ์ ์ ๊ถํ ํ์ธํ๊ธฐ
SHOW GRANTS FOR 'swcamp'@'%';
์ผ์ชฝ Navigator๋ฅผ ์๋ก๊ณ ์นจํด์ menudb database(schema)๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ๋ค.
menu์ ๋ํ ๋ชจ๋ ๊ถํ ๋ถ์ฌ
GRANT ALL PRIVILEGES ON menudb.* TO 'swcamp'@'%';
swcamp ๊ณ์ ์ ๋ฐ๋ ๊ถํ ํ์ธํ๊ธฐ
SHOW GRANTS FOR 'swcamp'@'%';
์๋ก์ด ์ ์๊ธฐ ์์ฑ ํ ์ ์ํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ฉํ๊ธฐ
-- ์ข์ธก ์๋จ์ 'ํ์ผ' ๋ฒํผ์ ๋๋ฌ '์ธ์
๊ด๋ฆฌ์'์์ '์ ๊ท'๋ก swcamp ๊ณ์ ์ ์๊ธฐ๋ฅผ ๋ง๋ค์ด
-- ์ ์ํ๊ณ database(schema)๋ฅผ ์ฌ์ฉํ๋ค.
-- ์ ์๊ธฐ์ Connection Name์ 'SWCAMP'๋ก ์ง์
-- Parameters์ Username์ 'swcamp'๋ก ์ง์ (๊ณ์ ๋ช
)
-- Default Schema(๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง) ์ค์ )๋ 'menudb'๋ก ์ง์ USE menudb;
๋
ผ๋ฆฌ ๋ชจ๋ธ
๋ฌผ๋ฆฌ ๋ชจ๋ธ
COMMIT; ํด์ค์ผ ๋ฑ ๋๋จ. ์ํ๋ฉด ๋๊ธฐ์ํ๋ก ๊ณ์ ์ ์ง๋จ.
ํน์ ํ ์ด๋ธ์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ ๊ฐ์ ธ์ค๋๋ฐ ์ฌ์ฉ๋จ
SELECT
menu_price >> 2๋ฒ
FROM >> 1๋ฒ
SELECT ์ฌ์น์ฐ์ฐ
select๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉฐ result set์ ์ ๋ ฌํ๋ ๋ฐ ์ฌ์ฉํ๋ค
SELECT
menu_code
, menu_name
, menu_price
FROM tbl_menu
ORDER BY menu_price DESC;
SELECT
menu_code
, menu_name
, menu_price
FROM tbl_menu
ORDER BY menu_price DESC, menu_name ASC;
>>price๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ํ, ๊ฐ์ price ๋ด์์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ