DTS(Data Transformation Service) : 데이터변환서비스(데이터 가져오기 내보내기), (Express버전은 안되고, 정식버전만 실행 가능하다.)

a. txt, csv, xlsx 등에 있는 데이터를 SQL Server Table 이동

  1. 원격에 있는 DB 로컬로 이동
  2. 연습
    1. 일반 텍스트파일(CSV파일) 값을 DB 가져오기
    2. 우편번호 데이터(엑셀파일) 받아서 DB 데이터 가져오기
    3. 원격(다른 SQL서버에 있는 데이터를 로컬 SQL Server 가져오기)
      1. Identity, Primary Key 같은 제약조건은 해제
        1. 로컬에 데이터 백업용으로 주로 사용
  1. 데이터 복사
    1. 원격 DB 로컬로 복사




      ===================================================



      --> 임의의 위치에 저장한 일반텍스트 파일인 Data.txt의 값을 DB(여기서는 DB명은 DTS)로 가져오기















      --> 위 그림의 과정을 통해서 Data.txt파일의 데이터를 가져와서 아래그림의 DTS데이터베이스에 dbo.Data라는 테이블이 생성되었고 / 아래에 있는 코드(Select ~ Into구문)를 통해서 dbo.Data테이블을 복사하여 dbo.OrderDetails3 와 dbo.OrderDetails4테이블이 생성되었다.(코드에서 복사할 때 테이블 형식을 수정하였음)





      ===================================================




      --> Select ~ Into 구문을 사용하여 Data테이블을 복사하고 이름바꿔서 테이블의 형식 수정하기


      -- Temp 테이블가져오기

      Select * From Data

      Go

       

      -- Data테이블의레코드를OrderDetails로이동: Identity 자동생성하면서

      Select Identity(Int, 1, 1) As Num, [0] As ProductName, [1] As Quantity

      Into OrderDetails3

      From Data

      Go

       

      -- Drop Table OrderDetails3

      Select * From OrderDetails3

      Go

       

      -- Data테이블의레코드를OrderDetails4로이동: 형식변환

      Select

             Identity(Int, 1, 1) As Num,

             [0] As ProductName,

             Cast([1] As Int) As Quantity

      Into OrderDetails4

      From Data

      Go

      --

      sp_columns OrderDetails4 -- Quantity필드가정수형으로변경됨을알수있다.

      Go

       


Posted by holland14
:
 


    목표 : http://www.sp.com/AdminMemo/Default/aspx

    한줄 짜리 메모를 입력하고, 출력하는 애플리케이션이 여러분들 서버에서 가동되도록 하자…

     

    Windows Server 레벨

  1. 설치 : hostname, ipconfig /all, ping, localhost/127.0.0.1 : 로컬 루프백 주소
  2. 사용자 : sp / Pa$$w0rd, net user, net localgroup
  3. NFTS : everyone, IUSR_컴퓨터명, Network Service
  4. 공유 : UNC
  5. : URL, WWW(80포트)
  6. FTP : 21번포트
  7. DNS : nslookup
  8. 미디어서버 : MMS://
  9. 백업/복원, 메일(전송 : SMTP(25번포트), 수신 : POP3(110 포트))
  10. 원격관리 : "Remote Desktop Users"
  11.  

    SQL Server 레벨

  12. 설치 : (local)\SQLExpress, (local)
  13. 데이터베이스 : sp
  14. 로그인 : sp / Pa$$w0rd
  15. UDL
  16. 테이블 : AdminMemos
  17. SQL
  18. T-SQL
  19. 개체 : 테이블, , 저장프로시저
  20. DTS
  21. 백업 복원
  22.  

    Visual Studio 레벨

  23. 설치
  24. 사이트
  25. Web.config : SQL Server 레벨의 데이터베이스 연결문자열 설정
  26. 생성
  27. 입력 페이지 작성
  28. 출력 페이지 작성





==============================================================================================





==> 쿼리문(SQL문, T-SQL문)으로 테이블생성/입력/수정 등등 부터 ~ 뷰(View)와 저장프로시저(입력, 수정, 출력, 상세 등등) 생성하고 실행하기.



--[1] 테이블설계

Create Table dbo.AdminMemos

(

       Num Int Identity(1, 1) Not Null Primary Key,  -- 일련번호

       [Content] Text Not Null                       -- 내용

)

