min's devlog
ANSI SQL 본문
ANSI SQL
DBMS들에서 각기 다른 SQL를 사용하므로, 미국 표준 협회(American National Standards Institute)가 공통적으로 사용할 수 있도록 표준 SQL문을 정립 시켜 놓은 것
- 표준 SQL문이기 때문에 DBMS의 종류의 제약을 받지 않는다. 따라서 대부분의 DBMS에서 사용할 수 있다.
- join문과 where문의 분리로 일반 쿼리문보다 가독성이 좋다.
예시
-- 같은 결과 값을 출력
SELECT a.name,
b.name
FROM MASTER a,
CLIENT b
WHERE a.date = b.date
-- ANSI
SELECT a.name,
b.name
FROM MASTER a JOIN CLIENT b
ON a.date = b.date
OUTER JOIN
- 내부 조인의 반대 개념이다.
- 내부 조인 결과와 + 결과 셋에 포함되지 못한 부모 테이블의 나머지 레코드를 합하는 행동
SELECT
컬럼리스트
FROM 테이블A
INNER JOIN 테이블B
ON 테이블A.컬럼 = 테이블B.컬럼;
SELECT
컬럼리스트
FROM 테이블A
(LEFT|RIGHT) OUTER JOIN 테이블B
ON 테이블A.컬럼 = 테이블B.컬럼;
RIGHT(LEFT) OUTER JOIN
- FROM 절에 RIGHT OUTER JOIN을 명시한다.
- 이 때 OUTER 생략하고 RIGHT JOIN만 명시할 수도 있다.
- 오른쪽 테이블을 기준으로 데이터가 출력되고, 조건에 맞는 왼쪽 테이블의 컬럼이 함께 출력된다.
- LEFT OUTER JOIN과 RIGHT OUTER JOIN은 기준이 되는 테이블이 조인 수행 시, 첫번째로 ACCESS 되는
테이블이 된다.
-- 대여 기록이 있는 회원의 이름과 대여 횟수를 가져오시오.
select
m.name,
count(*)
from tblMember m
inner join tblRent r
on m.seq = r.member
group by m.name;
-- 대여 기록과 무관하게 > 모든 회원의 이름과 대여 횟수를 가져오시오.
select
m.name,
count(rentdate) --**연습
from tblMember m
left outer join tblRent r
on m.seq = r.member
group by m.name
order by count(rentdate) desc;
'til > Oracle' 카테고리의 다른 글
PL/SQL (2) (0) | 2022.05.20 |
---|---|
프로시저(Procedure)와 반복문 (0) | 2022.05.19 |
[Education center] 데이터 생성 (0) | 2022.05.17 |
인덱스(index) (0) | 2022.05.11 |
PL/SQL (0) | 2022.05.09 |
Comments