데이터베이스(쉬운코드)

5. SQL로 데이터 조회하기 1부 : select basic

youbing 2024. 11. 28. 12:59
본 내용은 유튜버 쉬운코드의 강의 "데이터베이스"를 참고하여 작성하였습니다.

 

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)을 붙일 때 사용 (생략 가능)

project AS P, employee AS E
이런 식으로 속성에 별칭을 붙이면 출력에도 반영

 

생략 가능


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;

works_on 테이블이 employee와 project 테이블을 연결시켜줌. / 결과

 

중복 제거를 하고 싶으면 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와 관련하여 대표적으로 중요한 기본기들을 담고 있습니다. 그 외에도 여러 기본적인 조회 기능들과 세부 사항들이 있음을 염두해주세요.