Go

 

 

--[2] 입력예시문: 글쓰기, 회원가입

Insert AdminMemos Values('저장프로시저연습')

Go

 

 

--[3] 출력예시문: 리스트, 회원리스트, 상품리스트

Select * From AdminMemos Order By Num Desc

Go

 

 

--[4] 상세예시문: 회원상세보기, 주문상세내역, 게시물보기

Select Num, Content From AdminMemos Where Num = 1

Go

 

 

--[5] 수정예시문: 회원정보수정, 게시물수정

Begin Tran

       Update AdminMemos

       Set Content = '저장프로시저연습'

       Where Num = 1

       -- RollBack Tran

Commit Tran

 

 

--[6] 삭제예시문: 회원탈퇴, 게시물삭제

Begin Tran

       Delete AdminMemos

       Where Num = 1

       --RollBack Tran

Commit Tran

 

 

--[7] 검색예시문: 회원검색, 상품검색

Select Num, Content

From AdminMemos

Where [Content] Like '%프로시저%'

Go

 

 

-- 간단한T-SQL 저장프로시저문법

--[8] 1부터100까지짝수일때에는Content'안녕'을입력,

--    홀수일때에는'방가'를입력

Declare @i Int

Set @i = 1

While @i <= 100

Begin

       If @i % 2 = 0

       Begin

             Insert AdminMemos Values('안녕')

       End

       Else

       Begin

             Insert Into AdminMemos Values('방가')

       End

       Set @i = @i + 1

End

Go

 

--[9] 뷰생성: 전체레코드를조회

Create View dbo.GetAdminMemos

As

       Select Num, Content From AdminMemos

Go

-- 뷰로부터조회

Select * From GetAdminMemos Order By Num Desc

Go

 

--[10] 입력예시문-> 프로그래밍화(매개변수화) -> 입력저장프로시저

Create Procedure dbo.AddAdminMemo

As

       Insert AdminMemos Values('저장프로시저연습')

Go

 

--[11] 저장프로시저실행: Execute, Exec, 저장프로시저명

Execute AddadminMemo

Go

Exec AddAdminMemo

Go

AddAdminMemo

Go

 


--[12]
저장프로시저수정

Alter Procedure dbo.AddAdminMemo

       @Content VarChar(8000) -- Text?

As

       Insert AdminMemos Values(@Content)

Go

 

--[13] 매개변수가있는저장프로시저실행

Exec AddAdminMemo '안녕'

Go

Exec AddAdminMemo '방가'

Go

 


--[14]
출력: SQL문을짧은하나의명령어(저장프로시저명)으로변환

Create Procedure dbo.ListAdminMemos

As

       Select * From AdminMemos Order By Num Desc

Go

 

--[15] 매개변수가없는저장프로시저테스트

Exec ListAdminMemos

Go

 

--[16] 상세: 넘겨주는값에따른결과생성

Create Proc dbo.ViewAdminMemos

       @Num Int

As

       Select Num, Content From AdminMemos Where Num = @Num

Go

 

--[17] 매개변수가있는저장프로시저실행

Exec ViewAdminMemos 100

Go

Exec ViewAdminMemos 5

Go

 

--[18] 넘겨져온번호에해당하는내용을넘겨져온값으로수정

Create Proc dbo.ModifyAdminMemos

       @Content VarChar(8000),

       @Num Int

As

       Begin Tran

             Update AdminMemos

             Set Content = @Content

             Where Num = @Num

             --RollBack Tran

       Commit Tran

Go

 


--[19]
위저장프로시저실행예시

Exec ModifyAdminMemos '반갑습니다.', 100

Go

Exec ViewAdminMemos 100

Go

 

--[20] 삭제저장프로시저생성

Create Proc dbo.DeleteAdminMemos

       @Num Int

As

       Begin Tran

             Delete AdminMemos

             Where Num = @Num

             --RollBack Tran

       Commit Tran

       -- Select * From AdminMemos Where Num = @Num

Go

 

--[21] 실행: 100번레코드삭제

DeleteAdminMemos 100

Go

 

--[22] 검색저장프로시저: 저장프로시저보다는동적쿼리문이라고부름.

Create Proc dbo.SearchAdminMemos

       @Content VarChar(50)

