SELECT로 데이터 조회
서로 다른 table에서는 attribute 이름이 같아도 상관이 없는데, SELECT를 통해 데이터를 조회하는 과정에서 table의 이름을 붙여주지 않고 attribute 값을 적는다면, 어느 table의 id나 name 값인지 인지하지 못하여 에러가 발생함.
AS
- AS는 table이나 attribute에 별칭(alias)을 붙일 때 사용함. (생략가능)
조회하고 싶은 id와 name의 이름도 AS를 사용하여 leader_id, leader_name으로 보이게 만들 수 있음.
DISTINCT
- select 결과에서 중복되는 tuple을 제외하고 싶을 때 사용함.
(디자이너들이 참여하고 있는 프로젝트들의 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
이름이 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)
어떤 조건의 튜플에서 모든 attribute를 보여줌
without WHERE
조회하기로 설정한 attribute를 모든 튜플에서 보여줌
SELECT로 조회할 때 조건들을 포함해서 조회를 한다면 이 조건들과 관련된 attributes에 index가 걸려있어야 함. 그렇지 않다면 데이터가 많아질수록 조회 속도가 느려짐.
i.g. SELECT * FROM employee WHERE position = 'dev_back';
'DB' 카테고리의 다른 글
7. MySQL 데이터 조회 - 3 (NULL) (0) | 2023.04.29 |
---|---|
6. MySQL 데이터 조회 - 2 (subquery) (0) | 2023.04.29 |
4. SQL 데이터 추가, 수정, 삭제 (0) | 2023.04.27 |
3. SQL 기본개념과 기본문법 (0) | 2023.04.27 |
2. relational data model의 기본개념과 ralational database의 의미 (1) | 2023.04.26 |
댓글