DATABASE_Basic
π DB ( DataBase )
π Basic
DB ( DataBase ) λ 무μμΈκ° ?
λ°μ΄ν°λ² μ΄μ€ ( DB : database ) λ ν΅ν©νμ¬ κ΄λ¦¬λλ λ°μ΄ν°μ μ§ν©μ²΄λ₯Ό μλ―Ένλ€.
μ€λ³΅λ λ°μ΄ν°λ₯Ό μμ κ³ , μλ£λ₯Ό ꡬ쑰ννμ¬ ν¨μ¨μ μΈ μ²λ¦¬λ₯Ό ν μ μλλ‘ κ΄λ¦¬λλ€.
κ·Έλμ μ¬λ¬ μ
무μ μ¬λ¬ μ¬μ©μκ° λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν μ μλ€.
DB ( DataBase ) μ νΉμ§
- μ¬μ©μ μ§μμ λνμ¬ μ¦κ°μ μΈ μ²λ¦¬μ μλ΅μ΄ μ΄λ£¨μ΄μ§λ€.
- μμ±, μμ , μμ λ₯Ό ν΅νμ¬ νμ μ΅μ μ λ°μ΄ν°λ₯Ό μ μ§νλ€.
- μ¬μ©μλ€μ΄ μνλ λ°μ΄ν°λ₯Ό λμμ 곡μ ν μ μλ€.
- μ¬μ©μκ° μνλ λ°μ΄ν°λ₯Ό μ£Όμκ° μλλ΄μ©μ λ°λΌ μ°Έμ‘°ν μ μλ€.
- μμ©νλ‘κ·Έλ¨κ³Ό λ°μ΄ν°λ² μ΄μ€λ λ
립λμ΄ μμΌλ―λ‘, λ°μ΄ν°μ λ
Όλ¦¬μ ꡬ쑰μ μμ©νλ‘κ·Έλ¨μ λ³λλ‘ λμλλ€.
SQL ( Structured Query Language )
SQL ( Structured Query Language ) μ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό μ μ, μ‘°μ, μ μ΄νκΈ° μν΄ μ¬μ©νλ μΈμ΄μ΄λ€.
λͺ¨λ DBMSμμ μ¬μ© κ°λ₯νκ³ λμλ¬Έμλ ꡬλ³νμ§ μμ§λ§ λ°μ΄ν°μ λμλ¬Έμλ ꡬλΆνλ€.
λͺ©μ μ λ°λΌ ꡬλΆν μ μλ€. ( DDL, DML, DCL ) + TCL
DDL ( Data Definition Language )
λ°μ΄ν° μ μμ΄
λ°μ΄ν°λ² μ΄μ€λ ν
μ΄λΈ λ±μ μμ±, μμ νκ±°λ λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μ ꡬ쑰 ( table, view, index, .. )λ₯Ό μ μνλ€.
ν
μ΄λΈ μμ±, μ»¬λΌ μΆκ°, νμ
λ³κ²½, μ μ½μ‘°κ±΄ μ§μ λ±λ±
-
CREATE
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ₯Ό μμ±
-> dbtest λ°μ΄ν°λ² μ΄μ€ μμ±
create database dbtest
default character set utf8mb3 collate utf8mb3_general_ci;
( utf8mb3 λ λ€κ΅μ΄ μ²λ¦¬, utf8mb4 λ λ€κ΅μ΄ μ²λ¦¬ + μ΄λͺ¨μ§ μ¬μ© κ°λ₯ )
( character setμ κ° λ¬Έμκ° μ»΄ν¨ν°μ μ μ₯λ λ μ΄λ ν μ½λλ‘ μ μ₯ λ μ§μ λν κ·μΉμ μ§ν©μ μλ―Ένλ€ )
( Collationμ νΉμ λ¬Έμ μ
μ μν΄ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ κ°λ€μ λΉκ΅ κ²μνκ±°λ μ λ ¬ λ±μ μμ
μ μν΄ λ¬Έμλ€μ μλ‘ " λΉκ΅ " ν λ μ¬μ©νλ κ·μΉλ€μ μ§ν©μ μλ―Ένλ€. )
-> user ν
μ΄λΈ μμ±
create table 'user'(
`id` varchar(40) not null,
`password` varchar(40) not null,
`name` varchar(40) not null,
`email` varchar(40) not null,
`age` int not null
)
-------------------------------------------------------------------------------------------------------
-> dbtest λ°μ΄ν°λ² μ΄μ€ μ¬μ©
use dbtest;
-
ALTER
κΈ°μ‘΄μ μ‘΄μ¬νλ λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ₯Ό μμ
-> dbtest λ°μ΄ν°λ² μ΄μ€ μμ ( μ΄λͺ¨μ§ μ¬μ© κ°λ₯ν κ²μΌλ‘ )
alter database dbtest
default character set utf8mb4 collate utf8mb4_general_ci;
-> user ν
μ΄λΈμ phone_number(int) μ»¬λΌ μ½μ
alter table 'user' add column 'phone_number' int;
-> user ν
μ΄λΈμ phone_number 컬λΌμ varchar(40), not null λ‘ λ³κ²½
alter table 'user' modify column 'phone_number' varchar(40) not null;
-> phone_number μ»¬λΌ μμ
alter table 'user' drop column 'phone_number';
-
DROP
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄λ₯Ό μμ
-> dbtest λ°μ΄ν°λ² μ΄μ€ μμ
drop database dbtest;
-> user ν
μ΄λΈ μμ
drop table 'user';
-> λ§μ½ user λΌλ ν
μ΄λΈμ΄ μμΌλ©΄ μμ
drop table if exists 'user';
DML ( Data Manipulation Language )
λ°μ΄ν° μ‘°μμ΄
λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ λ°μ΄ν°λ₯Ό μ²λ¦¬νκ±°λ μ‘°ν, κ²μνκΈ° μν λͺ
λ Ήμ΄μ΄λ€.
ν
μ΄λΈμ λ μ½λλ₯Ό CRUD ( Create, Read, Update, Delete )
-
insert ( C )
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μ λ°μ΄ν°λ₯Ό μ λ ₯
insert into table_name( col_name1, col_name2 .. )
value ( col_val1, col_val2 .. );
-> col_name μ μ μ μΌλ©΄ μ 체 μμ±μ μλ―Έ
-> col_value μΈνΈλ₯Ό μ¬λ¬κ° μ μ΄λ λλ€.
-
select ( R )
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μμ λ°μ΄ν°λ₯Ό μ‘°ν
select * | { [] ALL | DISTINCT ] col_name1 | expression [ alias ] .. }
from table_name
where conditions;
order by col_name1 [ ASC | DESC ] ..
-> * : ν
μ΄λΈμ λͺ¨λ μ΄μ μ ν
-> ALL : μ νλ λͺ¨λ νμ λ°ν ( default ) μλ΅ κ°λ₯
-> DISTINCT : μ νλ λͺ¨λ ν μ€μμ μ€λ³΅ ν μ κ±°
-> col_name1 : μ§μ λ μ΄
-> expression : μ°μ°μ λ° SQL ν¨μμ μ‘°ν©
-> alias : λ³μΉ, νλ©΄μ λμ€λ μ΄λ¦μ μ ν μ μλ€.
-> where : 쑰건μ λ§μ‘±νλ ν κ²μ
-> order by : col_name1 κΈ°μ€μΌλ‘ μ λ ¬ ( ASC : μ€λ¦μ°¨μ (default μλ΅κ°λ₯), DESC : λ΄λ¦Όμ°¨μ )
-> order by col_name1 col_name2 desc; => col_name1λ‘ μ€λ¦μ°¨μ μ λ ¬ ν col_name2λ‘ λ΄λ¦Όμ°¨μ μ λ ¬νλ€.
π alias, μ¬μΉμ°μ°, NULL Value
select employee_id as μ¬λ², first_name as "μ΄ λ¦"
salary * 12 "μ° λ΄", (salary + salary * IFNULL(commission_pct, 0)) * 12 "컀미μ
ν¬ν¨ μ°λ΄"
from employee;
-> IFNULL ( commission_pct, 0 ) : expr1μ΄ nullμ΄λ©΄ expr2κ° return => 컀미μ
μ΄ nullμ΄λ©΄ 0μ λ°ννλ€.
π CASE exp1 WHEN exp2 THEN exp3
WHEN exp4 THEN exp5
..
ELSE exp6
END
select employee_id, first_name, salary,
case when salary > 15000 then 'κ³ μ‘ μ°λ΄'
when salary > 8000 then 'νκ· μ°λ΄'
else 'μ μ‘ μ°λ΄'
end "μ°λ΄ λ±κΈ"
from employees;
-> λ΄κΈμ΄ 15000 μ΄μμ΄λ©΄ 'κ³ μ‘ μ°λ΄' 8000 μ΄μ 'νκ· μ°λ΄' λλ¨Έμ§λ 'μ μ‘ μ°λ΄'
π and, or, not
π in , not in
ν¬ν¨νλ μν¬ν¨νλ
- λΆμ λ²νΈκ° 50, 60, 70 μ 근무νλ μ¬μμ μ¬λ², μ΄λ¦, λΆμλ²νΈ κ²μ
select employee_id, first_name, department_id
from employees
where department_id in (50,60,70);
- λΆμ λ²νΈκ° 50, 60, 70 κ° μλ 근무νλ μ¬μμ μ¬λ², μ΄λ¦, λΆμλ²νΈ κ²μ
select employee_id, first_name, department_id
from employees
where department_id not in (50,60,70);
π between A and B
A μ B μ¬μ΄ κ°
- κΈμ¬κ° 6000 μ΄μ 10000 μ΄νμΈ μ¬μμ μ¬λ², μ΄λ¦, κΈμ¬ κ²μ
select employee_id, first_name, department_id
from employees
where salary between 6000 and 10000;
π NULL λΉκ΅ : IS NULL, IS NOT NULL
= NULL λ‘ κ²μμ΄ μλλ€ !!
- 컀미μ
μ λ°λ μ¬μμ μ¬λ², μ΄λ¦, κΈμ¬, 컀미μ
κ²μ
select employee_id, first_name, salary, commission_pct
from employees
where commission_pct is not null;
π LIKE( % , _ )
% : κ°μ μκ΄νμ§ μκ³ λͺ λ²μ§Έ μκ΄ X
_ : κ°μ, λͺ λ²μ§Έ λ€ λ§μμΌνλ€
- μ΄λ¦μ 'x'κ° λ€μ΄κ° μ¬μμ μ¬λ², μ΄λ¦ κ²μ
select employee_id, first_name
from employees
where first_name like '%x%';
- μ΄λ¦μ λμμ 3λ²μ§Έ μ리μ 'x'κ° λ€μ΄κ° μ¬μμ μ¬λ², μ΄λ¦ κ²μ
select employee_id, first_name
from employees
where first_name like '%x__';
-
update ( U )
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μ λ°μ΄ν°λ₯Ό μμ
update table_name
set col_name1 = col_val1 ..
where conditions;
-> where μ μ conditions( 쑰건 )μ λ§μ‘±νλ λ μ½λμ κ°μ λ³κ²½νλ€.
-> where μ μ μλ΅νλ©΄ λͺ¨λ λ°μ΄ν°κ° λ°λλ€.
-
delete ( D )
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μ λ°μ΄ν°λ₯Ό μμ
delete from table_name
where conditions;
-> where μ μ conditions( 쑰건 )μ λ§μ‘±νλ λ μ½λμ κ°μ μμ νλ€.
-> where μ μ μλ΅νλ©΄ λͺ¨λ λ°μ΄ν°κ° μμ λλ€.
DCL ( Data Control Language )
λ°μ΄ν° μ μ΄μ΄
λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μνμ¬ λ°μ΄ν°μ 보μμ± λ° λ¬΄κ²°μ± λ±μ μ μ΄νκΈ° μν λͺ
λ Ήμ΄μ΄λ€.
DB, Tableμ μ κ·Ό κΆν μ΄λ CRUD κΆνμ μ μνλ€.
νΉμ μ¬μ©μμκ² ν
μ΄λΈμ κ²μκΆνμ λΆμ¬/κΈμ§ λ±μ νλ€.
-
grant
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄μ κΆνμ λΆμ¬
grant create user, alter user, drop user
to js with admin option;
-> jsμκ² create, alter, drop κΆνμ μ€λ€. ( κ°μ²΄λ select, insert .. λ κ°λ₯ )
-> with admin option μ κΆν λ°μ μ¬μ©μκ° λ€λ₯Έ μ¬μ©μμκ²λ κΆνμ λΆμ¬ν μ μλ κ²
-
revoke
λ°μ΄ν°λ² μ΄μ€ κ°μ²΄ κΆνμ μ·¨μ
revoke create user, alter user, drop user
from js;
-> jsμκ²μ create, alter, drop κΆνμ νμνλ€.
TCL ( Transaction Control Language )
νΈλμμ
μ μ΄μ΄
transaction μ΄λ λ°μ΄ν°λ² μ΄μ€μ λ
Όλ¦¬μ μ°μ° λ¨μ
use jsdb;
create table test(
var varchar(10)
);
start transaction;
insert into test
values('a');
insert into test
values('b');
commit;
-- μ¬κΈ°κΉμ§ a,b μ μ₯
insert into test
values('c');
rollback;
-- commitν μνλ‘ λμκ° -> cλ μ μ₯ μλ¨
-> savepoint f1μΌλ‘ μ μ₯νκ³ rollback to f1μΌλ‘ λμκ° μλ μλ€.
-
commit
μ€νν Queryλ₯Ό μ΅μ’ μ μΌλ‘ μ μ© -
rollback
μ€νν Queryλ₯Ό λ§μ§λ§ commit μ μΌλ‘ μ·¨μμμΌ λ°μ΄ν°λ₯Ό 볡ꡬ
ν μ΄λΈ μμ±
-
μ€ν€λ§
μ€ν€λ§λ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμ μ μ₯λ λ°μ΄ν°μ ꡬ쑰μ νμμ μ μ -
ER Diagram ( ERD )
κ°μ²΄ νμ κ³Ό κ΄κ³νμ μ κΈ°λ³Έ κ°λ μΌλ‘ νμ€ μΈκ³λ₯Ό κ°λ μ μΌλ‘ νννλ λ°©λ²
- μ€ν€λ§λ₯Ό μ°Έμ‘°νμ¬ ν
μ΄λΈ μμ± SQL μμ±
member ν
μ΄λΈ μμ±
create table member{
idx int auto_increment,
userid varchar(16) not null,
username varchar(20),
userpwd varchar(16),
primary key (idx)
};
- μ μ½ μ‘°κ±΄
- 컬λΌμ μ μ₯λ λ°μ΄ν°μ 쑰건μ μ€μ
- μ μ½μ‘°κ±΄μ μ€μ νλ©΄ 쑰건μ μλ°°λλ λ°μ΄ν°λ μ μ₯ λΆκ°
- ν μ΄λΈ μμ± μ 컬λΌμ μ§μ μ§μ νκ±°λ constraintλ‘ μ§μ , λλ ALTERλ₯Ό μ΄μ©νμ¬ μ€μ κ°λ₯
-
NOT NULL
컬λΌμ NULL κ°μ μ μ₯ν μ μλ€. -
UNIQUE
컬λΌμ μ€λ³΅λ κ°μ μ μ₯ν μ μλ€. NULL κ°μ νμ© -
PRIMARY KEY
컬λΌμ μ€λ³΅λ κ°μ μ μ₯ν μ μκ³ NULL κ°λ νμ©νμ§ μλλ€.
μ μΌν κ°μ μ§μ ν λ μ¬μ© , κΈ°λ³Έν€λΌκ³ λΆλ₯Έλ€. -
FOREIGN KEY
νΉμ ν μ΄λΈμ PK 컬λΌμ μ μ₯λμ΄ μλ κ°λ§ μ μ₯
μ°Έμ‘°ν€, μΈλν€λΌ λΆλ¦¬λ©° NULL κ°μ νμ©νλ€.
referenceλ₯Ό μ΄μ©νμ¬ μ΄λ€ 컬λΌμ μ΄λ€ λ°μ΄ν°λ₯Ό μ°Έμ‘°νλμ§ λ°λμ μ§μ -
DEFAULT
NULL κ°μ΄ λ€μ΄μ¬ κ²½μ° κΈ°λ³Έ μ€μ λλ κ°μ μ§μ - CHECK
κ°μ λ²μλ μ’ λ₯λ₯Ό μ§μ
RDB ( Relational DataBase ) λ 무μμΈκ° ?
λ°μ΄ν°μ μ’
μμ±μ κ΄κ³λ‘ νννλ κ²μ΄ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ νΉμ§ μ΄λ€.
νμ¬ κ°μ₯ λ§μ΄ μ°μ΄κ³ μλ λ°μ΄ν°λ² μ΄μ€μ ν μ’
λ₯μ΄λ€.
ν
μ΄λΈλ‘ μ΄λ£¨μ΄μ Έ μμΌλ©° μ΄ ν
μ΄λΈμ ν€μ κ°μ κ΄κ³λ₯Ό λνλΈλ€.
RDB ( Relational DataBase ) μ νΉμ§
- λ°μ΄ν°μ λΆλ₯, μ λ ¬, νμ μλκ° λΉ λ₯΄λ€.
- μ€λ«λμ μ¬μ©λ λ§νΌ μ λ’°μ±μ΄ λκ³ , μ΄λ€ μν©μμλ λ°μ΄ν°μ 무결μ±μ 보μ₯ν΄ μ€λ€.
- κΈ°μ‘΄μ μμ±λ μ€ν€λ§λ₯Ό μμ νκΈ°κ° μ΄λ ΅λ€.
- λ°μ΄ν°λ² μ΄μ€μ λΆνλ₯Ό λΆμνλ κ²μ΄ μ΄λ ΅λ€.
π DBMS ( DataBase Management System )
DBMS ( DataBase Management System ) λ 무μμΈκ° ?
DBMSλ λ°μ΄ν°λ² μ΄μ€λ₯Ό κ΄λ¦¬νλ μμ€ν
μ΄λ€.
μ¬μ©μμ DBμ¬μ΄μμ μ¬μ©μμ μꡬμ λ°λΌ λ°μ΄ν°λ₯Ό μμ±ν΄μ£Όκ³ DBλ₯Ό κ΄λ¦¬ν΄μ£Όλ SWμ΄λ€.
DBMSλ λ°μ΄ν°λ₯Ό κ³μΈ΅ λλ νμ νμμΌλ‘ μ μ₯νλ€. νμΌ μμ€ν
μ μ¬μ©ν΄ μ μ₯νλ©° λ°λΌμ ν
μ΄λΈ κ°μλ μλ¬΄λ° κ΄κ³κ° μλ€.
λ°μ΄ν°μ λ§μ 보μμ μ 곡νμ§ μμΌλ©° μ κ·νλ₯Ό μνν μ μμ΄ λ°μ΄ν°λ λμ μ€λ³΅μ±μ κ°μ§ μλ μλ€.
Sybase, dbase λ° Microsort Accessλ DBMSμ λͺκ°μ§ μμ΄λ€.
RDBMS ( Relational DataBase Management System ) λ 무μμΈκ° ?
RDBMSλ DBMSμ νκ°μ§ μ νμΌλ‘ κ΄κ³ν λͺ¨λΈμ κΈ°λ°μΌλ‘ νλ DBMSμ μ νμ΄λ€.
RDBMSλ ν
μ΄λΈμ΄ μλ‘ μ°κ΄λμ΄ μμ΄ μΌλ° DBMS λ³΄λ€ ν¨μ¨μ μΌλ‘ λ°μ΄ν°λ₯Ό μ μ₯ , κ΅¬μ± λ° κ΄λ¦¬ν μ μλ€.
κ·Έλ¦¬κ³ ν
μ΄λΈ κ°μ κ΄κ³ ( join )λ₯Ό μ΄μ©νμ¬ νμν λ°μ΄ν°λ₯Ό κ²μν μ μλ€.
μ κ·νλ₯Ό ν΅ν΄ λ°μ΄ν°μ μ€λ³΅μ±μ μ΅μννμ¬ νΈλμμ
μ μννλ κ²μ΄ λ μ½λ€.
λ°μ΄ν°μ μμ¬μ±, μΌκ΄μ±, 격리 λ° λ΄κ΅¬μ±μ μ μ§νλ©° λ°μ΄ν° 무결μ±μ λμΈλ€.
MSSQL, MySQL, Oracleμ΄ RDBMSμ λͺκ°μ§ μμ΄λ€.
DATABASE κΈ°λ³Έ λ§λ¬΄λ¦¬
κ·Έλλ λΉκ΅μ DataBaseμ λν μ§μμ΄ λ¨μ μμ΄μ μ¬μ λ€.
κ·Έλ¬λ μλ DBκ° μ΄λ°μλ μ½κ³ λ€λ‘ κ° μλ‘ (join) 볡μ‘ν΄ μ§κΈ° λλ¬Έμ μ΄μ μμμ΄λ€.
sqld μ격μ¦λ 보μ νκ³ μμ§λ§ μμ§ λ§μ΄ DBλ₯Ό μ€μ λ‘ λ€λ€λ³΄μ§ λͺ»νκΈ° λλ¬Έμ μ΄μ¬ν 곡λΆν΄μΌνλ€.
μ΄λ κ³³μμλ μ¬μ©νλ DBλ₯Ό μ μκ³ μμ΄μΌ νλ€. κ·Έλ¦¬κ³ ν λ²μ μλͺ»λ μ€νμΌλ‘ λλ½μΌλ‘ κ° μ μκΈ° λλ¬Έμ μ μ€νκ² μ¬μ©νμ¬μΌ νλ€.( κ·Έλ° μ¬λ‘κ° λ§λ€λλΌ γ
γ
)
μ΄μ κΈ°λ³Έμ μΈ DBμ DBMS κ·Έλ¦¬κ³ νμ¬ λ§μ΄ μ¬μ©νκ³ μλ RDB, RDBNS, SQL μ λν΄ μμ 보μλλ° κΈ°μ΄λ₯Ό ννν ν΄λμΌ λ€μ μ¬λ¬ ν
μ΄λΈλ€μ μ΄μ©ν΄ κ²μνλ κ²μ μ΄ν΄ν μ μλ€.
κ·Έλ¦¬κ³ μ κ·ν κ³Όμ λ 볡μ‘νκΈ° λλ¬Έμ κΈ°μ΄λ₯Ό ννν νμ !!
π μ°Έμ‘°
http://www.tcpschool.com/mysql/DB
https://m.blog.naver.com/cjhol2107/221758915414