DB에서 가장 많이 하는 쿼리 문 작업이 뭐냐고 물어본다면 당연히 조회일거다
select를 해서 적합한 데이터를 보여주는게 DB에서 핵심이라고 생각한다!
그래서 어떻게 정확하게 데이터를 보여줄 수 있는지 여기 적어보려고 한다!!
이 전 포스팅에서 잠깐 보여준 select * from employee; 를 하면
그 테이블에 모든 데이터를 보여주게 된다
이제는 유저가 원하는 데이터만을 조회해보자!
문제 - id가 4인 임직원의 이름과 직군을 구해라
- 일단 employee 테이블에 이름과 직군(position)이 있으니 이 테이블을 사용!
- 그리고 원하는 데이터는 name,position이다
- where을 이용해 원하는 데이터만 추출하자!
select name, position from employee where id=4;
이제는 두 테이블 이상을 연관지어서 데이터를 조회해보자
문제 - project 2002를 리딩하는 리더 임직원의 id, 이름, 직군을 구해라
- project 와 employee 안에 프로젝트와 임직원 id.position이 있다
- where을 이용해서 두 테이블을 연관지으면 된다
- 이때 각각 같은 이름을 가진 col이 있으니까 테이블.col로 적어주기!
select employee.name, employee.position from employee, project where project.id=2002 and project.leader_id=employee.id;
위에서 작성할때 정확하게 리더의 이름이라는 것을 알기 얘매하다
그리고 우리의 테이블이름이 길어지면 매번 작성하기 힘들다!!
그래서 그때는 AS라는 별칭을 작성해주는 방법을 사용하면 된다!
select E.id AS leader_id, E.name AS leader_name , e.position from employee AS E, project AS P where p.id=2002 and E.id=p.leader_id;
근데 우리가 원하는 데이터를 출력했는데 데이터가 중복되서 나온다면?
예제) 디자이너들이 참여하고 있는 프로젝트들의 id와 이름을 알고 싶다!
select P.id, P.name
from employee AS E, project AS P, works_on AS W
where E.position="DSGN" and E.id=W.empl_id and W.proj_id=P.id;
저렇게 중복되는 부분을 한개만 보여주고 싶다면 select 다음에 바로 DISTINCT라고 적으면 된다!
select DISTINCT P.id, P.name
from employee AS E, project AS P, works_on AS W
where E.position="DSGN" and E.id=W.empl_id and W.proj_id=P.id;
이름이 N으로 시작하는 임직원의 이름을 조회하라!
1. 일단 테이블은 employee 한개만 있어도 된다!
2. 그리고 where안에 (col) LIKE를 사용해서 'N%'로 적으면 N 다음에 0개 이상의 단어가 오는거!
select name from employee where name LIKE 'N%';
정확히 N으로 시작하고 4글자이름을 구해라!
select name from employee where name LIKE 'N___';