select replace('_SQL_CLASS','_','NO');
결과 NOSQL_CLASS
나이 <= 22 or 성별 = '여' and 결혼유무 = '기혼'
where 컬럼명 in('데이터A','데이터B')
결과 : 컬럼에서 데이터A 또는 데이터B 인 데이터를 가져옴
where 컬럼명 between 20 and 22
결과 : 20이상 22이하인 데이터 가져옴
where 컬럼명 is null
결과 : null인 데이터 가져옴
where 컬럼명 is null or (컬럼명 between 20 and 22)
where 컬럼명 is not null
select *
from human2
where 번호 like 'b%';
(첫번째 글자 b로 시작하는거는 전부 가져옴)
결과 : b1, bba2, bd3, 등등
where 번호 like'b[0-9][a-z]'
(a-z 는 대소문자 구분 안함)
where 번호 like '[ab]%'
(처음 글자가 a나 b로 시작하고 그 뒤는 없던지 여러개든지 데이터 가져옴)
where 번호 not like '[a-z][0-9][0-9]'
(번호가 영어1개, 숫자2개가 아닌 데이터 가져옴)
select concat('',거주지)
from human2
for xml path('tag')
결과 : <tag>부천 </tag><tag>부천 </tag><tag>부산 </tag>
----------
select concat('',거주지)
from human2
for xml path('')
-- as로 컬럼명을 정해주지 않아서 태그에 자동으로 추가가 안됨
결과 : 부천 부천 부산 순천 왕십리포항 서울
----------
select 거주지
from human2
for xml path('')
결과 : <거주지>부천 </거주지><거주지>부천 </거주지><거주지>부산 </거주지>
----------
select 거주지
from human2
for xml path('tag')
결과 : <tag><거주지>부천 </거주지></tag><tag><거주지>부천 </거주지></tag>
-- for xml path()에서 path()에 ''만 넣으면 컬럼명이 있을때는
-- 자동으로 컬럼명을 태그로 만들어주지만 없으면 그냥 없는 채로 출력된다.
-- 컬럼명이 있는데 또 path에 추가하면 거기서 또 태그가 추가된다.
select stuff((select concat(',',거주지)
from human2
for xml path('')),1,1,'') 내역;
-- concat으로 앞에 ,를 합쳐줌
-- stuff로 앞의 ,를 지워줌
결과 : 부천 ,부천 ,부산 ,순천 ,왕십리,포항 ,서울
--------
select stuff((select concat(',',거주지)
from human2
for xml path('')),1,2,'') 내역;
--문자길이 부분에 2를하면
-- (,부) 를 ''로 대체
결과 : 천 ,부천 ,부산 ,순천 ,왕십리,포항 ,서울
select 성별 ,stuff((select concat(',',거주지)
from human2
for xml path('')),1,1,'') 내역
from human2
group by 성별
결과 : 성별 | 내역
남 부천, 부천, 부산, 순천, 포항
여 | 부천, 부천, 부산, 순천,
---------
select 성별 ,stuff((select concat(',',거주지)
from human2
where 성별 = a.성별
for xml path('')),1,1,'') 내역
from human2 a
group by 성별
결과 : 성별 | 내역
남 부천, 순천, 포항
여 | 부천, 부산, 왕십리, 서울
select left(번호,1) id, avg(나이) 평균나이
from human2
group by left(번호,1)
having avg(나이) > 20
결과 : id | 평균나이
a 30
b 29
-- 특이한 점
select left(번호,1) id, avg(나이) 평균나이
from human2
group by left(번호,1)
having avg(나이) > 20
-- 오라클(oracle)에서는 group by left(번호,1) as a 로 하면
-- select 절에서 a만 적어도 쿼리문 실행순서로 인해서 인식을 하는데
-- msSQL은 인식을 못한다....
-------------------
-- 미혼이거나 여자인 고객 중 적어도 2명 이상의 고객이 사는 거주지 및 고객수
-- (고객수 기준 내림차순)
select 거주지, count(*) 고객수
from human2
where 결혼유무 = '미혼' or 성별 = '여'
group by 거주지
having count(*) >= 2
order by 고객수 desc
결과 : 부천 2