As

       Declare @strSql VarChar(255)

       Set @strSql = '

             Select Num, Content

             From AdminMemos

             Where [Content] Like ''%' + @Content + '%''

       '

       Exec(@strSql) -- 동적으로만든SQL문을실행하는명령어

Go

 

--[23] 동적쿼리문으로검색

SearchAdminMemos '안녕'

Go

SearchAdminMemos '방가'

Go

 


 


Posted by holland14
:

--[0] 테이블설계

Create Table dbo.Categories

(

    CategoryID Int Identity(1, 1) Not Null Primary Key,  --카테고리번호

    CategoryName VarChar(50),                            --카테고리명

    --

    SuperCategory Int Null,        --부모카테고리번호(확장용)

    Align SmallInt Default(0)      --카테고리보여지는순서(확장용)

)

Go

 

 

 

--[!] 4SQL문연습

--[1] 입력: Add / Write

Insert Categories Values('컴퓨터', Null, Default)

Insert Into Categories Values('노트북', 1, 1)

Insert Categories(CategoryName, SuperCategory, Align) Values('핸드폰', Null, 2)

Insert Categories Values('신규', 3, 3)

 

 

 

--[1] 입력저장프로시저

Create Procedure dbo.AddCategory

(

       @CategoryName VarChar(50),

       @SuperCategory Int,

       @Align Int

)

As

       Insert Into Categories Values(@CategoryName, @SuperCategory, @Align)

Go

-- 프로시저로입력

Execute AddCategory '냉장고', 3, 1

Go

 

 

 

--[2] 출력저장프로시저

Create Proc dbo.GetCategories

As

       Select * From Categories Order By CategoryID Asc, Align Asc

Go

-- 실행

Exec GetCategories

Go

 

 

 

--[3] 상세저장프로시저

Create Proc dbo.GetCategoryByCategoryID

       @CategoryID Int

As

       Select * From Categories Where CategoryID = @CategoryID

Go

-- 실행

GetCategoryByCategoryID 1

Go

 

 

 

--[4] 수정저장프로시저

Create Procedure dbo.UpdateCategory

(

       @CategoryName VarChar(50),

       @CategoryID Int

)

As

       Update Categories

       Set

             CategoryName = @CategoryName

       Where

             CategoryID = @CategoryID

            

       Select * From Categories

Go

-- 실행: 1번카테고리명을'콤퓨타'로변경

UpdateCategory '콤퓨타', 1

Go

 

 

 

--[5] 삭제저장프로시저

Create Proc dbo.DeleteCategory

       @CategoryID Int

As

       Begin Tran                       -- 수정/삭제시예외처리

            

             Delete Categories

             Where CategoryID = @CategoryID

 

             Select @@RowCount   -- 삭제된데이터의개수: 1

 

             If @@Error > 0             -- 만약에에러개수가1이상이면, 롤백시켜라...

             Begin

                    RollBack Tran

             End

            

       Commit Tran         -- 여기까지에러없이왔다면실행완료

Go

 

Exec DeleteCategory 7

Go

 

 

 

--[6] 검색저장프로시저

-- 카테고리이름이모모모인것을검색?

Alter Proc dbo.FindCategory

       @CategoryName VarChar(50)

As

       Declare @strSql VarChar(500)  -- 검색어= ' + @검색어+ '

       Set @strSql =

             'Select * From Categories Where CategoryName Like ''%' + @CategoryName + '%'''

       Print @strSql

       Exec(@strSql)

Go

 

FindCategory '노트북'

Go

FindCategory '핸드폰'

Go

 

Alter Proc dbo.PrintString

       @Message VarChar(50)

As

       Declare @strSql VarChar(255)

       Set @strSql = '''@''' + @Message + '''@'''

       Print @strSql

Go

 

PrintString '안녕'

 

 

 

 

Posted by holland14
:

--카테고리(상품카테고리) 응용프로그램설계

 

 

--[0] 테이블설계

CREATE TABLE dbo.Categories

(

    CategoryID Int IDENTITY(1, 1) Not Null Primary Key,  --카테고리번호

    CategoryName VarChar(50),                            --카테고리명

    --

    SuperCategory Int Null,        --부모카테고리번호(확장용)

    Align SmallInt Default(0)      --카테고리보여지는순서(확장용)

)

Go

 

 

 

--[!] 4SQL문연습

--[1] 입력: Add / Write

