T-SQL 학습 노트

3115 단어
T-SQL을 배울 때 기록한 노트, 상세하지도 않은 걸로 기억해요.
if 및 while 문
declare @age int
select @age = DATEDIFF(year,stuAge,getdate()) from TbStudent where stuName = '   '

if(@age>=18)
begin --   begin..end
    print N'   '
end
else
begin
    print N'   '
end
declare @sum int
set @sum = 0
declare @i int
set @i = 1
while(@i <= 100)
begin
    if(@i % 2 <> 0)
    begin
        set @sum = @sum + @i
    end
    set @i = @i + 1
end
print @sum

사용자 정의 함수
표량 함수, 표값 함수(내연 표값 함수와 다문구 표값 함수)로 나뉜다.
표량 함수: 기본 형식 데이터의 값만 되돌려줍니다
--   
create function    
([    ])        ,         
returns      
as
begin
--  ······     
    return    
end

테이블 값 함수: 테이블 형식의 결과 집합을 되돌려줍니다.
인라인 테이블 값 함수
--   
create function    
([   ])
returns table
as
return (  select  )

다문 테이블 값 함수
다문구 표치 함수는 표량 함수와 내연 표치 함수의 결합체로 볼 수 있다
--   
create function    ([    ])
returns      table
(        )
as
begin
    SQL
    return       
end

주의
  • SQL 사용자 지정 함수에는 반환 값이 있어야 합니다
  • .
  • 사용자 정의 함수에서 기본 테이블 내용을 수정할 수 없음 (즉, insert, update, delete를 사용할 수 없음)
  • 매개 변수가 여러 개 있으면 매개 변수 사이를 쉼표로 구분
  • 함수를 호출할 때 함수 이름 앞에 dbo를 붙여야 한다.

  • 저장 프로세스
    프로세스를 저장할 때 서버에 저장된 T-SQL 문장의 집합으로 특정한 기능을 완성합니다.시스템 스토리지 프로세스(시스템 자체 포함) 및 사용자 지정 스토리지 프로세스로 구분
    스토리지 프로세스 사용자 정의
    --   
    create procedure( proc)      (up_)
    [    ] --              
    begin
              
    end

    참고:
  • 스토리지 프로세스에 반환 값이 없을 수 있음
  • 저장 프로세스는return 문장의 반환값을 적용하지 않으며, 반환값이 있으면 select 문장의 반환
  • 을 직접 사용합니다.
    인덱스
  • 인덱스: 테이블에 생성
  • 기능: 검색 속도 향상
  • 전체 표면청소
  • 색인은 집합 색인과 비집합 색인으로 나뉜다
  • 모으기 인덱스: 하나의 데이터 테이블에 모으기 인덱스만 만들 수 있음
  • 메인 키는 기본적으로 집합 인덱스를 생성합니다
  • where를 자주 사용하는 필드에 비집합 인덱스 추가
  • 단점: 추가 저장 공간을 차지하여 insert, 업데이트, delete의 속도를 낮출 수 있음
  • 실무, 일, 총무
    업무를 동시에 제어할 수 있는 단위입니다. 그는 사용자가 정의한 작업입니다. 이 작업들은 모두 하거나 하지 않으며 분할할 수 없습니다.SQL Server 트랜잭션과 ADO로 구분NET 트랜잭션
    --   
    begin tran  --        
    commit tran --  
    rollback    --  

    C# 에서는 일반적으로 트랜잭션 작업을 스토리지 프로세스로 캡슐화합니다.
    트리거
  • 트리거는 특수한 저장 프로세스
  • 단지 이 저장 프로세스는 호출을 표시할 수 없습니다
  • 그는 특정 사건을 한 후에만 자동으로 응답을 촉발할 수 있다
  • 두 장의 임시 데이터 테이블: inserted, deleted
  • 트리거에서만 액세스
  • 트리거는 표에 부착된
  • --   
    create trigger      
    on   
    after( for)      / instead of      [insert/delete/update]
    as 
    begin
    -- ······
    end

    트리거의 트리거 조건: insert, delete, 업데이트
    create trigger tr_Bank_insert
    on Bank
    after insert
    as
    begin
        print ' Bank       '
    end
    
    create trigger tr_Bank_Delete
    on Bank
    after delete
    as
    begin
        declare @id int
        declare @userName nvarchar(8)
        declare @userMoney int
        select @id = id, @userMoney = userMoney, @userName = userName from deleted
        insert into BankBak values(@id, @userName, @userMoney)
    end
    
    select * from Bank
    select * from BankBak
    
    delete from Bank where id = 3

    SQL Server의 트리거는 테이블 레벨 트리거이며, 테이블에서 한 번에 여러 번 실행하면 한 번만 트리거됩니다.

    좋은 웹페이지 즐겨찾기