CREATE DATABASE Hoo;
USE Hoo;
CREATE TABLE teams (
id INT NOT NULL,
primary key(id)
);
CREATE TABLE members (
id INT NOT NULL,
primary key(id)
name varchar(255),
age INT NOT NULL,
team_id INT NOT NULL
);
-- 테이블 열(column) 추가
ALTER TABLE teams
ADD team_id INT NOT NULL
-- 테이블 열(column) 추가 및 디폴트 값 설정
ALTER TABLE teams
ADD teams_color varchar(20)
DEFAULT 디폴트값;
-- 테이블 열(column) 이름 변경
ALTER TABLE teams
RENAME COLUMN team_id TO teamId
-- 테이블 열(column) 삭제
ALTER TABLE teams
DROP COLUMN teamId
-- 테이블 열(column) 순서 변경하기
ALTER TABLE teams MODIFY teamId TINYINT AFTER name;
-- todo: 팀A id=1, name='hoomin', age=30, team_id=1
INSERT INTO members (id, name, age, team_id) value(1, 'hoomin', 30, 1);
INSERT INTO members (id, name, age, team_id) value(2, 'elina', 17, 1);
INSERT INTO members (id, name, age, team_id) value(3, 'yoonji', 24, 1);
INSERT INTO members (id, name, age, team_id) value(4, 'ming', 23, 1);
INSERT INTO members (id, name, age, team_id) value(5, 'jelly', 13, 1);
-- todo: 팀B
INSERT INTO members (id, name, age, team_id) value(6, 'kein', 30, 2);
INSERT INTO members (id, name, age, team_id) value(7, 'venom', 21, 2);
INSERT INTO members (id, name, age, team_id) value(8, 'zico', 27, 2);
INSERT INTO members (id, name, age, team_id) value(9, 'cherry', 15, 2);
INSERT INTO members (id, name, age, team_id) value(10, 'alley', 25, 2);
INSERT INTO members (id, name, age, team_id) value(11, 'peter', 40, 2);
INSERT INTO members (id, name, age, team_id) value(12, 'lisa', 19, 2);
-- todo: 팀 없는 사람
INSERT INTO members (id, name, age) value(13, 'oop', 16);
INSERT INTO members (id, name, age) value(14, 'xoxo', 22);
INSERT INTO members (id, name, age) value(15, 'coco', 33);
INSERT INTO members (id, name, age) value(16, 'hoomin', 11);
INSERT INTO members (id, name, age, team_id) value(25, 'hoomin', 33, 2);
INSERT INTO members (id, name,age, team_id)
VALUES
(21, 'lala', 5, 1),
(22, 'lulu', 4, 2),
(23, 'momo', 7, NULL),
(24, 'titi', 6, 2);
===> AUTO_INCREMENT;
ALTER TABLE members MODIFY team_id INT;
ALTER TABLE members MODIFY id INT AUTO_INCREMENT;
ALTER TABLE teams MODIFY id INT AUTO_INCREMENT;
ALTER TABLE members MODIFY age TINYINT UNSIGNED;
ALTER TABLE members MODIFY team_id TINYINT DEFAULT 0;
SELECT * FROM teams;
+----+------+
| id | name |
+----+------+
| 1 | A |
| 2 | B |
+----+------+
SELECT * FROM members;
+----+--------+------+---------+
| id | name | age | team_id |
+----+--------+------+---------+
| 1 | hoomin | 30 | 1 |
| 2 | elina | 17 | 1 |
| 3 | yoonji | 24 | 1 |
| 4 | ming | 23 | 1 |
| 5 | jelly | 13 | 1 |
| 6 | kein | 30 | 2 |
| 7 | venom | 21 | 2 |
| 8 | zico | 27 | 2 |
| 9 | cherry | 15 | 2 |
| 10 | alley | 25 | 2 |
| 11 | peter | 40 | 2 |
| 12 | lisa | 19 | 2 |
| 13 | oop | 16 | NULL |
| 14 | xoxo | 22 | NULL |
| 15 | coco | 33 | NULL |
| 16 | hoomin | 11 | NULL |
| 21 | lala | 5 | 1 |
| 22 | lulu | 4 | 2 |
| 23 | momo | 7 | NULL |
| 24 | titi | 6 | 2 |
| 25 | hoomin | 33 | 2 |
+----+--------+------+---------+
SELECT * FROM members
WHERE name='hoomin';
SELECT members.name, teams.name FROM members
INNER JOIN teams
ON members.team_id=teams.id AND members.name='hoomin'
SELECT members.name, teams.name FROM members
INNER JOIN teams
ON members.team_id=teams.id
WHERE members.name='hoomin';
SELECT members.name, teams.name FROM members
INNER JOIN teams
ON members.team_id=teams.id;
SELECT COUNT(teams.name) 팀에속한멤버들 FROM teams
JOIN members ON members.team_id=teams.id;
SELECT team_id 팀ID, COUNT(team_id) team_members FROM members
GROUP BY team_id
ORDER BY team_members DESC;
SELECT team_id 팀ID, COUNT(*) team_members FROM members
WHERE team_id IN (1, 2)
GROUP BY team_id;
SELECT team_id 팀ID, COUNT(*) team_members FROM members
WHERE team_id IS NOT NULL
GROUP BY team_id;
GROUP_CONCAT 이라는 문법을 새로 알았다!
SELECT members.team_id, GROUP_CONCAT(members.name) AS 팀원 FROM members
WHERE team_id IS NOT NULL
GROUP BY members.team_id;
SELECT members.team_id, GROUP_CONCAT(members.name) AS 팀원 FROM members
WHERE team_id IS NOT NULL AND members.age > 18
GROUP BY members.team_id;