Insert Categories Values('컴퓨터', Null, Default)

Insert Into Categories Values('노트북', 1, 1)

Insert Categories(CategoryName, SuperCategory, Align) Values('핸드폰', Null, 2)

Insert Categories Values('신규', 3, 3)

 

 

 

--[2] 출력: Get / List

Select CategoryName From Categories Order By Align Asc

 

 

 

--[3] 상세: View / Get(-> 1개레코드에대해서상세보기)

Select * From Categories Where CategoryID = 1

 

 

 

--[4] 수정: Modify / Edit

Update Categories

Set

       CategoryName = '콤퓨타'

Where CategoryID = 1

 

 

 

--[5] 삭제: Delete

Delete Categories Where CategoryID = 2

 

 

 

--[6] 검색: Search / Find

Select * From Categories

Where

       CategoryName Like '%%'

       And

       SuperCategory Is Null --(NULL)값비교(-> , 대분류만검색해라!)

 

      

      

--[7] (View) 생성: Select문전용

--[a] 대분류데이터를출력하는구문을줄여서출력

Select CategoryID, CategoryName

From Categories

Where SuperCategory Is Null

Go

 

--[b] 위구문을줄여주는뷰(View) 생성

Create View dbo.GetTopCategory

As

       Select CategoryID, CategoryName

       From Categories

       Where SuperCategory Is Null

Go

 

--[c] (가상테이블) 사용: 약간줄어들죠???

Select * From GetTopCategory

Order By CategoryName Asc

Go

 

--[d] (가상테이블) 수정: 암호화

sp_helptext GetTopCategory --(생성한)뷰구문보기

Go

 

--[!] 뷰구문수정: 암호화처리

Alter View dbo.GetTopCategory

With Encryption -- 개체암호화옵션

As

       Select CategoryID, CategoryName

       From Categories

       Where SuperCategory Is Null

Go

 

sp_helptext GetTopCategory --안보임

Go

 

--[!] 뷰구문수정: 스키마바인딩적용

Alter View dbo.GetTopCategory

With SchemaBinding -- Categories 테이블(=부모테이블) 변경불가능

As

       Select CategoryID, CategoryName

       From dbo.Categories

       Where SuperCategory Is Null

Go

 

--[!] 뷰에다가직접데이터입력

Insert Into GetTopCategory(CategoryName) Values('가전')

Go

Select * From Categories

Go

 

-- With Check Option 사용(하면기본적으로테이블에입력(수정)이되지않는다.)

Alter View dbo.GetTopCategory

As

       Select *

       From dbo.Categories

       Where SuperCategory Is Null -- 대분류만...

      

       With Check Option --조건절에해당하는데이터만입력/수정가능

Go

 

-- 에러: Identity값입력X, SuperCategory => Null 입력

Insert Into GetTopCategory Values('오디오', 5, 2) --

Go

 

-- 기본

Set Identity_Insert Categories On

 

-- 실행: 조건절이(대분류만가능토록되어있기에)

Insert Into GetTopCategory(CategoryName) Values('오디오') -- 에러난다.

Go

Insert Into GetTopCategory(CategoryID, CategoryName)

Values(7, '오디오') -- 실행됨

Go

Insert Into GetTopCategory(CategoryID, CategoryName, SuperCategory)

Values(8, '오디오', Null) -- 실행됨

Go

 

 

 

Posted by holland14
:

--[0] Tempdb에테스트용테이블생성및데이터입력

Use tempdb

Go

 

--Drop Table Orders

Create Table dbo.Orders

(

       [상품명] VarChar(10),

       [판매개수] Int

)

Go

 

Insert Orders Values('RADIO' ,5)

Insert Orders Values('TV' ,3)

Insert Orders Values('AUDIO' ,1)

Insert Orders Values('DVD' ,7)

Insert Orders Values('RADIO' ,3)

Insert Orders Values('DVD' ,8)

Insert Orders Values('TV' ,10)

 

--[1] 집계함수사용검색

Select * From Orders

Select Count([판매개수]) As [총판매횟수] From Orders    -- 7

Select Sum([판매개수]) As [총판매개수] From Orders      -- 37

Select Avg([판매개수]) As [총판매평균] From Orders      -- 5

Select Max([판매개수]) As [최대판매개수] From Orders     -- 10

