EXEC sp_helpdb;
EXEC sp_tables @table_type = "'TABLE'";
# DB Backup
USE master
BACKUP DATABASE sqlDB TO DISK='C:\sqlDB.bak'
# BETWEEN
select name
from data
where age BETWEEN 10 AND 20
# IN
select name
from data
where age in (11, 12, 13)
# SubQuery
select name
from data
where age >= (select age from area_user where code = '01')
-- SubQuery가 2개 이상의 결과값을 가져온다면, 비교연산자를 쓸 수가 없다.
-- => 해결방안 ANY 또는 SOME을 사용하면 된다.
select name
from data
where age >= ANY (select age from area_user where code = '01')
* =ANY(SubQuery), IN(SubQuery) 같은 의미다.
cf. ALL
# TOP
-- select top (select count(*)/100 from data)
select TOP(0.1) PERCENT name
from data
order by name, idate desc
-- WITH TIES : 마지막 출력 값과 동일한 값이 있다면 N%가 넘더라도 출력하는 옵션
select TOP(0.1) PERCENT WITH TIES name
from data
order by name, idate desc
# TABLESAMPLE
- 전체에서 무작위로 일정한 샘플 데이터를 추출
- 대량의 데이터가 있는 테이블에서는 제대로 실행되지만, 그렇지 않고 소량의 데이터가 있는 테이블에서는
정상동작하지 않는다. => 샘플링 개수는 행이 아니라, 페이지(Page)를 기준으로 하기 때문이다.
select *
from data TABLESAMPLE(10 PERCENT)
# 집계 함수
AVG, MIN, MAX, COUNT, COUNT_BIG, STDEV(표준편차를 구한다)
select name
from data
where age = (select max(age) from data)
or
age = (select min(age) from data)
-- NULL 값은 제외하고 COUNT
select count(tel)
from data
# HAVING
- HAVING 절은 꼭 GROUP BY 절 다음에 와야 한다.
select name
from data
group by addr_code
HAVING sum(amount*vat) > 10000 -- cf. SELECT value (항목)이 아니어도 된다.
'Dev::SQL Server' 카테고리의 다른 글
Index 조각화된 상태 조회 (0) | 2010.11.30 |
---|---|
Index Rebuild, Reorgnize (0) | 2010.11.30 |
I/O 비용이 가장 높은 Query 조회 (0) | 2010.11.30 |
CPU 비용이 가장 높은 Query 확인 (0) | 2010.11.30 |
NULL 데이터가 있는 table 조회 (0) | 2010.04.30 |