MS SQL Server 2000

Document Sample
MS SQL Server 2000 Powered By Docstoc
					             MS SQL Server 2000
             한권으로 끝내기




                                             김   병  직
                                             ㈜ 사이버출판사




2012-05-28              MS SQL Server 2000              1
      1. SQL Server 2007 소개.
            SQL server의 변천사.
                SQL Server 1.0의 등장.
                     Unix 기반의 sybase제품의 DbLibrary이용
                     1989년 OS/2 기반으로 등장.


                SQL Server v4.2
                     OS/2 기반으로 16Bit 버전으로 1992년에 처음 발표
                     Windows NT를 위해 32Bit 버전으로 포팅되기 시작하면서 대중적인 눈길을 끌
                      게됨.
                     OS/2버전을 포기하고, Windows NT 만을 위한 제품을 만들게 됨.


                SQL Server v6.x
                     Sybase의 Dblibrary의 소스를 완전하게 소유하게 됨. 소스 수정 가능
                     1995년에 자체 업그레드한 v6,0 개발.
                     V6.5는 인터냇을 지원하기 시작 했으며, 데이터 웨어하우스 기능도 일부 지원.




2012-05-28                         MS SQL Server 2000                2
      1. SQL Server 2007 소개.(cont)
        SQL server의 변천사.(cont)
                Spnix의 등장(V7.0)
                     전 버전들과는 완전히 차별화된 구조를 지님.
                     Sybase의 Dblibrary를 버리고 COM을 기반의 MSDE(Microsoft Database
                      Engine) 1.0 개발
                     Tera단위의 대용량 데이터베이스를 훌륭하게 운영하게 됨.
                     1999년 1월에 발표.

                MS SQL Server 2000 (V8.0)
                     v7.0이 출시 2년 후 등장.
                      Windows DNA 플랫폼 지원

                MS SQL Server 2002
                     .NET 플랫폼을 위한 데이터 서비스 제공

                MS SQL Server 2007
                     데이터 웨어하우스, 비즈니스 인텔리전스에 효과적으로 대응하기 위함
                     .NET, C#, CLR(Common Language Runtime) 기반 언어 이용한 프로그램 편의
                      제공




2012-05-28                            MS SQL Server 2000                        3
      1. SQL Server 2007 소개.(cont)
            Windows DNA(Distributed interNet Architecture)

                 Windows DNA의 목표는 상호 운영성이 있는 웹 응용프로그램을 위한 하나
                  의 공통된 패러다임.

                 Windows DNA는 다음과 같은 기술을 포함하고 있다.
                      메시징
                      데이터 관리부분
                      데이터 웨어하우징
                      다른 기업 응용프로그램과의 통합성
                      XML 기술
                      웹 브라우저를 비롯하여 모든 종류의 클라이언트를 통한 프리젠테이션.




2012-05-28                        MS SQL Server 2000           4
      1. SQL Server 2007 소개.(cont)
            SQL Server의 새로운 기능.
                관계형 엔진의 기능 향상.
                     XML지원.
                     사용자 정의 함수
                     인덱스된 뷰, 분산 분할된 뷰의 지원.
                     새로운 데이터형의 도입 : big_int, sql_variant, table 형
                     인덱스 기능의 향상 : 계산된 컬럼에 인덱스 사용
                     연계 참조 무결성 지원.
                     컬럼 단위 다국어 지원.
                     INSTEAD OF 및 AFTER 트리거.


                Admin 기능의 기능 향상.
                     다중 인스턴스의 지원.
                     64GB 메모리 지원 : 대용량의 메모리 지원
                     새롭게 디자인된 SQL Server 쿼리 분석기.




2012-05-28                           MS SQL Server 2000              5
      1. SQL Server 2007 소개.(cont)
            SQL Server의 새로운 기능.

                Admin 기능의 기능 향상.(cont’d)
                     로그 전달
                     데이터베이스 복사 마법사.
                     복제(Replication) 기능 향상
                     DTS(Data Transformation Service) 기능 향상




2012-05-28                            MS SQL Server 2000       6
                MS SQL Server 구조




210.115.58.68

2012-05-28          MS SQL Server 2000   7
             MS SQL Server 구조(계속)




2012-05-28         MS SQL Server 2000   8
      3. SQL Server 2000 설치.
            SQL Server 2000의 버전들.
                Handled PC version : Windows CE를 운영체제로 사용하는 Handled PC
                 에서 설치되고 운영될 수 있는 버전.
                Personal Edition : Desktop 운영체제에서 사용되는 개인용 Edition.
                Standard Edition : 소규모 회사나 대규모 Enter-prise의 작업용으로 사용.
                Enterprise Edition : 대규모 웹사이트나 초대형 데이터 웨어하우스 등에 사
                 용.


            SQL Server 인스턴스 옵션 선택.
                설치 전 SQL Server 인스턴스에 대한 계획을 세운다.
                     SQL Server2000은 하드웨어 리소스가 허용하는 한도에서 여러 번 설치 가능하
                      며, 각각 서로 다른 인스턴스로 구분.




