모든 데이터 가져오기
→ all은 생략할 수 있다.
select (all) loc from room;
중복 값을 한 개만 추출할 때 distinct를 붙인다.
select distinct loc from room;
컬럼이 2개 이상일 때
→ 그 커럼들의 값이 중복일 경우만 한 개로 간주한다.
select distinct loc, name from room;
select 컬럼1, 컬럼2, ...
from 테이블
order by 컬럼 (asc || dsc), 컬럼 (asc || dsc), ...
별명이 있을 경우, 컬럼의 값을 추출할 때 별명을 사용해야 한다.
select 컬럼명 (as) 별명, 식 (as) 별명
.
.
.
count()를 호출할 때 컬럼 이름을 지정하면 ,
해당 컬럼의 값이 null 이 아닌 데이터만 카운트한다.
select distinct bank from stnt
union
select distinct bank from tcher;
select distinct bank from stnt
union all
select distinct bank from tcher;
mysql 은 차집합 문법을 지원하지 않는다.
따라서 다음과 기존의 SQL 문법을 사용해서 처리해야 한다.
select distinct bank
from stnt
where not bank in (select distinct bank from tcher);
mysql 은 교집합 문법을 지원하지 않는다.
따라서 다음과 기존의 SQL 문법을 사용해서 처리해야 한다.
select distinct bank
from stnt
where bank in (select distinct bank from tcher);
→ 여러 테이블에 분산 저장된 데이터를 한 개의 데이터로 모으는 것
서로 관련된 테이블의 데이터를 연결하여 추출하는 방법
= Cartesian join
의미 없는 조인
join ~ using
(기준컬럼) 을 사용하여, 두 테이블의 데이터를 연결할 때 기준이 될 컬럼을 지정한다.두 테이블에 같은 이름의 컬럼이 없을 경우 연결하지 못한다
만약 두 테이블에 같은 이름을 가진 컬럼이 없으면, natural join
을 수행하지 못한다.
또한 join using
으로도 해결할 수 없다.
이럴 경우 join ~ on 컬럼a=컬럼b
문법을 사용하여 각 테이블의 어떤 컬럼과 값을 비교할 것인지 지정하라!
Group으로 묶인 경우, Group 함수를 사용할 수 있다.
GROUP BY가 있는데 조건에 부합하는 것이 아무것도 없으면 공집합이 된다.