도움이 되는 사이트
sql을 안만진지 좀 오래된거같아서 (3개월쯤 된거같다)
100번째 글 기념 정리를 좀 해보려고 한다.
DB 는 linux에 설치되어있는 mysql을 사용하도록 하겠다.
데이터베이스를 만들고 그 안에 테이블을 넣는 형식이다.
데이터베이스는
create database <dbname>;
다 만들고나면
show databases
명령으로 볼 수 있다.
보면 알겠지만, database를 하면 오류가 난다. databases이다.
use name_list
를하면 name_list db를 사용하게 된다.
create, 즉 테이블을 만드는 역할이다. create table은 기본적으로
create table <table_name> {
column1 datatype constraint,
column2 datatype constraint,
};
의 형태로 이루어져 있다. 데이터 타입은
CHAR, VARCHAR, VARCHAR2(mysql 기반은 지원안함), INT(number), DECIMAL, DATE를 사용한다.
이 밖에도 Auto_Increment (자동으로 숫자 넣어줌)이 있다.
create table employee {
ID int not null,
name varchar(20) not null,
age int not null,
grade varchar(20) not null,
wage int not null
};
만들고나면 이렇게 나온다
수정이나 삭제도 가능하지만, 실제로 pk fk를 주고 테이블끼리 얽히다보면 삭제 및 수정이 쉽지가 않다. 그러니깐 한번에 잘 만드는게 제일 좋다.
read의 r이다.
read는 정말 무궁무진한 가능성을 가지고 있다. group by 같은 함수들을 조합해서 쓸 수 있기 때문이다.
일단 기본형은 다음과 같다.
SELECT [ALL|DISTINCT] 열_리스트
FROM 테이블_리스트
WHERE 조건
GROUP BY 열_리스트
HAVING 조건
ORDER BY 열_리스트[ASC|DESC]
select name, age from employee
select 뒤에 있는 것들을 from 뒤에 있는 테이블로부터 가지고온다는 뜻이다.
실제로 어떤식으로 쓰이는지는 여러상황에서 써봐야 익숙해지는것같다.
Update를 의미한다.
update <table name>
set field name = data value, field name2 = data value2
where fieldname = data value;
where절 조건이 충족하는 데이터의 set 내용을 바꾼다는 의밍다.
where절이 업사면 전부 바뀐다.
delete from <table name>
where field name = data value
where문 조건에 맞는 데이터 삭제
delete from <table name>
테이블 내용 전체 삭제 (테이블은 남아있음)
drop table
테이블 삭제
다만 pk fk등으로 엮여있는 경우 delete가 마음대로 작동하지 않는 경우가 많다. 따라서 설계를 잘 하던가 잘 지우던가 해야한다.
예전에 소규모 sns를 운영하시는분과 이야기를 잠깐 나눈적이 있는데 그분은 pk fk를 안쓰신다고 하셨다.
sql은 연습이 생명인데 문제는 방대한 데이터를 담은 테이블이 없으면 연습하기가 쉽지 않다. 책이라도 한권 사서 꾸준히 연습해야 될 것 같다.