SQL ๊ธฐ๋ณธ๋ฌธ
CRUD์ ๊ด๋ จํด ๋
ธ๋๋ฅผ ๊ณต๋ถํ๋ ์์ฆ,
SQL์ ์์ฑํด์ผํ ๋๊ฐ ์ฆ๋ค.
๊ทธ๋์ ์ค๋์ SQL ๋ฌธ๋ฒ์ ์ ๋ฆฌํ๊ณ ,
ํด๋น ๋ฌธ๋ฒ์ ํ์ฉํ๋ ๊ฒ์ ๋ํด ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
CRUD๋ ์ฐจ๋ก๋ก Create, Read , Update, Delete๋ฅผ ์๋ฏธํ๋ค.
์ธ์ด๋ฅผ ์์ฑํ๋ฉด ๊ผญ ;์ผ๋ก ๋ง๋ฌด๋ฆฌ ํด์ค๋ค.
์ธ์ด (SQL) | ย |
---|---|
Keword | ๋ด์ฉ |
show databases | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก์ ๋ณด์ฌ๋ผ |
create database databaseName | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ ๋ค |
use databaseName | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค |
drop databaseName | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ญ์ ํ๋ค |
show tables | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์๋ ํ ์ด๋ธ์ ๋ชจ๋ ๋ณด์ฌ๋ผ |
create table tableName(fieldName Type length(NOT NULL) PRIMARY KEY AUTO_INCREMENTโฆ) ENGINE InnoDB DEFAULT CHARSET=utf8mb4; | ์ธ๋ถ์ฌํญ, ์์ฑ ์ง์ ํ ์ด๋ธ ์์ฑ |
desc tableName | ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ๋ผ |
select * from tableName | ํ ์ด๋ธ ์์ ๋ชจ๋ ๋ชฉ๋ก์ ๋ณด์ฌ๋ผ |
select columnName from tableName | ํ ์ด๋ธ ์์ columnName์ ๋ณด์ฌ๋ผ |
select * from tableName order by columnName DESC | ํ ์ด๋ธ ์์ ๋ชจ๋ ๋ชฉ๋ก ์ค์์ ์ปฌ๋ผ๋ค์์ ์ค๋ฆ์ฐจ์์ผ๋ก ๋ณด์ฌ๋ผ |
select * from tableName order by columnName ASC | ํ ์ด๋ธ ์์ ๋ชจ๋ ๋ชฉ๋ก ์ค์์ ์ปฌ๋ผ๋ค์์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ณด์ฌ๋ผ |
alter table tableName add column fieldName type lengthโฆ |
ํ ์ด๋ธ ์์ ํ๋๋ฅผ ์ถ๊ฐํ๋ผ |
alter table tableName change column fieldName fieldName (์์ ํ ํ๋๋ด์ฉ) type lengthโฆ |
ํ ์ด๋ธ ์์ ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ผ |
update tableNmae set fieldName | ํ ์ด๋ธ ์์ ํ๋๋ฅผ ์ถ๊ฐํ๋ผ |
delete from tableName where(์กฐ๊ฑด) | ์กฐ๊ฑด ์์ ํฌํจ๋ ๊ฒ๋ค์ ํ ์ด๋ธ์์ ์ญ์ ํ๋ผ |
insert into tableName(column1, column2,โฆ) values(value1, value2, โฆ), ( ), ( ), ( ) | ํ ์ด๋ธ ์ปฌ๋ผ์ ๊ฐ ์ถ๊ฐํ๋ผ |
- asc: ์์๊ฒ๋ถํฐ ํฐ ๊ฒ์ผ๋ก
- desc : ํฐ ๊ฒ๋ถํฐ ์์ ๊ฒ์ผ๋ก
๋ช ๋ น์ด ์ ๋ฆฌ
์๋ฅผ ๋ณด๊ณ ์ดํดํ๊ณ ์ํด๋ ๋์กํ ๋๊ฐ ์๋ค.
์ธ๋ถ๋ฅผ ์ถ๊ฐํด๋ณด์
๋ช ๋ น์ด | ๋ด์ฉ |
order by columName desc(asc) | desc๋ ์ค๋ฆ์ฐจ์, asc๋ ๋ด๋ฆผ์ฐจ์์ด๋ค. |
select distinct | ์ค๋ณต ์์ด ๋์ดํ ๋ ์ฌ์ฉํ๋ค. |
where | ํํฐ๋งํ ๋ ์ฌ์ฉํ๋ค. |
from | ์ด๋ ํ ์ด๋ธ์์ ๊ฐ๋ค ์ธ ๊ฒ์ธ์ง |
like | ์์ผ๋์นด๋, ์ ๊ทํํ์ ์ฐธ์กฐ, ๋ณดํต โ%[]%โ ๋ฐฉ์ ์ฌ์ฉ, |
between a and b | a์ b์ฌ์ด์ ๋ฒ์ |
where columnName in (value1, value2,โฆ) | ์ฌ๋ฌ ์กฐ๊ฑด ๊ฐ ์ง์ |
where locate(value, columnName) > 0 | columnName์ value๊ฐ ์๋์ง ์กฐ๊ฑด |
where instr(columnName, value) > 0 | columnName์ value๊ฐ ์๋์ง ์กฐ๊ฑด |
limit number | limit์ ์ถ๋ ฅํ ํ์ ์๋ฅผ ์ ํํ๋ ๋ช ๋ น์ด |
count(columnName or *) | ์๋ฅผ ์ผ๋ค. |
AS | AS๋ ๋ณ์นญ์ ์๋ฏธํ๋ค. |
max | max๋ ์ฃผ๋ก ํ๋์ ๊ฐ๋ง ๋ฐํ where์์ ์ฌ์ฉํ ๋๋ ๋น๊ต์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. |
min | min์ ์ฃผ๋ก ํ๋์ ๊ฐ๋ง ๋ฐํ where์์ ์ฌ์ฉํ ๋๋ ๋น๊ต์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. |
sum | sum์ ์ฃผ๋ก ํ๋์ ๊ฐ๋ง ๋ฐํ where์์ ์ฌ์ฉํ ๋๋ ๋น๊ต์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. |
avg | avg๋ ์ฃผ๋ก ํ๋์ ๊ฐ๋ง ๋ฐํ where์์ ์ฌ์ฉํ ๋๋ ๋น๊ต์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค. |
group by | group by๋ ๊ทธ๋ฃน์ ์ง์ ํ๋ค. |
having | having์ ๊ทธ๋ฃน์ ์กฐ๊ฑด์ ์ง์ ํ๋ค. count(name)>1 |
offset | offset์ ์ถ๋ ฅํ ํ์ ์์์ ์ ์ง์ ํ๋ค. |
and | and๋ ์ฌ๋ฌ๊ฐ์ ์กฐ๊ฑด์ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. |
or | or๋ ์ฌ๋ฌ๊ฐ์ ์กฐ๊ฑด์ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. |
not | not์ ์กฐ๊ฑด์ ๋ฐ๋๋ก ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. |
hour | hour์ ์๊ฐ์ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
minute | minute์ ๋ถ์ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
second | second๋ ์ด๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
date | date๋ ๋ ์ง๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
year | year์ ๋ ๋๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
month | month๋ ์์ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
day | day๋ ์ผ์ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
week | week๋ ์ฃผ๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
dayofweek | dayofweek๋ ์์ผ์ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
dayofyear | dayofyear๋ ๋ ์ค ๋ช ๋ฒ์งธ ๋ ์ธ์ง ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
last_day | last_day๋ ํด๋น ์์ ๋ง์ง๋ง ๋ ์ง๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
quarter | quarter๋ ํด๋น ๋ ๋์ ๋ช ๋ถ๊ธฐ์ธ์ง ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
to_days | to_days๋ ๋ ์ง๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
from_days | from_days๋ ๋ ์ง๋ฅผ ์ถ์ถํ ๋ ์ฌ์ฉํ๋ค. |
date_format | date_format์ ๋ ์ง๋ฅผ ์ง์ ๋ ํ์์ผ๋ก ์ถ๋ ฅํ ๋ ์ฌ์ฉํ๋ค. |
time_format | time_format์ ์๊ฐ์ ์ง์ ๋ ํ์์ผ๋ก ์ถ๋ ฅํ ๋ ์ฌ์ฉํ๋ค. |
timestampdiff | timestampdiff๋ ๋ ๋ ์ง์ ์ฐจ์ด๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํ๋ค. |
timestampadd | timestampadd๋ ๋ ์ง์ ์ผ์ ๊ธฐ๊ฐ์ ๋ํ ๋ ์ฌ์ฉํ๋ค. |
timediff | timediff๋ ๋ ์๊ฐ์ ์ฐจ์ด๋ฅผ ๊ตฌํ ๋ ์ฌ์ฉํ๋ค. |
date_add | date_add๋ ๋ ์ง์ ์ผ์ ๊ธฐ๊ฐ์ ๋ํ ๋ ์ฌ์ฉํ๋ค. |
date_sub | date_sub๋ ๋ ์ง์ ์ผ์ ๊ธฐ๊ฐ์ ๋บ ๋ ์ฌ์ฉํ๋ค. |
addtime | addtime์ ์๊ฐ์ ์ผ์ ๊ธฐ๊ฐ์ ๋ํ ๋ ์ฌ์ฉํ๋ค. |
subtime | subtime์ ์๊ฐ์ ์ผ์ ๊ธฐ๊ฐ์ ๋บ ๋ ์ฌ์ฉํ๋ค. |
with recursive | with recursive ์ฌ๊ท์ ์ผ๋ก ํ ์ด๋ธ์ ๋ง๋ค ๋ ์ฌ์ฉํ๋ค. |
left join | left join์ ์ผ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ํฉ์น ๋ ์ฌ์ฉํ๋ค. |
right join | right join์ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ํ ์ด๋ธ์ ํฉ์น ๋ ์ฌ์ฉํ๋ค. |
full outer join | full outer join์ ์ผ์ชฝ ํ ์ด๋ธ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ํฉ์น ๋ ์ฌ์ฉํ๋ค. |
cross join | cross join์ ์ผ์ชฝ ํ ์ด๋ธ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํฉ์น ๋ ์ฌ์ฉํ๋ค. |
natural join | natural join์ ์ผ์ชฝ ํ ์ด๋ธ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํฉ์น ๋ ์ฌ์ฉํ๋ค. |
inner join | inner join์ ์ผ์ชฝ ํ ์ด๋ธ๊ณผ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๋ชจ๋ ํฉ์น ๋ ์ฌ์ฉํ๋ค. |
on extract | on extract๋ ์กฐ๊ฑด์ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. |
case when then else end | if๋ฌธ๊ณผ ๋น์ทํ ์ญํ ์ ํ๋ค. when์ ์๋ ์กฐ๊ฑด์, then์ ์๋ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ ์คํํ ์ฟผ๋ฆฌ๋ฅผ, else์ ์๋ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์คํํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค. end ์ ์ case๋ฌธ์ ๋์ ์๋ฏธํ๋ค. |
inner join | ๋ ํ ์ด๋ธ์ ๊ต์งํฉ์ ๋ฐํํฉ๋๋ค. |
inner join on | on ์ ์๋ ๊ต์งํฉ์ ๊ตฌํ ๊ธฐ์ค์ด ๋๋ ์ปฌ๋ผ์ ์ง์ ํ๋ค. where์ ์ญํ |
left join์ ์ผ์ชฝ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ค๋ฅธ์ชฝ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์จ๋ค.
SQL ์์ฑ ์์
public int signup(UserDTO userDTO) {
String SQL = "INSERT INTO kurly_table(user_id, user_pw, user_name, user_email, user_hp, user_addr, user_gender, user_birth) VALUES(?,?,?,?,?,?,?,?)";
try {
ps = conn.prepareStatement(SQL);
ps.setString(1, userDTO.getUser_id());
ps.setString(2, userDTO.getUser_pw());
ps.setString(3, userDTO.getUser_name());
ps.setString(4, userDTO.getUser_email());
ps.setString(5, userDTO.getUser_hp());
ps.setString(6, userDTO.getUser_addr());
ps.setString(7, userDTO.getUser_gender());
ps.setString(8, userDTO.getUser_birth());
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
public int signin(String user_id, String user_pw) {
String SQL = "SELECT user_pw FROM kurly_table WHERE user_id=?";
try {
ps = conn.prepareStatement(SQL);
ps.setString(1, user_id);
rs = ps.executeQuery();
if(rs.next()){
if(rs.getString(1).equals(user_pw)){
return 1;
}
else{
return 0;
}
}
else{
return -1;
}
} catch (Exception e) {
e.printStackTrace();
}
return -2;
}
public int update(UserDTO userDTO) {
String SQL = "UPDATE kurly_table SET user_pw=?, user_name=?, user_email=?, user_hp=?, user_addr=?, user_gender=?, user_birth=? WHERE user_id=?";
try {
ps = conn.prepareStatement(SQL);
ps.setString(1, userDTO.getUser_pw());
ps.setString(2, userDTO.getUser_name());
ps.setString(3, userDTO.getUser_email());
ps.setString(4, userDTO.getUser_hp());
ps.setString(5, userDTO.getUser_addr());
ps.setString(6, userDTO.getUser_gender());
ps.setString(7, userDTO.getUser_birth());
ps.setString(8, userDTO.getUser_id());
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
public int delete(UserDTO userDTO) {
String SQL = "DELETE FROM kurly_table WHERE user_id=? AND user_pw=?";
try {
ps = conn.prepareStatement(SQL);
ps.setString(1, userDTO.getUser_id());
ps.setString(2, userDTO.getUser_pw());
return ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}