ID가 9인 임직원의 이름과 직군을 알고 싶다.
mysql> SELECT name, position FROM employee WHERE id=9;
+-------+----------+
| name | position |
+-------+----------+
| HENRY | HR |
+-------+----------+
1 row in set (0.00 sec)
SELECT projection attributes FROM table(s)_name WHERE selection condition and join condition
project 2002를 리딩하고 있는 임직원의 ID와 이름과 직군을 알고 싶다. (다중 조건 쿼리문)
mysql> SELECT employee.id, employee.name, position//project에도 id,name table가 있어서 구분 필요!!
-> FROM project, employee
-> WHERE project.id = 2002 and project.leader_id=employee.id;
+----+--------+----------+
| id | name | position |
+----+--------+----------+
| 13 | JISUNG | PO |
+----+--------+----------+
1 row in set (0.01 sec)
mysql> SELECT E.id, E.name, position
-> FROM project AS P, employee AS E
-> WHERE P.id = 2002 AND P.leader_id=E.id;
+----+--------+----------+
| id | name | position |
+----+--------+----------+
| 13 | JISUNG | PO |
+----+--------+----------+
1 row in set (0.00 sec)
mysql> SELECT E.id AS leader_id, E.name AS leader_name, position
-> FROM project AS P, employee AS E
-> WHERE P.id = 2002 AND P.leader_id=E.id;
+-----------+-------------+----------+
| leader_id | leader_name | position |
+-----------+-------------+----------+
| 13 | JISUNG | PO |
+-----------+-------------+----------+
1 row in set (0.00 sec)
디자이너들이 참여하고 있는 프로젝트들의 ID와 이름을 알고 싶다.
SELECT P.id project_id, P.name project_name
-> FROM employee AS E, works_on AS W, project AS P
-> WHERE E.position='DSGN'and
-> E.id=W.empl_id and W.proj_id=P.id;
+------------+------------------+
| project_id | project_name |
+------------+------------------+
| 2003 | 홈페이지 UI 개선 |
| 2003 | 홈페이지 UI 개선 |
+------------+------------------+
2 rows in set (0.00 sec)
중복 되는 값 제외
SELECT DISTINCT P.id project_id, P.name project_name
-> FROM employee AS E, works_on AS W, project AS P
-> WHERE E.position='DSGN'and
-> E.id=W.empl_id and W.proj_id=P.id;
+------------+------------------+
| project_id | project_name |
+------------+------------------+
| 2003 | 홈페이지 UI 개선 |
+------------+------------------+
2 rows in set (0.00 sec)
이름이 N으로 시작하거나 N으로 끝나는 임직원들의 이름을 알고 싶다.
SELECT name
-> FROM employee
-> WHERE name LIKE'N%' or name LIKE'%N';
+--------+
| name |
+--------+
| BROWN |
| NICOLE |
+--------+
2 rows in set (0.00 sec)
이름에 NG가 들어 가는 임직원의 이름을 알고 싶다.
SELECT name
-> FROM employee
-> WHERE name LIKE'%NG%';
+--------+
| name |
+--------+
| DINGYO |
| JISUNG |
+--------+
2 rows in set (0.00 sec)
이름이 J로 시작하는, 총 네 글자의 이름을 가지는 임직원들의 이름을 알고 싶다.
SELECT name FROM employee WHERE name LIKE'J___';
+------+
| name |
+------+
| JANE |
+------+
1 row in set (0.00 sec)
escape 문자와 함께 LIKE 사용하기
mysql> SELECT name FROM project WHERE name LIKE '\%%' or name LIKE '%_';
Empty set (0.00 sec)
LIKE 정리
*(asterisk)는 선택된 tuples의 모든 attributes를 보여주고 싶을 때 사용한다.
ID가 9인 임직원의 모든 arrtibutes를 알고 싶다.
SELECT * FROM employee WHERE id=9;
+----+-------+------------+------+----------+----------+---------+
| id | name | birth_date | sex | position | salary | dept_id |
+----+-------+------------+------+----------+----------+---------+
| 9 | HENRY | 1982-05-20 | M | HR | 82000000 | NULL |
+----+-------+------------+------+----------+----------+---------+
1 row in set (0.00 sec)
두 table에 대한 모든 attributes가 출력된다.
SELECT *
-> FROM project, employee
-> WHERE project.id = 2002 and project.leader_id=employee.id;
+------+-----------------------------+-----------+------------+------------+----+--------+------------+------+----------+----------+---------+
| id | name | leader_id | start_date | end_date | id | name | birth_date | sex | position | salary | dept_id |
+------+-----------------------------+-----------+------------+------------+----+--------+------------+------+----------+----------+---------+
| 2002 | 확장성 있게 백엔드 리팩토링 | 13 | 2022-01-23 | 2022-03-23 | 13 | JISUNG | 1989-07-07 | M | PO | 90000000 | 1005 |
+------+-----------------------------+-----------+------------+------------+----+--------+------------+------+----------+----------+---------+
1 row in set (0.00 sec)
WHERE없는 SELECT
테이블에 있는 모든 tuples을 반환 한다.
모든 임직원의 이름과 생일을 알고 싶다.
SELECT name, birth_date
-> FROM employee;
+---------+------------+
| name | birth_date |
+---------+------------+
| MESSI | 1987-02-01 |
| JANE | 1996-05-05 |
| JENNY | 2000-10-12 |
| BROWN | 1996-03-13 |
| DINGYO | 1990-11-05 |
| JULIA | 1986-12-11 |
| MINA | 1993-06-17 |
| HENRY | 1982-05-20 |
| NICOLE | 1991-03-26 |
| SUZANNE | 1993-03-23 |
| CURRY | 1998-01-15 |
| JISUNG | 1989-07-07 |
| SAM | 1992-08-04 |
+---------+------------+
13 rows in set (0.00 sec)
7. SQL로 데이터 조회하기 (0) | 2023.08.21 |
---|---|
6. SQL로 데이터 조회하기 2 (0) | 2023.08.18 |
4. 테이블에 데이터 추가/수정/삭제 하기 (0) | 2023.08.14 |
3-2. 데이터베이스 생성하기 (0) | 2023.08.10 |
3-1. 데이터베이스 생성하기 (0) | 2023.08.09 |