본문 바로가기

생각정리/데이터베이스

주로 사용하는 SQL문

SELECT

SELECT 찾을 컬럼들 

FROM 테이블명

WHERE 조건

[ ORDER BY 정렬기준 컬럼명 ( 내림차순 DESC 오름차순 ASC ) ]

마지막엔 꼭 세미콜론으로 마무리 하기 

 

- 개수 제한

select * 
from (
    SELECT name 
    from animal_ins
    order by datetime asc
)
where rownum <= 1

SUM, MAX, MIN

- 최댓값

SELECT MAX(컬럼) 

FROM 테이블명

 

- 최솟값

SELECT MIN(컬럼)

FROM 테이블명

 

- 개수

SELECT count(컬럼)

FROM 테이블명

 

중복제거 컬럼 앞에 DISTINCT

GROUP BY

- group by 에 있는 컬럼 개수

SELECT 컬럼, count(*)

FROM 테이블명

group by 컬럼

 

- group by로 사용하는 컬럼에 조건 걸기

SELECT 컬럼, count(*)

FROM 테이블명

GROUP BY 컬럼 HAVAING 조건

 

- 없는 데이터 만들기

SELECT hour, count(o.datetime) as COUNT
from 
(
    select level-1 as hour
    from dual
    connect by level <= 24
)a -- 계층형 쿼리를 이용해 새로운 테이블을 만들어서 사용가능하다.
left join animal_outs o -- 새로운 테이블과 기존 테이블을 조인 시켜서 사용한다.
on a.hour = to_char(o.datetime, 'HH24')
group by hour
order by hour

JOIN

- inner join 교집합

SELECT *
FROM SAWON A INNER JOIN LICENCE B
ON A.SABUN = B.SABUN;

SELECT *
FROM SAWON A, LICENSE B 
WHERE A.SABUN = B.SABUN;

- left outer join 왼쪽 메인

SELECT *
FROM TABLE_A T1 LEFT OUTER JOIN TABLE_B T2
ON T1.COULMN = T2.COLUMN;

SELECT *
FROM SAWON A, LICENSE B 
WHERE A.SABUN = B.SABUN(+);

- right outer join 오른쪽 메인

SELECT *
FROM TABLE_A T1 RIGHT OUTER JOIN TABLE_B T2
ON T1.COULMN = T2.COLUMN;

SELECT *
FROM SAWON A, LICENSE B 
WHERE A.SABUN(+) = B.SABUN;

- Cross join

SELECT *
FROM SAWON A, SAWON B;

- Self join

SELECT *
FROM SAWON A, SAWON B 
WHERE A.SABUN = B.SABUN;

IS NULL

- null 값을 조건으로 찾을 때

where 컬럼 is null

where 컬럼 is not null

 

- null 값을 치환 할때

SELECT NVL(컬럼, 숫자 or 문자 or date)

String, Date

- 포함된 데이터 검색

where 컬럼 in (데이터 1, 데이터 2....)

 

- 포함된 단어 검색 

where 컬럼 like '%단어%' - 단어를 포함하는 데이터

where 컬럼 like '%단어' - 단어로 끝나는 데이터

where 컬럼 like '단어%' - 단어로 시작하는 데이터

where 컬럼 like '%단어%단어%' - 두 단어를 포함하는 데이터

where lower(컬럼) like '%단어%' - 단어를 포함하는 데이터 ( 대소문자 구분없이 - upper를 써도 상관없다. )

where 컬럼 not like '%단어%' - 단어를 포함하지 않는 데이터

where 컬럼 like '%단어' or 컬럼 like '%단어' - 여러 조건의 단어를 포함하는 데이터

where 컬럼 like '%_____' - 언더바 길이만큼의 길이의 데이터 

where 컬럼 like '%____단어' - 언더바 길이만큼의 길이의 데이터 중에 단어로 끝나는 데이터

where 컬럼 like '%____단어%' - 언더바 길이만큼의 길이의 데이터 중에 단어로 끝나는 데이터가 포함된 데이터

WHERE ename LIKE '%\_%' ESCAPE '\' - 언더바 검색 시 ( escape 문자는 데이터에 존재하지않는 임의 문자 ) 

 

- 컬럼에서 조건 나누기

select case when 조건 then 조건이 맞을 때 출력 else 조건이 다를 때 출력 end as 컬럼명출력

 

- datetime 변경

HOUR(datetime) - 변경할 날짜형식(컬럼) // mySQL

to_char(컬럼, 'HH24') - to_char(컬럼, 날짜형식) // oracle 'YYYY-MM-DD-HH-MI-SS-FF'