Select Min([판매개수]) As [최소판매개수] From Orders -- 1

 

 

--[2] 아래구문을실행시켜보면다음과같은에러가나타난다.

-- 'Orders.상품명' 열이집계함수에없고Group By 절이없으므로

-- Select 목록에서사용할수없습니다.

Select [상품명], Avg([판매개수]) As [총판매평균] From Orders

 

 

--[3] 위와같이집계함수로계산되어지지않고그룹화되어출력시킬필드는반드시

-- Group By절에기록하여야한다.

Select [상품명], Avg([판매개수]) As [총판매평균]

From Orders

Group By [상품명]

 

 

--[4] 만약그룹별총판매평균이5이상인것만출력하고자할때에는

-- Having절에조건을추가하여야한다.

Select [상품명], Sum([판매개수]) As [총판매합계], Avg([판매개수]) As[총판매평균]

From Orders

Group By [상품명]

Having Avg([판매개수]) >= 5 -- 판매개수의평균이5이상인것만검색

 

 

--[5] 퀴즈: 각주문별상품판매량이5이상이고, 그룹별총판매평균이7이상인것만

-- [상품명]에오름차순정렬해서출력하시오.

Select [상품명], Sum([판매개수]) As [판매합계]

From Orders

-- Join (여기서는생략)

-- On (여기서는생략)

Where [판매개수] >= 5           -- 그룹전 조건   

Group By [상품명]

Having Avg([판매개수]) >= 7     -- 그룹화된 데이터 조건

Order By [상품명] Asc

 

 

'.NET프로그래밍 > SQL Server 2008' 카테고리의 다른 글

33. 저장프로시저  (0) 2009.09.15
32. 뷰(View)  (0) 2009.09.15
30. 서브쿼리(=하위쿼리)  (0) 2009.09.14
29. 조인(Join)  (0) 2009.09.14
28. 명령어로 사용자생성하기  (0) 2009.09.14
Posted by holland14
:

--[1] 샘플테이블생성

Create Table dbo.Members

(

       Num Int Identity(1,1) Not Null Primary Key, -- 일련번호

       Name VarChar(25) Not Null,                  -- 이름

       Age TinyInt Null,                           -- 나이

       Address VarChar(100) Null                   -- 주소

)

Go

 

 

--[2] 예시데이터입력

Insert Into Members(Name, Age, Address)

Values('홍길동', 21, '서울')

Go

Insert Members Values('백두산', 100, '부산')

Go

Insert Members Values('한라산', 30, '부산')

Go

 

 

--[3] 데이터조회(출력)

Select * From Members

Go

 

 

--[!] 하위쿼리(서브쿼리)

-- 3번인데이터의나이보다큰데이터만출력

       --[a] 3번레코드의나이

Select Age From Members Where Num =3

 

       --[b] 3번레코드의나이보다큰데이터출력

Select * From Members Where Age > 30

 

       --[a] 3번레코드의나이

Declare @intAge Int

Select @intAge = Age From Members Where Num = 3

       --[b] 3번레코드의나이보다큰데이터출력

Select * From Members Where Age > @intAge

       --[!] 최종: 서브쿼리는기본적으로스칼라값(단일값)이반환되어져야함

Select * From Members

Where Age > (Select Age From Members Where Num = 3)

Go

 

-- 나이가평균이하인사람출력

Select * From Members Where Age <= (Select Avg(Age) From Members)

Go

 

-- 주소가'부산'인사람의나이보다크거나같은데이터출력

Select * From Members

Where Age >= (Select Age From Members Where Address = '부산')

Go -- 에러

 

-- Scalar 값이아닌다중레코드값은In 구문사용

Select * From Members

Where Age In (Select Age From Members Where Address = '부산')

Go

 

-- 위구문을개선: Or(Any, Some)연산, And(All)연산

Select * From Members

Where

       Age >= Any(Select Age From Members Where Address = '부산')

Go -- 30, 100

 

Select * From Members

Where

       Age >= All(Select Age From Members Where Address = '부산')

Go -- 100

 

 

--[6] 테이블삭제

Drop Table dbo.Members

Go

 

 

 

      

'.NET프로그래밍 > SQL Server 2008' 카테고리의 다른 글

