-> 표시될 column을 선택할 수 있다
SELECT (points * 10 + 20) AS discount_factor FROM customers
=> point 컬럼을 계산한뒤 discount_factor라는 이름으로 변경한다는 뜻
다른 테이블의 컴럼들사이에 조건을 걸고 select하는 쿼리 문
Join On 뒤에 오는 조건이 들어맞든 안맞든 결과값에 포함됨
SELECT * FROM customers c LEFT JOIN orders o
ON c.customer_id = o.customer_id
AND c.product_id = o.product_id
customer_id가 중복된다. 이때 using 키워드 comes in handy
SELECT * FROM customers c
LEFT JOIN orders o
using(customer_id,product_id)
참고로 AND 키워드를 ON이 끝나는 뒤에 붙여서 조건을 추가 할 수 도 있음
—> 같은테이블안에서도 조건을 걸어 선택가능함
Select count(*) from user => 총 row의 갯수가 나옴
Select sum(age) from user => 모든 row의 age 컬럼을 더한 값이 나옴
a라는 테이블에서 특정 조건을 부여후 row를 뽑는다.
그리고 b라는 테이블에서 a1라는 컬럼이 뽑아낸 row에 속하는지 체크하고 속하면 리턴하고 싶을때 neste를 사용함. In 안에 full query가 담겨있어도 됨.
select pr.place_no, pr.content
from budify.place_review pr
where pr.place_no IN (
SELECT p.place_no
FROM budify.place p
where p.town > 200
);
아니면
where pr.place_no = (
SELECT p.place_no
FROM budify.place p
where p.town > 200
);
어떤 조건이 만족되었을때마다 실행되는 쿼리를 정의할 수 있다. 자동화 가능함.
insertHashtag: (hashtag) => {
let query = `insert INTO hashtag (name) VALUES('` + hashtag + `') on duplicate key update refer=refer+1`;
return query;
}
insert INTO hashtag (name): hashtag 테이블에 새로운 해시태그를 추가해. 이때 추가할 해시태그의 이름은 함수의 인자로 전달된 hashtag 값을 사용해.
VALUES(' + hashtag + '): hashtag라는 변수에 저장된 값을 name 컬럼에 삽입해.
on duplicate key update refer=refer+1:
SELECT COUNT(*) AS upload_count FROM place WHERE user_id = '특정 유저 ID';
INSERT INTO budify_new.carriage_total (date, total, terminal) VALUES ('2024-09-04', 22, 2) ON DUPLICATE KEY UPDATE total = VALUES(total),terminal = VALUES(terminal);
date 칼럼이 2024-09-04에 해당하는 row를 찾고 있으면 total,terminal을 업데이트. 없으면 새로 추가
-- column만 복사
CREATE TABLE budify_new_staging.reservation
LIKE budify_new.reservation;
-- column + data까지 복사
CREATE TABLE budify_new_staging.carriage_total
LIKE budify_new.carriage_total;
INSERT INTO budify_new_staging.carriage_total
SELECT * FROM budify_new.carriage_total;
MySqlWorkBench를 이용하여 GUI로 db를 열람/수정 가능하며, 쿼리문 까지 바로 작성 가능함