Dev::SQL Server

SQL Server 2005

bluemong 2010. 5. 3. 03:26
반응형

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