CREATE TABLE celab
(
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME varchar(32) NOT NULL DEFAULT '',
BIRTHDAY date,
AGE int,
SEX char(1),
JOB_TITLE varchar(32),
AGENCY varchar(32)
);
INSERT INTO celab VALUES (1, '아이유', 1993-05-16', 29, 'F', '가수, 텔런트', 'EDAM엔터테이먼트');
...
ASC
: 오름차순, DESC
: 내림차순SELECT column1, column2, ...
FROM tablename
ORDER BY column1, column2, ... ASC | DESC;
SELECT age, name
FROM celab
ORDER BY age ASC;
celab table에서 이름과 나이를 나이의 역순으로 정렬, 이름순으로 정렬
SELECT age, name
FROM celab
ORDER BY age DESC, name ASC;
# 나이가 29세인 데이터
SELECT name, age FROM celab WHERE age=29 ORDER BY age;
# 나이가 29세가 아닌 데이터
SELECT name, age FROM celab WHERE age!=29 ORDER BY age;
# 나이가 29세보다 큰 데이터
SELECT name, age FROM celab WHERE age>29 ORDER BY age;
# 나이가 29보다 크거나 작은 (같지 않은) 데이터
SELECT name, age FROM celab WHERE age<>29 ORDER BY age;
SELECT column1, column2, ...
FROM tablename
WHERE condition1 AND condition2 AND condition3 ...;
SELECT * FROM celab WHERE sex='M' AND age<40 ORDER BY name;
SELECT column1, column2, ...
FROM tablename
WHERE condition1 OR condition2 OR condition3 ...;
SELECT * FROM celab WHERE (agency='YG엔터테이먼트' OR agency='나무엑터스') AND age<30;
SELECT column1, column2, ...
FROM tablename
WHERE NOT condition;
SELECT * FROM celab
WHERE (agency='YG엔터테이먼트' AND NOT sex='M')
OR (job_title='가수' AND NOT agency='YG엔터테이먼트');
SELECT * FROM celab
WHERE (birthday>19891231 AND NOT sex='F')
OR (birthday<19800101 AND NOT agency='안테나');
SELECT column1, column2, ...
FROM tablename
WHERE column1 BETWEEN value1 AND value2;
SELECT * FROM celab
WHERE (NOT birthday BETWEEN 19800101 AND 19951231 AND sex='F')
OR (agency='YG엔터테이먼트' AND NOT age BETWEEN 20 AND 45);
SELECT column1, column2, ...
FROM tablename
WHERE column IN (value1, value2, ...);
SELECT * FROM celab WHERE age IN (28, 48);
SELECT * FROM celab
WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND (sex='F' OR age>=45);
SELECT column1, column2, ...
FROM tablename
WHERE column LIKE pattern;
SELECT * FROM celab WHERE agency LIKE 'YG%';
SELECT * FROM celab WHERE job_title LIKE '%가수%';
SELECT * FROM celab WHERE agency LIKE '_G%';
여러 개의 SQL문을 합쳐서 하나의 SQL 문으로 만들어주는 방법(칼럼의 개수가 같아야 함)
SELECT column1, column2, ... FROM tableA
UNION | UNION ALL
SELECT column1, column2, ... FROM tableB
SELECT * FROM test1
UNION ALL
SELECT * FROM test2
SELECT * FROM test1
UNION
SELECT * FROM test2
CREATE TABLE snl_show
(
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
SEASON int NOT NULL,
EPISODE int NOT NULL,
BROADCAST_DATE date,
HOST varchar(32) NOT NULL
);
정보 추가
JOIN: 두 개 이상의 테이블을 결합하는 것
SELECT column1, column2, ...
FROM tableA
INNER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
SELECT celab.id, celab.name, snl_show.id, snl_show.host
FROM celab
INNER JOIN snl_show
ON celab.name = snl_show.host;
SELECT column1, column2, ...
FROM tableA
LEFT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
SELECT column1, column2, ...
FROM tableA
RIGHT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
SELECT column1, column2, ...
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
SELECT column1, column2, ...
FROM tableA, tableB, ...
WHERE condition;
SELECT snl_show.id, snl_show.season, snl_show.episode, celab.name, celab.job_title
FROM celab, snl_show
WHERE celab.name = snl_show.host;
SELECT name, season, episode, broadcast_date, agency
FROM celab, snl_show
WHERE name=host
AND (episode IN (7, 9, 10) OR agency LIKE 'YG______')
AND broadcast_date>'2020-09-15';
CONCAT: 여러 문자열을 하나로 합치거나 연결
SELECT CONCAT('string1', 'string2', ...);
SELECT CONCAT('이름:', name) FROM celab;
mysql> select c.agency '소속사 정보', concat('나이: ', c.age, '(', c.sex, ')') '신상정보',
-> concat(s.season, '-', s.episode, ', 방송날짜: ', s.broadcast_date) '출연정보'
-> from celab c, snl_show s
-> where c.name = s.host and agency like '__엔터테이먼트'
-> order by s.broadcast_date desc;
ALIAS: 칼럼이나 테이블 이름에 별칭 생성
SELECT column AS alias
FROM tablename;
SELECT column1, column2, ...
FROM tablename AS alias;
SELECT name AS '이름', agency AS '소속사' FROM celab;
SELECT CONCAT(name, ' : ', job_title) AS protile FROM celab;
SELECT CONCAT(s.season, '-', s.episode, '(', s.broadcast_date, ')') AS '방송정보',
CONCAT(c.name, '(', c.job_title, ')') AS '출연자정보'
FROM celab AS c, snl_show AS s
WHERE c.name=s.host;
DISTINCT: 검색한 결과의 중복 제거
SELECT DISTINCT column1, column2, ...
FROM tablename;
검색결과를 정렬된 순으로 주어진 숫자만큼만 조회
SELECT column1, column2, ...
FROM tablename
WHERE condition
LIMIT number;
SELECT * FROM celab ORDER BY age LIMIT 4;