2012-05-28                       MS SQL Server 2000                  9
      5. SQL Server 2000 구조.
            네트워크 구조
                Super Socket과 공유 메모리.
                     모든 통신은 Super Socket이 책임, 여러 인스턴스간의 통신은 공유 메모리가 책
                      임.
                     TCP/IP나 명명된 파이트등의 이제까지 알려진 네트워크 구성요소들은 위 두개
                      의 Net-Library와는 별도로 운영.


                SAN ( System Area Network)
                     SQL Server 2000 Enterprise Edition에서 이용가능.
                     현재 사용되는 네트워크 대역보다 훨씬 빠른 속도로 통신.


                ODS (Open Data Services)
                     SQL Server에서 클라이언트 관리자처럼 동작.
                     외부로부터의 통신을 책임지는 Net-Library와 내부의 관계형 엔진간 교두보 역
                      할.




2012-05-28                          MS SQL Server 2000              10
      5. SQL Server 2000 구조.(cont)
            관계형 데이터베이스 엔진
                관계형 엔진 : ODS로 부터 접수되는 모든 쿼리를 해석하고 최적화하는 역
                 할을 담당하는 구성요소들로 이루어짐.
                     SQL 문장의 해석
                     수행계획의 최적화
                     수행계획에 정의된 내용대로 SQL 문장을 수행하는 역할
                     수행된 결과를 볼 수 있는 포맷으로 바꾸어 주는 역할
                저장소 엔진
                     PAGE : 가장 기본적인 저장단위, 연속된 8KByte로 이루어짐.
                     익스텐트 : 여덟 개의 연속된 패이지는 하나의 익스텐트가 됨.
                     연속된 여덟 개의 익스텐트는 0.5MByte의 크기가 됨.
                     0.5MByte는 SQL Server 2000에서 생성할 수있는 데이터베이스의 최소 크기
                      ( 실제로는 1MByte 단위로 생성)
                     NTFS파일 시스템을 이용한 데이터 파일 또는 로그파일위에 생성되고 저장됨.




2012-05-28                        MS SQL Server 2000                      11
      5. SQL Server 2000 구조.(cont)
            메모리 관리
                SQL Server 2000은 동적 자기관리를 수행, 메모리 관리자는 이러한 동적
                 메모리 관리의 책임을 진다.
                메모리 관리자는 다음과 같은 구성요소들로 이루어짐.
                     버퍼 관리자.
                     Lazy Writer
                     체크포인트.
                메모리 관리자의 특징.
                     In-Memory Page에 엑세스 : 버퍼에 접근하기 위해 버퍼에 대한 포인터를 메모
                      리에 보관하며 이를 위해 해싱 알고리즘을 사용.
                     Merry – Go – Round 방식의 스캔 : SQL Server 2000 기업용 버전에서만 제공됨,
                      패이지에 대한 동시 접근을 허용.




2012-05-28                          MS SQL Server 2000                       12
      5. SQL Server 2000 구조.(cont)
            트랜잭션과 복구 구조
                SQL Server 2000에서 모든 작업은 모두 트랜잭션 로그라는 특별한 구조에
                 저장.
                로그 관리자.
                     버퍼에 올려진 내용은 어느 시점에서 물리적인 디스크에 존재하는 트랜잭션 로
                      그로 옮겨지게 됨 하지만 버퍼 패이지에 기록되어 있는 내용이 곧바로 트랜잭션
                      로그로 옮겨 질 수는 없다.
                     이렇게 곧바로 옮겨 담을 수 없는 버퍼 페이지의 내용을 트랜잭션 로그에 담을
                      수 있도록 특정한 형태로 포맷하는 역할.
                트랜잭션 로깅.
                     시스탬 오류가 발생할 경우, 복구를 위해 트랜잭션 로그는 모든 내용이 적용될지,
                      하나도 적용되지 않을지를 판단하는 기준이 됨.
                LSN을 이용하는 SQL Server
                     LSN (Log Sequence Number) : SQL Server에서 각 로그 레코드를 구분.




2012-05-28                          MS SQL Server 2000                         13
      6.데이터베이스와 파일.
            데이타베이스의 간단한 구조




                     사용자 테이블                 데이터 화일


       사용자




                   논리적 데이타베이스                물리적 데이타베이스




2012-05-28              MS SQL Server 2000            14
      6.데이터베이스와 파일.
            파일과 파일 그룹
                SQL Server 2000에서는 세 종류의 파일을 사용.
                     .mdf : 주 데이터베이스를 저장, 시스템 테이블이 저장 되며 테이블이나 기타 오
                      브젝트를 생성.
                     .ndf : 보조적으로 사용되는 데이터 파일. 시스템 테이블들을 제외한 사용자 테이
                      블 또는 기타 SQL Server의 오브젝트들이 저장.
                     .ldf : 로그가 저장되는 파일.


                SQL Server 2000 파일 그룹.
                     파일들의 논리적 집합을 의미.
                        여러 개의 ‘.mdf’ 파일들은 PRIMARY라고 하는 파일 그룹의 일원이 될 수
                         있다.
                        ‘.ndf’ 파일들은 EXTENDED 라고 하는 파일 그룹의 일원이 될 수 있다.

                     파일의 구성
                        Page : 최소의 저장 단위, 8Kbytes

                        Extent : 8개 페이지, 64Kbytes, 하나의 테이블이나 인덱스는 하나의
                         extent에 저장됨
                     파일 그룹을 서로 다른 디스크에 저장하여 성능 향상 및 안정성을 높일 수 있음




