5. SQL로 데이터 조회하기 1부 : select basic
본 내용은 유튜버 쉬운코드의 강의 "데이터베이스"를 참고하여 작성하였습니다.
SELECT로 데이터 조회하기
알고 싶은 것 1
- ID가 9인 임직원의 이름/직군을 알고 싶다.
SELECT name, position FROM employee WHERE id = 9;
- projection attributes : 찾으려는 속성
- selection condition : where 이하 내용(조건)
SELECT statement
SELECT attribute(s) FROM table(s) [WHERE condition(s)];
알고 싶은 것 2
- project 2002를 이끌고 있는 임직원의ID/이름/직군을 알고 싶다.
SELECT employee.id, employee.name, position FROM employee, project
WHERE project_id = 2002 and project.leader_id = employee.id;
- selection condition : 처음 테이블에서 튜플을 찾는 조건 (project.id = 2002)
- join condition : 두 개의 테이블을 연결시키는 조건 (project.leader_id = employee.id)
id처럼 여러 테이블에서 같은 이름을 쓰는 속성들은 꼭 테이블명도 함께 명시
AS 키워드 사용하기
AS : 테이블이나 attribute에 별칭(alias)을 붙일 때 사용 (생략 가능)
DISTINCT 키워드 사용하기
DISTINCT : select 결과에서 중복되는 tuples은 제외하고 싶을 때 사용
알고 싶은 것
- 디자이너들이 참여하고 있는 프로젝트들의 ID/이름을 알고 싶다.
SELECT P.id, P.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;
중복 제거를 하고 싶으면 DISTINCT 사용 -> SELECT DISTINCT attribute ~~~
LIKE 키워드 사용하기
LIKE : 문자열 pattern matching에 사용
알고 싶은 것 1
- 이름이 N으로 시작하거나 N으로 끝나는 임직원들의 이름을 알고 싶다.
SELECT name FROM employee WHERE name LIKE 'N%' or LIKE '%N';
알고 싶은 것 2
- 이름에 NG가 들어가는 임직원들의 이름을 알고 싶다.
SELECT name FROM employee WHERE name LIKE '%NG%';
알고 싶은 것 3
- 이름이 J로 시작하는, 총 네 글자의 이름을 가지는 임직원들의 이름을 알고 싶다.
SELECT name FROM employee WHERE name LIKE 'J___'; -- '_' 3개
알고 싶은 것 4
- %로 시작하거나 _로 끝나는 프로젝트 이름을 찾고 싶다.
SELECT name FROM employee WHERE name LIKE '\%%' or name LIKE '%\_';
(escape 문자와 함께 사용할 수 있음.)
LIKE 정리
LIKE | 문자열 pattern matching에 사용 | |
reserved character | % | 0개 이상의 임의의 개수를 가 |
_ | 하나의 문자를 의미 | |
escape character | \ | 예약 문자를 escape 시켜서 문자 본연의 문자로 사용하고 싶을 때 사용 |
* (asterisk) 사용하기
* (asterisk) : 선택된 tuples의 모든 attributes를 보여주고 싶을 때 사용
알고 싶은 것
- ID가 9인 임직원의 모든 attributes를 알고 싶다.
SELECT * FROM employee WHERE id = 9;
WHERE 절 없는 SELECT
테이블에 있는 모든 tuples을 반환한다.
알고 싶은 것
- 모든 임직원의 이름과 생일을 알고 싶다.
SELECT name, birth_date FROM employee;
오늘 영상 관련 주의사항
1. SELECT로 조회할 때 조건들을 포함해서 조회를 한다면 이 조건들과 관련된 attributes에 index가 걸려있어야 합니다. 그렇지 않다면 데이터가 많아질수록 조회 속도가 느려집니다.
SELECT * FROM employee WHERE position = 'dev_back';
2. 오늘 내용은 MySQL 기준입니다. 다른 RDBMS의 SQL 문법은 조금씩 다를 수 있습니다.
3. 오늘 영상은 SELECT와 관련하여 대표적으로 중요한 기본기들을 담고 있습니다. 그 외에도 여러 기본적인 조회 기능들과 세부 사항들이 있음을 염두해주세요.