32. 뷰(View)  (0) 2009.09.15
31. GroupBy  (0) 2009.09.14
29. 조인(Join)  (0) 2009.09.14
28. 명령어로 사용자생성하기  (0) 2009.09.14
27. 사용자정의함수  (0) 2009.09.14
Posted by holland14
:

-- 조인(Join) : Left 조인

-- 카테고리테이블설계

Create Table dbo.Categories

(

       CategoryID Int Identity(1, 1) Not Null Primary Key, -- 카테고리번호

       CategoryName VarChar(25) Not Null  -- 카테고리명

)

Go

 

Insert Categories Values('가전')  -- 1번카테고리

Go

Insert Categories Values('컴퓨터') -- 2번카테고리

Go

Insert Categories Values('서적')

Go

 

--상품테이블설계

Create Table dbo.Products

(

       ProductID Int Identity(1, 1) Not Null Primary Key,   -- 상품고유번호

       ModelName VarChar(25) Not Null,        -- 상품명

       SellPrice Int Null,                    -- 가격

       CategoryID Int Null                    -- 카테고리(1,2,3)

)

Go

 

--[!] 외래키따로지정: 외부에서

Alter Table dbo.Products

Add Foreign Key(CategoryID) References Categories(CategoryID)

Go

 

-- 가전, 냉장고, 100

Insert Products Values('냉장고', 100, 1)

Go

 

-- 컴퓨터, 노트북, 200

Insert Products Values('노트북', 200, 2)

Go

Insert Products Values('데스크톱', 150, 2)

Go

 

-- 상품평(코멘트) 테이블설계

Create Table dbo.Reviews

(

       ReviewID Int Identity(1, 1) Primary Key,      -- 일련번호

       ProductID Int References Products(ProductID), -- 외래키

       Comment VarChar(3850)                         -- 내용

)

Go

Insert Into Reviews Values(1, '냉장실에서얼음이얼어요...')

Insert Into Reviews Values(2, '브랜드가모닝글로리')

 

 

 

Select * From Categories

Select * From Products

 

 

-- 상품리스트출력: 카테고리명, 상품명, 판매가

--[1] SQL Server 전용문법

Select CategoryName, ModelName, SellPrice

From Categories, Products

Where Categories.CategoryID = Products.CategoryID

Go

 

--[2] ANSI-SQL 공통문법

Select CategoryName, ModelName, SellPrice

From Categories Join Products

       On Categories.CategoryID = Products.CategoryID

Go

 

--[3] 상세표시: Join은기본적으로Inner Join이다.

Select

       Categories.CategoryName,

       Products.ModelName,

       Products.SellPrice

From Categories Inner Join Products

       On Categories.CategoryID = Products.CategoryID

Go

 

--[4] 축약표시-> SQL Server전용문법이다.

Select c.CategoryName, p.ModelName, p.SellPrice

From Categories c, Products p

Where c.CategoryID = p.CategoryID

Go

 

/*

위의[1], [2], [3], [4]는모두똑같은구문이다. 표현방식은다르지만실행결과는모두같다.

*/

 

Select * From Products

Select * From Reviews

 

-- 상품명, 코멘트

-- 기본조인(Inner Join)은매치되는결과만가져온다. '데스크톱' 누락

Select p.ModelName, r.Comment

From Products p Inner Join Reviews r

       On p.ProductID = r.ProductID

Go

 

-- Left Outer Join : 왼쪽테이블의모든목록은출력

Select p.ModelName, r.Comment

From Products p  Left Outer Join Reviews r

       On p.ProductID = r.ProductID

Go

 

 

-- 3개테이블조인

-- 카테고리명, 상품명, 판매가, 코멘트

Select c.CategoryName, p.ModelName, p.SellPrice, r.Comment

From

       Categories c

             Join Products p

                    On c.CategoryID = p.CategoryID

                    Join Reviews r

                           On p.ProductID = r.ProductID

Go          

 

Select c.CategoryName, p.ModelName, p.SellPrice, r.Comment

From Categories c, Products p, Reviews r

Where

       c.CategoryID = p.CategoryID

       And

       p.ProductID = r.ProductID

Go

 

 

'.NET프로그래밍 > SQL Server 2008' 카테고리의 다른 글

31. GroupBy  (0) 2009.09.14
30. 서브쿼리(=하위쿼리)  (0) 2009.09.14
28. 명령어로 사용자생성하기  (0) 2009.09.14
27. 사용자정의함수  (0) 2009.09.14
26. 구성함수  (0) 2009.09.14
Posted by holland14
:

-- 로그인사용자생성: 15장학습해서...

 

-- 로그인사용자(아이디/암호) 만들고,

       -- 기본데이터베이스Sun으로설정하고

       -- 권한: Sun 데이터베이스에db_owner 권한부여

 

 

--[!] T-SQL로로그인사용자만들기

use Master

Go

 

--[1] Sun 데이터베이스생성

--Drop Database Sun

Create Database Sun

Go

 

--[2] Sun Login 생성

--Drop Login Sun

Create Login Sun                        -- 아이디

With

       Password = 'Pa$$w0rd',           -- 암호

       Default_Database = Sun,          -- 기본데이터베이스설정

       Check_Policy = off               -- 암호정책강제적용해제

Go

 

Alter Login Sun Enable -- 활성화(기본값) -> 생략가능하다.

Go

 

--[3] Sun 데이터베이스에Sun 로그인사용자에db_owner 권한부여

Use Sun

Go

 

-- Drop User Sun

Create User Sun For Login Sun With Default_Schema = dbo

Go

 

-- db_owner 권한부여

Exec sp_addrolemember db_owner, Sun

Go

 

 

 

 

/*

- Create Login [이름] with [옵션(패스워드등등)]

- sp_addrolemember(Transact-SQL) : 현재데이터베이스의데이터베이스역할에데이터베이스사용자, 데이터베이스역할, Windows 로그인또는Windows 그룹을추가합니다.

*/





'.NET프로그래밍 > SQL Server 2008' 카테고리의 다른 글

30. 서브쿼리(=하위쿼리)  (0) 2009.09.14
29. 조인(Join)  (0) 2009.09.14
27. 사용자정의함수  (0) 2009.09.14
26. 구성함수  (0) 2009.09.14
25. 형식변환 관련함수  (0) 2009.09.14
Posted by holland14
:

-- 사용자정의함수

 

Select dbo.Hap(3, 5) As

Go

 

-- Hap(3, 5) => 8을출력하는함수

Create Function dbo.Hap(@a Int, @b Int)

       Returns Int -- 반환값에대한테이터형식을지정

As

       Begin

             --[1] Intput

             Declare @result Int

             --[2] Process

             Set @result = @a + @b

             --[3] Output

             Return @result             -- 반환

       End

Go    

 

 

-- MyPower(2, 10) => 2 ^ 10 = 1024 출력

Select dbo.MyPower(2, 10) -- 1024

Go

 

-- MyPower 함수설계???

Create Function dbo.MyPower(@n Int, @c Int)

       Returns Int

As

       Begin        

             Declare @result Int                    

             Set @result = 1                               -- 곱하기위해서1로초기화

            

             Declare @i Int

             Set @i = 1

             While @i <= @c

             Begin

                    Set @result = @result * @n -- 카운트만큼곱하기

                    Set @i = @i + 1

             End

            

             Return @result                         

       End

Go

 

 

-- MyAbs() : 절대값

Select dbo.MyAbs(-10)      -- 10

Go

 

 

-- MyAbs 함수설계하기

Alter Function dbo.MyAbs(@n Int)

       Returns Int

As

       Begin

             --[1] Input

             Declare @result Int

             --[2] Process

             If @n < 0

                    Set @result = -@n

             Else

                    Set @result = @n

             --[3] Output

             Return @result     

       End

Go

 

 

-- dbo.Even(100) : 1~100까지짝수의합

-- dbo.Even(1000) : 1~1000까지짝수의합

Select dbo.Even(100)

Go

Select dbo.Even(1000)

Go

 

Create Function dbo.Even(@n Int)

       Returns Int 

As

       Begin 

             Declare @sum Int          

             Set @sum = 0

             Declare @i Int

            

             Set @i = 1

             While @i <= @n            

             Begin 

                    If @i % 2 = 0

                    Begin

                           Set @sum = @sum + @i

                    End

                    Set @i = @i + 1

             End

            

             Return @sum

       End

Go


Posted by holland14
:

Select @@ServerName -- 현재SQL Server의이름

 

Select @@Version -- 현재버전

 

Select @@Language -- 현재언어

 

Select @@ServiceName -- 서비스명(SQL 이름)

 

 

Posted by holland14
: