CRUD
Create - insert into
- insert into {table_name} (col명) value (내용)
- 내용의 수와 col의 수는 동일해야함
INSERT into user (name, email) value ('peter','peter@gmail.com');
INSERT into user (name, email, age)
values ('alice','alice@gmail.com', 25),
('jin','jin@gmail.com', 33),
('andy','andy@gmail.com', 55);
Read - select from
기본
USE world;
SELECT database();
SELECT * FROM country;
SELECT Code, Name, Population FROM country;
SELECT Code, Name as country_name, Population FROM country;
연산자
- 연산자 : Operator : 산술, 비교 , 논리
- 산술 : 데이터 + 데이터 = 데이터
- 비교 : 데이터 + 데이터 = 논리값 : 조건 1개
- 논리 : 논리값(비교연산) + 논리값 (비교연산 = 논리값 : 조건 2개 이상
SELECT code, name, population, surfacearea, population/surfacearea AS pps
FROM country;
SELECT code, name, population, gnp, gnp/population AS per_gnp FROM country;
SELECT code, name, continent = 'Asia' as isASIA
FROM country;
SELECT code, name, indepyear, indepyear >= 1900 AS upper_1900
FROM country;
SELECT code, name, continent, indepyear, (continent = 'Asia' and indepyear >= 1900 ) AS is_asia_upper_1900
FROM country;
Where
SELECT code, name, continent, indepyear,
FROM country
WHERE continent = 'Asia' and indepyear >= 1900 ;
group by
- 데이터 그룹핑
- 중복된 데이터를 결합해서 데이터를 출력하는 방법
- 특정 컬럼(어떤 컬럼을 기준으로 중복되는 데이터를 결합할 것인가), 다른 컬럼 (결합함수를 이용해서 합쳐줌, 어떻게 합쳐질건가를 알려줘야함)
- 결합함수 : count, Min, max, AVG, median, sum 등등 사용
- sum : 문자열 데이터인 것들은 안나옴
- 여러개도 사용할 수 있음.
SELECT CountryCode, COUNT(name), sum(Population)
from city c
group by CountryCode ;
WITH ROLLUP
- group by를 한 이후 묶어서 계산해주는 것
- total data를 출력시에 사용
SELECT staff_id ,DATE_FORMAT(payment_date, '%Y-%m') as monthly, sum(amount), count(amount), avg(amount)
from payment p
group by staff_id, monthly
with ROLLUP ;

having
SELECT continent, SUM(population) as population
FROM country
GROUP BY continent
HAVING population >= 50000 * 10000;
join
- 테이블을 결합하여 데이터를 출력시 사용
- inner join , left join, right join, outer join 사용 가능
SELECT *
from user
join addr
on user.ui = addr.ui;
SELECT addr.ui, user.un, addr.an
from user
right join addr
on user.ui = addr.ui;
SELECT user.ui, user.un, addr.an
FROM user
LEFT JOIN addr
ON user.ui = addr.ui
UNION
SELECT addr.ui, user.un, addr.an
FROM user
RIGHT JOIN addr
ON user.ui = addr.ui;
Update - Update set
- where을 쓰지 않으면 모든 데이터 값들이 변경됨
- 안전장치로 limit를 주는 것 (test용으로)
UPDATE {table_name}
SET col1 = {변경내용}, col2 ={ 변경내용}
WHERE 조건
LIMIT 숫자 ;
UPDATE user
set age=27
WHERE name= 'peter';
- 만약 쿼리를 잘못눌렀다!!=> 진행되고 있는거 빠르게 지우자!
- show processlist
- kill pid
Delete - DELETE FROM
DELETE FROM user
WHERE age < 30
LIMIT 1;