DB - 테이블에서 데이터를 다양하게 조회해보자 (select)

박경현·2023년 8월 24일
0

DB에서 가장 많이 하는 쿼리 문 작업이 뭐냐고 물어본다면 당연히 조회일거다

select를 해서 적합한 데이터를 보여주는게 DB에서 핵심이라고 생각한다!
그래서 어떻게 정확하게 데이터를 보여줄 수 있는지 여기 적어보려고 한다!!

selet로 조회하기

이 전 포스팅에서 잠깐 보여준 select * from employee; 를 하면
그 테이블에 모든 데이터를 보여주게 된다

이제는 유저가 원하는 데이터만을 조회해보자!

특정 테이블에 담긴 데이터를

문제 - id가 4인 임직원의 이름과 직군을 구해라

  1. 일단 employee 테이블에 이름과 직군(position)이 있으니 이 테이블을 사용!
  2. 그리고 원하는 데이터는 name,position이다
  3. where을 이용해 원하는 데이터만 추출하자!
select name, position from employee where id=4;

두 테이블을 사용해서 데이터를 조회해보자

이제는 두 테이블 이상을 연관지어서 데이터를 조회해보자

문제 - project 2002를 리딩하는 리더 임직원의 id, 이름, 직군을 구해라

  1. project 와 employee 안에 프로젝트와 임직원 id.position이 있다
  2. where을 이용해서 두 테이블을 연관지으면 된다
  3. 이때 각각 같은 이름을 가진 col이 있으니까 테이블.col로 적어주기!
select employee.name, employee.position from employee, project where project.id=2002 and project.leader_id=employee.id;

AS를 이용해 원하는 이름으로 조회하기

위에서 작성할때 정확하게 리더의 이름이라는 것을 알기 얘매하다
그리고 우리의 테이블이름이 길어지면 매번 작성하기 힘들다!!
그래서 그때는 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;

DISTINCT를 이용해 데이터 조회 중복을 제거하자

근데 우리가 원하는 데이터를 출력했는데 데이터가 중복되서 나온다면?

예제) 디자이너들이 참여하고 있는 프로젝트들의 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;

LIKE를 이용해 원하는 단어를 가진 데이터를 조회하자

이름이 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___';
profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글