2012-05-28                        MS SQL Server 2000                 15
      6.데이터베이스와 파일.(cont)
            데이터베이스 생성.
                SQL Server Management Studio를 이용하여 데이터베이스 생성.
                해당 SQL Server에서 Databases 객체 위에서 마우스 오른쪽 버튼을 눌러
                 New Database.. 선택.




2012-05-28                    MS SQL Server 2000               16
      6.데이터베이스와 파일.(cont)
                데이터베이스를 만드는 화면이 표시.
                    새 데이터베이스 이름을 입력, 편의상 dbpgm 이라고 입력..
                    dbpgm.mdf와 dbpgm_log.ldf와 같은 명을 가진 파일이 생성.




2012-05-28                         MS SQL Server 2000             17
      6.데이터베이스와 파일.(cont)
            CREATE DATABASE문을 이용한 데이터베이스 생성
                Mydb라는 데이터 베이스를 만드는 예제.
                 o NAME : 내부적으로 사용될 데이터베이스 파일의 놀리적인 이름
                 o FILENAME : 데이터베이스 파일의 물리적인 위치와 파일명
                 o SIZE : 데이터베이스의 초기 사이즈
                 o MAXSIZE : 데이터베이스가 증가될 수 있는 최대 사이즈, 지정되지 않으
                 면 하드디스크가 허용하는한 무작정 사이즈 증가.
                 o FILEGROWTH : 데이터베이스 공간이 부족할 떄 자동으로 증가하게되는
                 사이즈

                쿼리 분석기를 통해서 create database문을 이용하여 mydb데이터 베이스
                 를 만든다. ( F5로 작성한 sql문을 실행)




2012-05-28                    MS SQL Server 2000             18
      6.데이터베이스와 파일.(cont)
        < ‘Mydb’ 데이터베이스를 만드는 T-SQL 문.>

             CREATE DATABASE MyDB
             ON(NAME = MyDB_Data,
             FILENAME = 'C:\Temp\MyDB.mdf',
             SIZE = 10MB,
             MAXSIZE = 40MB,
             FILEGROWTH = 5MB )

          LOG ON
          (NAME = MyDB_Log,
          FILENAME = 'C:\Temp\MyDB.ldf',
          SIZE = 5MB,
          MAXSIZE = 25MB,
          FILEGROWTH = 5MB)
         GO




2012-05-28                             MS SQL Server 2000   19
      6.데이터베이스와 파일.(cont)
            < ‘Mydb’ 데이터베이스를 만드는 T-SQL 문.>     설명.
                우선 C:\Temp 폴더가 존재하고 있어야 합니다. 그렇지 않으면 오류가 발
                 생.
                실제 OS상에서 데이터는 MyDB.mdf로 로그는 MyDB.ldf로 C:\Temp 폴
                 더에 저장.
                Mydb.mdf와 MyDB.ldf는 SQL Server 내에서는 MyDB_Data와 MyDB_Log
                 라는 이름으로 관리.
                만들어지는 데이터베이스의 사이즈는 10MB이며, 40MB까지 5MB씩 증가
                 할 수 있다.
                로그의 경우는 처음 5MB 사이즈로 만들어지고 25MB까지 5MB씩 증가 할
                 수 있다.
                위에서 제시한 MAXSIZE에 도달하면 더 이상 데이터 기록이 불가능,
                 MAXSIZE를 지정하지 않으면 디스크가 허용하는 한 무작정 증가합니다.

                T-sql 부분에서 sql 사용과 쿼리 분석기의 사용에 대해 설명.




2012-05-28                       MS SQL Server 2000                   20
      6.데이터베이스와 파일.(cont)
            데이터 베이스 관리.
                데이터베이스 관리에 포함되는 작업들.
                     데이터 증가에 따른 파일 사이즈 변경
                     트랜잭션 로그 모니터링
                     필요에 따른 데이터베이스 사이즈 줄이기
                     데이터베이스 삭제


                ALTER DATABASE와 DROP DATABASE등의 SQL 구문을 사용하여 데이
                 터베이스를 관리, 혹은 SQL Server Management Studio를 이용하여 관리




2012-05-28                      MS SQL Server 2000               21
      7.테이블
            테이블의 향상된 기능.
                다국어 지원 기능
                     다국어 지원기능을 위해 unicode 데이터형이라는 새로운 데이터형이 도입
                새로운 데이터형.
                     Bigint : -2^63~2^63-1까지의 정수를 저장.
                     sql_variant : 비쥬얼 베이직의 variant 데이터형과 유사. 어떤 값이 저장 될지 잘
                      모를때 사용.
                     Table : 결과값으로 return 될 수 있는 결과집합 등을 저장할 수 있는 새롭게 도
                      입된 데이터형.
                연계 참조 무결성 제약조건.
                Text In Row




2012-05-28                         MS SQL Server 2000                     22
      6.테이블(cont)
            테이블 생성.
                SQL Server Management Studio를 이용한 테이블 생성




