2025년 1월 9일
SQL로 데이터 조회하기
cleanUrl: /SQL로-데이터베이스에-데이터-추가-수정-삭제하기
1. 지난 포스팅 리마인드1.1. IT 회사 RDB 스키마2. 데이터 조회하기 (SELECT)2.1. 조회 명령 (SELECT statement)2.2. 실습SELECT 기초AS 키워드 사용하기DISTINCT 키워드 사용하기LIKE 키워드 사용하기* (asterisk) 사용하기WHERE 절 없는 SELECT참고 자료
1. 지난 포스팅 리마인드
- IT 회사 RDB 만들기
- 부서, 사원, 프로젝트 관련 정보들을 저장할 수 있는 RDB를 지난 포스팅에서 만들어보았다.
- RDBMS는 MySQL(InnoDB)를 사용
1.1. IT 회사 RDB 스키마
- DEPARTMENT
id | name | leader_id |
- EMPLOYEE
id | name | birth_date | sex | position | salary | dept_id |
- PROJECT
id | name | leader_id | start_date | end_date |
- WORKS_ON
empl_id | proj_id |
2. 데이터 조회하기 (SELECT)
2.1. 조회 명령 (SELECT statement)
SELECT attribute(s) FROM table(s) [ WHERE condition(s) ];
2.2. 실습
SELECT 기초
- project 22를 리딩(leading)하고 있는 임직원의 ID와 이름과 직군을 알고 싶다.
SELECT EMPLOYEE.id, EMPLOYEE.name, position FROM EMPLOYEE, PROJECT WHERE PROJECT.id = 2002 and PROJECT.leader_id = EMPLOYEE.id;
PROJECT.id = 22 ⇒ selection conditionPROJECT.leader_id = EMPLOYEE.id ⇒ join conditionEMPLOYEE.id, EMPLOYEE.name, position ⇒ projection attributes
- 두 개 이상의 테이블이 조인되면, 동일한 이름의 열이 여러 테이블에 존재하거나 잠재잭으로 존재할 가능성이 있으므로 각 열 이름 앞에 테이블 이름을 명시적으로 지정하는 것을 권장한다.
SELECT EMPLOYEE.id, EMPLOYEE.name, position FROM EMPLOYEE, PROJECT WHERE PROJECT.id = 2002 and PROJECT.leader_id = id;

AS 키워드 사용하기
- AS는 테이블에 별칭(alias)을 붙일 때 사용한다.
SELECT E.id, E.name, position FROM EMPLOYEE AS E, PROJECT AS P WHERE P.id = 22 and P.leader_id = E.id;

- AS는 생략 가능하다.
SELECT E.id, E.name, position FROM EMPLOYEE E, PROJECT P WHERE P.id = 2002 and P.leader_id = E.id;

- AS는 attribute에도 별칭(alias)을 붙일 수 있다.
SELECT E.id AS leader_id, E.name AS leader_name, position FROM EMPLOYEE E, PROJECT P WHERE P.id = 2002 and P.leader_id = E.id;

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;

- 중복된 튜플 제거
SELECT DISTINCT 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;

LIKE 키워드 사용하기
기능 | 문자 | 설명 |
LIKE 연산자 | ㅤ | 문자열 패턴 매칭(pattern matching)에 사용되는 SQL 연산자 |
예약 문자 | % | 0개 이상의 문자와 매칭 |
단일 문자 매칭 | - | 1개의 문자와 매칭 |
이스케이프 문자 | \ | 특수 문자를 escape시켜서 일반 문자로 취급 |
- 이름이 N으로 시작하거나 N으로 끝나는 임직원들의 이름을 알고 싶다.
SELECT name FROM EMPLOYEE WHERE name LIKE 'N%' OR name LIKE '%N';

- 이름에 NG가 들어가는 임직원들의 이름을 알고 싶다.
SELECT name FROM EMPLOYEE WHERE name LIKE '%NG%';

- 이름이 J로 시작하는, 총 네 글자의 이름을 가지는 임직원들의 이름을 알고 싶다.
SELECT name FROM EMPLOYEE WHERE name LIKE 'J____';

- %로 시작하거나 _로 끝나는 프로젝트 이름을 찾고 싶다면?
SELECT name FROM PROJECT WHERE name LIKE '\%%' OR name LIKE '%\_';
* (asterisk) 사용하기
- * (asterisk)는 선택된 tuples의 모든 attributes를 보여주고 싶을 때 사용한다.
- ID가 9인 임직원의 모든 attributes를 알고 싶다.
SELECT * FROM EMPLOYEE WHERE id = 9;

- 조인된 테이블에서 * (asterisk)로 전체 열 조회하기
- 결과적으로 조인된 테이블에서 두 테이블의 열이 모두 반환된다.
- 카티션 곱(Cartesian Product) 방식
SELECT * FROM EMPLOYEE, PROJECT WHERE PROJECT.id = 2002 and PROJECT.leader_id = EMPLOYEE.id;

WHERE 절 없는 SELECT
- 테이블에 있는 모든 tuples를 반환한다.
- 모든 임직원의 이름과 생일을 알고 싶다.
SELECT name, birth_date FROM EMPLOYEE;

참고 자료

(1부) SQL로 데이터 조회하기! select를 활용해서 데이터를 읽어오는 기본적인 문법과 관련 키워드들을 배워봅시다~! 쉬운 예제, 쉬운 설명! 놓치지 마세요~ ;)
#sql #select #database #db #as #distinct #like #asterisk #dml #dql #mysql #쉬운코드 #백발백중 이번 영상은 SQL을 통해 데이터를 조회하는 기본적인 방법을 배워봅니다. select 키워드를 통해 데이터를 읽어올 수 있는데요, 이 때 사용되는 있는 다양한 키워드(AS, DISTINCT, LIKE, *)들도 배우게 됩니다~ 다양한 예제와 함께 설명하니까요, 유익하고 재밌게 봐주세요 :) 00:00 인트로 00:10 지난 내용 리마인드 00:59 SELECT로 데이터 조회하기 11:15 AS 키워드 사용하기 14:14 DISTINCT 키워드 사용하기 17:31 LIKE 키워드 사용하기 22:30 *(asterisk) 사용하기 23:55 where절 없는 select 24:23 오늘 영상 관련 주의사항 25:38 마무으리
다음 글