2012-05-28                      MS SQL Server 2000          23
      6.테이블(cont)
            테이블 생성(cont)
                CREATE TABLE문을 이용한 테이블 생성
                     MyDB에 MyTable이라는 테이블을 추가.
                     New Query 창을 연 후 다음의 SQL을 작성 실행 시킨다.


                  USE MyDB
                  GO

                  CREATE TABLE MyTable (
                  UserID char(05) NOT NULL primary key,
                  UserName varchar(20) NOT NULL,
                  birthyear int,
                  Address varchar(100) NULL,
                  Deptno int foreign key references Dept(Dnumber) on update cascade,
                  check (birthyear >= 1900 and birthyear <= year(getdate() )
                  )




2012-05-28                            MS SQL Server 2000                               24
      6.테이블(cont)
            데이터 형식의 이해.

             유형        자료형        크기       설명

             정수        Int        4        -2,147,483,648~2,147,483,647 까지의 수

                       Smallint   2        -32,768~32,767까지의 수

                       Tinyint    1        0~255 까지의 수

                       Bit        1(bit)   0 또는 1


              유형       자료형        크기       설명
              고정 소수점   numeric    2~17     같은 의미.
                       Decimal             -10^38-1~10^38-1 까지의 수


              유형       자료형        크기       설명
              부동 소수점   Float      8        부동 소수점 값, -1.79E+308~1.79+308

                       real       4        부동 소수점 값, -3.40E+38~3.40+38




2012-05-28                             MS SQL Server 2000                       25
      6.테이블(cont)
       데이터 형식의 이해.(cont)

         유형    자료형                크기       설명
         날짜    Datetime           8        1753년1월 1일~9999년 12월 31일 까지의 데이터를 1000분의
                                           1초 단위까지 표현.
               smalldatetime      4        1900년 1월 1일 ~2079년 6월 6일 까지의 데이터를 1분 단위
                                           까지 표현.


         유형           자료형             크기          설명
         바이너리(2진)     Binary          0~80000    0~8000 바이트 사이의 이진 값
                      Varbinary
                      image           0~2gb      2기가 까지의 이진 데이터를 지정 가능.


         유형   자료형                 크기          설명
         문자   Char,varchar        0~8000      0~8000자 사이의 문자.
              Nchar,nvarchar      0~8000      0~4000 사이의 유니코드 문자.
              Text                0~2gb       2^31-1 유니코드가 아닌 가변 길이 데이터형으로 2gb까지 지정가
                                              능
              Ntext               0~2gb       2^31-1 즉, 1기가까지 지정가능한 가변길이 유니코드 데이터형




2012-05-28                                 MS SQL Server 2000                         26
      6.테이블(cont)
            데이터 형식의 이해.(cont)

          유형    자료형               크기        설명
          화폐    Money             8        화폐단위. -2^63~2^63-1까지의 수치사용가능. 천 단위 컴마를 사용
                                           하여 천조까지의 데이터를 처리 가능..
                smallmoney        4        화폐단위. -2,147,483,648~2,147,483,648까지의 수치사용 가능. 천
                                           단위 컴마 지정 가능.

          유형   자료형                크기       설명

          특수   Cursor             -        커서 지정에 사용하는 형. 커서에서만 사용

               Uniqueidentifier   16       어떠한 경우라도 중복되지 않는 항상 고유한 값을 저장하는 데이터형

               timestamp          8        데이터베이스에서 유일하게 사용하는 고유값.


          유형             자료형           크기          설명
          Sql2000의 새     Bigint        8          -2^63~2^63-1까지의 정수
          로 생긴 데이터
                         Sql_variant   -          Text, ntext, timestamp, sql_variant를 제외한 모든 데이터형
          형
                                                  을 저장 가능한 데이터형
                         table         -          테이블과 같은 2차원 데이터를 저장하기 위한 데이터형.




2012-05-28                                 MS SQL Server 2000                                   27
      7.Transact-SQL
            Transact-SQL이란?
                보통은 줄여서 T-SQL이라고 표기.
                SQL Server의 SQL 구문은 ANSI와 ISO에서 정한 ANSI SQL 표준의 최신
                 버젼인 ANSI SQL-92 의 기준을 따르고 있다.
                새로운 기능 수행을 위해 MS사는 새로운 SQL 구문을 추가, 이를
                 Transact-SQL 이라 함.


            SQL Server Management Studio의 질의창에서 실행




2012-05-28                     MS SQL Server 2000                 28
      7.Transact-SQL




2012-05-28        MS SQL Server 2000   29
      7.Transact-SQL(cont)
        SQL Server 2000이 제공하는 연산자

             연산자                                설명

                                  산술 연산자

              +                            더하기 연산

              -                             빼기 연산

              *                             곱셈 연산

              /                            나누기 연산

              %                   나누지 연산. 3%2는 1을 반환

                                  비트 연산자

              &                        비트단위 AND 연산

              |                         비트단위 OR 연산

              ^                        비트단위 XOR 연산




2012-05-28                 MS SQL Server 2000          30
      7.Transact-SQL(cont)
            SQL Server 2000이 제공하는 연산자 (cont)

                                         비교연산자

               =                                      같다

               >                               무엇보다 크다

               <                               무엇보다 작다

               >=                           무엇보다 크거나 같다

               <=                           무엇보다 작거나 같다

               <>                                    같지 않다

               !=                 같지 않다. (SQL Server에서만 사용가능)

               !<                 작지 않다. (SQL Server에서만 사용가능)

               !>                 크지 않다. (SQL Server에서만 사용가능)




2012-05-28                      MS SQL Server 2000              31
      7.Transact-SQL(cont)
            SQL Server 2000이 제공하는 연산자 (cont)

                                        논리연산자

                ALL       비교되는 모든 집합의 TRUE이면 TRUE

                AND       BOOL식에서 두 개의 값이 모두 TRUE인 경우 TRUE

                ANY       BOOL식에서 어떤 하나의 값이 TRUE이면 TRUE

              BETWEEN     범위연산자

               EXISTS     존재연산자. 하부 쿼리에 행이 존재하면 TRUE이다.

                 IN       존재연산자. 하부 쿼리에 행 집합이 존재하면 TRUE이다.

                LIKE      패턴 연산자. 비교되는 값과 패턴이 일치하면 TRUE이다.

                NOT       반대값

                OR        BOOL식에서 두 개중 어떤 하나가 TRUE이면 TRUE

               SOME       BOOL식에서 비교되는 값의 어떤 범위가 TRUE이면 TRUE




2012-05-28                      MS SQL Server 2000             32
      7.Transact-SQL(cont)
            SELECT 구문.
               SELECT 문의 기본구성
                     SELECT : 검색할 컬럼들을 지정
                     FROM : 검색할 테이블을 지정
                     WHERE : 검색할 테이블 내의 행과 검색조건을 지정 WHERE절이 없는 경우에
                      는 해당 테이블의 모든 행들을 검색한다.
                     GROUP BY : 결과 데이터를 그룹화 한다. HAVING으로 그룹 된 데이터에서 검색
                      조건을 지정.
                     ORDER BY : 데이터를 정렬한다.
                SELECT 문의 기본 문법.
                     SELECT 선택한 컬럼
                      FROM 테이블 이름
                      WHERE 찾을 조건
                기본 데이터 베이스의 변경.
                     도구모음 줄의 콤보박스를 이용 혹은 아래 쿼리를 이용.
                     USE pubs
                     GO




2012-05-28                        MS SQL Server 2000                 33
      7.Transact-SQL(cont)
            SELECT 구문.(cont)
               SQL Server2000에 포함되어져 있는 셈플 데이터베이스인 ‘Pubs’ 안
                의 ‘sales’테이블에서 qty가 10권 이상인 책을 검색하시오.

                                            use pubs
                                            go

                                            select *
                                            from sales
                                            where qty>10

                                            <‘sales’ 테이블에서 qty가 10권 이상인
                                            책을 검색하기 위한 SQL문>




2012-05-28                   MS SQL Server 2000                      34
      7.Transact-SQL(cont)
            SELECT 구문.(cont)
                컬럼 명 변경 (NorthWind 데이터베이스 사용)
                     “=“ , “AS”를 사용.
                     SELECT EmployeeID AS '사번', LastName '이름', '성'= FirstName FROM
                      employees
                     결과
                         사번         이름           성
                         ----------- --------------------
                         1        Davolio     Nancy
                         2        Fuller     Andrew
                         3        Leverling   Janet
                         4        Peacock      Margaret
                         5        Buchanan      Steven
                         6        Suyama       Michael
                         7        King       Robert
                         8        Callahan    Laura
                         9        Dodsworth     Anne




2012-05-28                           MS SQL Server 2000                               35
      7.Transact-SQL(cont)
            WHERE, AND, OR를 이용한 결과의 제한. (NorthWind 데이터베이스 사용)
                WHERE 절에서 AND 연산의 예.(Spain의 Madrid에 있는 고객의 고객ID와 이름
                 검색)
                   SELECT CustomerID, ContactName FROM customers

                    WHERE country = ‘Spain’ AND City = ‘Madrid’

                          CustomerID ContactName
                           ---------- --------------------
                           BOLID    Martín Sommer
                           FISSA   Diego Roel
                           ROMEY     Alejandra Camino


                WHERE 절에서 OR 연산의 예 (Berlin 또는 Madrid에 있는 고객의 고객ID와 이름
                 검색)
                   SELECT CustomerID, ContactName FROM customers

                    WHERE City = ‘Berlin’ OR City = ‘Madrid’




2012-05-28                             MS SQL Server 2000           36
      7.Transact-SQL(cont)
            BETWEEN 등을 이용한 범위 연산 (<,>)
                어떤 값과 또 하나의 값 사이에 존재하는 값들을 얻고자 하는 경우에 사용.
                Orders 테이블에서 화물의 운임이 100에서 110 사이인 값을 구하는 예.
                     SELECT OrderID, CustomerID, EmployeeID, ShipName
                      FROM Orders
                      WHERE Freight BETWEEN 100 AND 110


                BETWEEN은 부등호를 사용하여 같은 결과를 얻을 수 있다.
                부등호를 사용한 예.
                     SELECT OrderID, CustomerID, EmployeeID, ShipName
                      FROM Orders
                      WHERE Freight >= 100 AND Freight <=110




2012-05-28                               MS SQL Server 2000              37
      7.Transact-SQL(cont)
            IN을 사용하여 목록과 일치하는 값 찾기.

                OR 연산의 예.
                     SELECT CustomerID, CompanyName, ContactName FROM customers
                      WHERE Country = 'Germany' OR Country = 'Mexico' OR Country = 'UK‘




                OR를 사용하여 존재함을 찾는 목록연산을 할 떄는 이러한 연산을 IN을 사
                 용하는 연산으로 바꿀수 있다.
                     SELECT CustomerID, CompanyName, ContactName FROM customers
                      WHERE Country IN ('Germany', 'Mexico', 'UK )




2012-05-28                                MS SQL Server 2000                              38
      7.Transact-SQL(cont)
            LIKE를 이용하여 SQL에서 와일드카드(WildCard) 사용하기.

             와일드카드 문자                               설명
                 ‘%’    ‘%’는 문장열을 의미, 여기서 의미가 있는 문자열의 개수는 0개이상이다. 예를 들면,
                        다음 예제는 모두 ‘windows%’로 표현할 수 있다.
                        (예) windowsNT, windows2000, windowsK, windows
                 ‘_’    ‘_’ 표시는 하나의 글자를 의미. ‘%’가 단어나 기타 구, 문장을 모두 포함할 수 있는
                        것에 반해 ‘_’는 한글자를 표현. 예를 들어 다음 예제는 모두 ‘win_’로 표현할 수 있
                        다.
                        (예) wing, wink, win
                 ‘[]’   ‘[]’표시는 범위나 내부에 정의된 집합을 의미. 예를 들어 다음은 각각 a,b,c로 시작
                        하고 dir로 끝나는 문자열을 찾는다.
                        (예) ‘[a-c]dir’ : adir, bdir, c dir
                        또한 위 예제는 ‘[abc]dir’과 완전히 같다.
                ‘[^]’   ‘[^]’표시는 ‘[]’과는 반대로 지정된 범위 또는 집합에 존재하지 않는 값을 찾는다.
                        예를 들면 다음 예제는 각각 ‘a’로 시작하고 다음에 d가 오지않는 문자열을 찾는다.
                        (예) ‘a[^d]%’




2012-05-28                     MS SQL Server 2000                        39
      7.Transact-SQL(cont)
            LIKE를 이용하여 SQL에서 와일드카드(WildCard) 사용하기.(cont)
                Customers 테이블에서 직책이 manager인 고객들의, 고객ID, 회사명, 이
                 름을 출력.
                     SELECT CustomerID, CompanyName, Contactname, ContactTitle
                      FROM Customers
                      WHERE Contacttitle like '%manager‘


                Customer 테이블에서 고객ID가 B로 시작하고 S로 끝나는 고객들에 대한
                 검색.
                     SELECT CustomerID, CompanyName, Contactname, ContactTitle
                      FROM Customers
                      WHERE CustomerID LIKE '[B]%S'


                Customers 테이블에서 고객ID가 ‘A’,’B’,’C’,’D’로 시작하는 고객에 대한 검
                 색.
                     SELECT CustomerID, CompanyName, Contactname, ContactTitle
                      FROM Customers
                      WHERE CustomerID LIKE '[A-D]%'




2012-05-28                               MS SQL Server 2000                       40
      7.Transact-SQL(cont)
            SELECT에 산술연산 적용.
                SQL에서는 SELECT를 이용하여 값을 가져올 때, 각 칼럼에 대핸 원하는 값으로 산술
                 연산을 행하여 출력할 수 있는 기능을 제공.

                각 제품가격에 부가세를 포함하여 금액을 계산하고, ‘ 부가세 포함’이라는 칼럼에 결
                 과를 출력
                   SELECT ProductID, ProductName, '부가세포함가격' = ((UnitsInStock *
                    UnitPrice)+(UnitsInStock*UnitPrice)*0.1)
                    FROM products

                     ProductID ProductName                       부가세포함가격
                      ----------- ----------------------------------------
                      1        Chai                         772.20000
                      2        Chang                         355.30000
                      3        Aniseed Syrup                   143.00000
                      4        Chef Anton's Cajun Seasoning          1282.60000
                      5        Chef Anton's Gumbo Mix              .00000
                      6        Grandma's Boysenberry Spread           3300.00000
                      7        Uncle Bob's Organic Dried Pears       495.00000
                      결과 생략
                      (77 row(s) affected)

2012-05-28                           MS SQL Server 2000                            41
      7.Transact-SQL(cont)
       SQL 집계함수


             함수명                           용도 및 설명
             COUNT   주어진 조건에 알맞은 결과의 개수를 센다.
             SUM     주어진 조건에 알맞은 결과의 합계를 구한다. 단 SUM 함수의 결과에 쓰일
                     값은 반드시 숫자이어야 한다.
              MIN    주어진 조건에 알맞은 결과의 최소값을 구한다.
              MAX    MIN 함수와 반대로 주어진 조건에 알맞은 결과의 최대값을 구한다.
              AVG    주어진 조건에 알맞은 결과의 평균을 구한다. 물론 평균을 구하기 위해서는
                     숫자가 제공되어야 한다.




2012-05-28                   MS SQL Server 2000                  42
      7.Transact-SQL(cont)
            SQL 집계함수 (cont)
                COUNT예
                     COUNT를 사용하여, Customer 테이블에 등록되어 있는 전체 고객의 숫자를 계
                      산하는 예제.
                     SELECT count(*) '고객의 총수' FROM Customers

                     고객의 총수
                      -----------
                      91
                SUM
                     Products 테이블에서 제품들의 UnitPrice의 총합을 구하는 예제.
                     SELECT sum(UnitPrice) 'Total Price' FROM products

                     Total Price
                      ---------
                      2222.7100




2012-05-28                                MS SQL Server 2000              43
      7.Transact-SQL(cont)
            SQL 집계함수 (cont)
                MIN과 MAX
                     Orders 테이블에서 화물운임(Freight)이 가장 비싼 것과 가장 싼 것을 구하는 예.
                     SELECT MAX(Freight) '최고값' FROM Orders
                      SELECT MIN(Freight) '최소값' FROM Orders

                     최고값
                      ---------------------
                      1007.6400
                      (1 row(s) affected)

                      최소값
                      ---------------------
                      .0200
                      (1 row(s) affected)




2012-05-28                              MS SQL Server 2000             44
      7.Transact-SQL(cont)
            SQL 집계함수 (cont)
                AVG
                     Products 테이블에서 NorthWind사 제품들의 평균 UnitPrice를 구하는 예
                     SELECT AVG(UnitPrice) as '제품평균가격' FROM Products

                     제품평균가격
                      ---------------
                      28.8663

                      (1 row(s) affected)




2012-05-28                                  MS SQL Server 2000             45
      7.Transact-SQL(cont)
            ORDER BY 사용. (Pubs 데이터베이스 사용)
                데이터를 검색할 때 특정 컬럼을 기준으로 정렬을 하여 보고자 하는 경우
                 사용.
                     Eg. 사원정보를 검색했는데 그 결과를 무작위로 보는게 아니라 이름순으로 정렬을 하거나 부
                      서별로 정렬
                데이터 베이스 ‘Pubs’안의 Titles 테이블에서 가격을 기준으로 정렬
                     USE Pubs
                      GO SELECT title_id, pub_id, price FROM titles
                      ORDER BY price
                     가격이 작은 것부터 큰 순으로 보여짐.
                위 예를 사용하여 가격이 큰 순에서 작은 순으로 표시하도록 정렬
                     USE Pubs
                      GO SELECT title_id, pub_id, price FROM titles
                      ORDER BY price DESC
                     정렬 방식이 지정되지 않으면 기본적으로 오름 차순이 됨




2012-05-28                                 MS SQL Server 2000         46
      7.Transact-SQL(cont)
            ORDER BY 사용(cont)
                ‘titles’에서 pub_id를 기준으로 오름차순으로 정렬하고, 같은 pub_id이면
                 price를 기준으로 내림차순으로 정렬
                     USE Pubs
                      GO SELECT title_id, pub_id, price FROM titles
                      ORDER BY pub_id ASC, price DESC


            GROUP BY 사용 (Pubs 데이터베이스 사용)
                어떤 컬럼을 기준으로 합을 구하거나 평균을 구하거나 또는 최대값이나 최
                 소값을 구할 수 있는데 이때 사용되는 것이 GROUP BY
                각 pub_id별로 price의 합을 검색.
                     USE Pubs
                      GO
                      SELECT pub_id, SUM(price) AS tot_price FROM titles
                      GROUP BY pub_id




2012-05-28                                 MS SQL Server 2000              47
      7.Transact-SQL(cont)
            GROUP BY 사용.(cont)
                ‘Titles’ 테이블의 ‘pub_id’칼럼의 레코드의 갯수를 구하는데, 갯수가 5보다
                 큰것만을 검색.
                     USE Pubs
                      GO
                      SELECT pub_id, COUNT(*) AS cnt_price FROM titles
                      GROUP BY pub_id
                      HAVING COUNT(*) > 5

                     pub_id cnt_price
                      ------ -----------
                      0877 7
                      1389 6


                HAVING은 GROUP BY와 항상 같이 사용되며 GROUP BY를 사용할 때 조
                 건을 주는 방법.




2012-05-28                                MS SQL Server 2000             48
      7.Transact-SQL(cont)
            조인(JOIN)연산
                조인의 종류.
                   INNER JOIN

                   OUTER JOIN

                   FULL JOIN

                   CROSS JOIN



                ‘Pubs’ 데이터 베이스를 사용한 INNER JOIN의 예.
                    USE pubs
                     SELECT *
                     FROM authors AS a INNER JOIN publishers AS p
                     ON a.city = p.city
                     ORDER BY a.au_lname DESC
                    authors 테이블과 publishers 테이블을 조인.

                    authors 테이블과 publishers 테이블에서 city 가 같은 행을 조인.

                    "SELECT * " 에 의해 두 테이블에 있는 컬럼 전체가 표시.

                    "ORDER BY a.au_lname DESC" 에 의해 표시되는 내용은 au_lname를 기준으
                     로 내림차순으로 정렬됩니다.




2012-05-28                        MS SQL Server 2000                      49
      7.Transact-SQL(cont)
            조인(JOIN)연산(cont)
                ‘Pubs’ 데이터 베이스를 사용한 OUTER JOIN의 예.
                     USE pubs

                      SELECT a.au_fname, a.au_lname, p.pub_name
                      FROM authors a LEFT OUTER JOIN publishers p
                      ON a.city = p.city
                      ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC


                     LEFT OUTER JOIN 이므로 왼쪽의 authors 테이블이 기준이 됩니다.
                     publishers 테이블에는 없더라도 authors 테이블에 있는 행은 표시됩
                      니다.




2012-05-28                           MS SQL Server 2000                         50
      7.Transact-SQL(cont)
            조인(JOIN)연산(cont)
                SELF 조인
                  select a.sname, a.deptno, b.sname, b.deptno
                  from student a join student b on a.deptno = b.deptno

                  select a.sname, a.deptno, b.sname, b.deptno
                  from student a full outer join student b on a.deptno = b.deptno

                  select a.sname, a.deptno, b.sname, b.deptno
                  from student a left outer join
                       (select * from student where deptno = 1) b
                       on a.deptno = b.deptno
                  where addr = ‘Seoul’




2012-05-28                          MS SQL Server 2000                              51
      7.Transact-SQL(cont)
            데이터 추가 <INSERT>
                테이블에 테이터를 추가하위 위해 INSERT 구문을 사용.
                INSERT의 간단한 구문.
                     INSERT [INTO] <table_name>[(column_list)] VALUES (value_list)



                우선 몇 개의 실습용 테이블을 만들어 예제를 수행해보자.
                     우선 test라는 데이터베이스를 만든다.
                     Simpleinsert, deptwithIDcol, deptwithDefault 테이블을 만든다.




2012-05-28                             MS SQL Server 2000                             52
      7.Transact-SQL(cont)
            데이터 추가 <INSERT> (cont)
                USE test -- 새로 만든 test 데이터 베이스 사용
                 GO

                 CREATE TABLE Simpleinsert
                 (
                   deptID char(4),
                   deptName varchar(30)
                 )
                 --ID 컬럼을 테스트하기 위한 테이블
                 CREATE TABLE DeptWithIDCol
                 (
                   deptID int IDENTITY(1,1),
                   deptName varchar(30)
                 )
                 --값이 입력되지 않을 때를 테스트하기 위한 테이블
                 CREATE TABLE DeptWithDefalut
                 (
                   deptID char(4),
                   deptName varchar(30) NOT NULL DEFAULT 'Professional Services'
                 )
                 GO



2012-05-28                          MS SQL Server 2000                             53
      7.Transact-SQL(cont)
            데이터 추가 <INSERT> (cont)
                INSERT 구문의 예
                     INSERT INTO Simpleinsert (deptID,deptName) VALUES ('PS00',
                      'Professional Services')
                      --바로 아래는 옵션인 INTO와 컬럼 리스트를 제거.
                      INSERT Simpleinsert VALUES('PS00','Professional Services')
                      -- ID 컬럼을 이용.
                      INSERT deptWithIDcol Values('professional services')


                위의 예에서 deptWithCol 테이블의 deptID 컬럼은 identity 옵션
                 이 지정 되어있다. 이때에는 INSERT시 값을 제공하지 말아야 한다.

                Deptwithdefault 테이블에 제공되는 데이터가 없을때 자동으로
                 DEFAULT 값이 입력 되도록하는 예.
                     INSERT deptwithdefault values ('PS00','Manufacturing')
                      INSERT deptwithdefault values ('PS00', default)
                      INSERT deptwithdefault(deptID) values ('PS00')



2012-05-28                              MS SQL Server 2000                         54
      7.Transact-SQL(cont)
            데이터수정[UPDATE]
                SQL문을 이용하여 데이터를 수정하기 위해서는 SQL의 UPDATE문을 이요.
                UPDATE문의 간략한 문법.
                     UPDATE <테이블이름>
                      SET <컬럼명> = 업데이트해야할 값
                      WHERE <조건>


                업데이트의 예 (NorthWind 데이터베이스 사용)
                     Northwind사에서 판매하는 제품의 Unitprice를 10%인상된 가격으로 UPDATE.
                         USE northwind

                           go

                         UPDATE Products
                         SET Unitprice = Unitprice*1.1




2012-05-28                            MS SQL Server 2000                 55
      7.Transact-SQL(cont)
            데이터수정[UPDATE] (cont)
                UPDATE의 조건 제한. (WHERE)
                     위의 예에서 Category-ID가 1인 제품으로 제한는 예
                          UPDATE Products
                           SET Unitprice = Unitprice*1.1
                           WHERE CategoryID = 1


                UPDATE문이나 다음에 설명할 DELETE 문에서는 별칭을 사용할 수 없다.




2012-05-28                            MS SQL Server 2000   56
      7.Transact-SQL(cont)
            데이터 삭제[DELETE]
               DELETE문은 데이블에서 테이터를 삭제.
                     간략한 구문
                          DELETE [FROM] <table_name>
                           WHERE 조건


                DELETE문의 예.
                     Northwind 데이터 베이스의 Products 테이블에서 모든 행을 삭제.
                          DELETE Products
                     위의 예에서 CategoryID가 1인 것만 삭제.
                          DELETE Products
                           WHERE CategoryID = 1




2012-05-28                            MS SQL Server 2000            57
      7.Transact-SQL(cont)
            데이터 삭제[DELETE] (cont)
               DELETE문의 예.
                     서브 쿼리를 사용해서 쿼리의 조건에 맞는 것만 삭제하는 예
                          USE pubs
                           GO

                           DELETE FROM titileauthor
                           WHERE title_id IN
                             ( SELECT title_id
                               FROM Titles
                               WHERE title LIKE '%computers%')


                DELETE와 TRUNCATE
                     DELETE는 로깅을 수행, TRUNCATE는 로깅을 사용하지 않는다.
                     TRUNCATE는 조건을 사용할 수 없다.
                     예
                         TRUNCATE TABLE Products




2012-05-28                            MS SQL Server 2000         58

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:39
posted:5/28/2012
language:Korean
pages:58