SQL 서버 고급 응용 모음 집
use master
go
if exists (select * from sysdatabases where name='MyDatabase')― master sysdatagbases
drop database MyDatabase― sysdatabases ,
go
exec xp_cmdshell ‘md D:/MyDatabases'― ( , ),DOS (mkdir=md)
go
create database MyDatabase―
on
(
name='MyDatabase_data',--
filename='D:/MyDatabases/MyDatabase_data.mdf',--
size=5mb,--
maxsize=50mb,-- ,
filegrowth=20%--
)
log on
(
name='MyDatabase_log',--
filename='D:/MyDatabases/MyDatabase_log.ldf',--
size=5mb,--
maxsize=50mb,-- ,
filegrowth=20%--
)
go
use MyDatabase
go
1.2 구축 표
If exists (select * from sysobjects where name='Mytable')
drop table Mytable
go
create table Mytable
(
ID int not null identity(1,1) primary key,-- 1, 1,
name nchar(10) not null,--
degree numeric(18,0)― ,numeric(18,0) 18 , 0
)
Go
1.3 제약 조건 추가
Alter table stuInfo add constraint PK_stuNo primary key(stuNo)―
alter table stuMarks add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)―
alter table stuInfo add constraint UQ_stuID unique(stuID)―
alter table stuInfo add constraint df_stuAddress default(‘ ') for stuAddres―
alter table stuMarks add constraint ck_stuAge check(stuAge between 15 and 40)―
alter table stuMarks drop constraint ck_stuAge―
1.4 계 정 관리.1.4.1 로그 인 계 정 만 들 기
exec sp_grantlogin 'jbtraining/s26301' --windows jbtraining/s26301,jbtraining
exec sp_addlogin 'admin','0533131'--SQL , : 'admin', :0533131.
1.4.2 데이터베이스 사용 자 를 만 듭 니 다
exec sp_grantdbaccess 'jbtraining/s26301','s26301dbuser'--s26301dbuser
exec sp_grantdbaccess 'admin', 's26301dbuser'--s26301dbuser
1.4.3 데이터베이스 사용자 에 게 권한 을 부여 합 니 다
/* s26301dbuser mytable select,insert,updata,delete */
grant select,insert,update,delete on mytable to s26301dbuser
/* s26301dbuser
grant create table to s26301dbuser
2.T-SQL 프로 그래 밍 2.1 변수 입 니 다.부분 변수의 이름 은 반드시 태그@접두사 로 해 야 합 니 다.Declare@name varchar(8)-성명 변수 입 니 다.Declare@name varchar(8)=value--초기 값.set@name=value--할당.Select@name=value--할당.전역 변수 SQL server 의 모든 전역 변 수 는 두 개의@플래그 를 접두사 로 사용 합 니 다.변량
속뜻
@@error
마지막 T-SQL 오류 번호
@@identity
마지막 으로 삽 입 된 표지 값
@@language
현재 사용 중인 언어 이름
@@max_connections
동시 연결 의 최대 수 를 만 들 수 있 습 니 다.
@@rowcount
이전 SQL 문장의 영향 을 받 은 줄 수
@@servername
로 컬 서버 이름
@@servicename
이 컴퓨터 의 SQL 서비스 이름
@@timeticks
현재 컴퓨터 의 눈금 당 초 단위
@@transcount
현재 연결 이 열 린 트 랜 잭 션 수
@@version
SQL server 의 버 전 정보 2.2 출력 문 입 니 다.부분 변수 나 문자열 을 인쇄 하고 문자열 로 데 이 터 를 인쇄 합 니 다.Select 부분 변수 AS 사용자 정의 열 이름 으로 표 형식 으로 데 이 터 를 인쇄 합 니 다.2.3 논리 제어 문.2.3.1.If-else If(표현 식)Begin 문 1 문 2 End Else Begin 문 1 문 2 End 2.3.2.case Case When 조건 1 then 결과 2 When 조건 2 then 결과 2 End 3.고급 조회 3.1 하위 조회.Select...from 표 1 where 필드 1>(하위 조회)3.2IN 과 NOT IN 하위 조회 Select...from 표 1 where 필드 1 NOT IN(하위 조회)Select...from 표 2 where 필드 2 IN(하위 조회)3.3 Exists 와 Not Exists 하위 조회 If exists(하위 조회)문 If not exists(하위 조회)문 4.사무,색인,보기.4.1 사무² 시작 사무:begin transaction² 제출 사무:commt transaction² 스크롤 백 트 랜 잭 션 분류² 명시 적 트 랜 잭 션:begin transaction 으로 트 랜 잭 션 의 시작 을 명 확 히 지정 합 니 다.² 내 현적 사무:set implicit 설정 을 통 해transactions on 문 구 는 함 성 트 랜 잭 션 모드 를 열 려 고 설정 합 니 다.내 현적 트 랜 잭 션 으로 작업 할 때 SQL server 는 트 랜 잭 션 을 제출 하거나 스크롤 백 한 후에 카드 를 움 직 여 새 트 랜 잭 션 을 시작 합 니 다.트 랜 잭 션 의 시작 을 설명 할 수 없습니다.모든 트 랜 잭 션 을 제출 하거나 스크롤 백 하면 됩 니 다.² 자동 제출 트 랜 잭 션:SQL server 의 기본 모드 입 니 다.각각 T-SQL 문 구 를 하나의 트 랜 잭 션 으로 간주 합 니 다.성공 적 으로 실행 되면 자동 으로 제출 합 니 다.오류 가 발생 하면 자동 으로 스크롤 백 합 니 다.예제:Begin transaction-시작 사무
Declare @errorsum int
Set @errorsum=0
Update ……………………….
Set @errorsum=@errorsum+@@error
Update………………………..
Set @errorsum=@errorsum+@@error
If @errorsum<>0
Begin
Rollback transaction--
End
Else
Begin
Commit transaction--
End
Go
4.2 색인 색인 은 SQL server 에서 데 이 터 를 편성 하 는 내부 방법 입 니 다.이 는 SQL server 에 데 이 터 를 조회 하 는 경로 색인 페이지 를 편성 하 는 방법 을 제공 합 니 다.데이터베이스 에 저 장 된 색인 데이터 페이지 입 니 다.색인 페이지 는 검색 데이터 줄 의 키워드 페이지 와 이 데이터 줄 의 주소 지침 을 저장 합 니 다.색인 페이지 는 중국어 사전에 서 병 음 이나 필획 에 따라 정렬 하 는 디 렉 터 리 페이지 와 유사 하 다.유일한 색인:유일한 색인 은 두 줄 이 같은 색인 값 을 가 질 수 없습니다.메 인 키 색인:데이터베이스 관계 도 에서 표 에 메 인 키 를 정의 하면 메 인 키 색인 을 자동 으로 만 듭 니 다.메 인 키 색인 은 유일한 색인 의 특수 한 유형 입 니 다.메 인 키 인덱스 는 메 인 키 의 모든 값 이 유일 하도록 요구 합 니 다.검색 에서 홈 키 색인 을 사용 할 때 데 이 터 를 빠르게 접근 할 수 있 습 니 다.집합 색인:집합 색인 에서 표 의 각 줄 의 물리 적 순 서 는 키 의 논리(색인)순서 와 같 습 니 다.표 에는 집합 색인 만 포함 할 수 있 습 니 다.색인 만 들 기
If exists (select name from sysindexes where name='myindex')
Drop index .myindex
Create nonclustered index myindex
on
student(id) with fillfactor=30
go
my index 는 색인 이름,with fillfactor=30,지정 충전 인 자 는 30%색인 Select*from stumarks(my index)where writtenExam between 60 and 90 Stumarks 는 표 이름,my index 는 색인 이름,writtenexam 은 열 이름,between 60 and 90 writtenexam 필드 60 에서 90 사이 의 값 을 조회 하여 색인 을 만 드 는 조건 을 지정 합 니 다.SQL server 가 색인 에서 데 이 터 를 검색 하 는 데 걸 리 는 시간 이 표 에서 한 줄 씩 검색 하 는 데 걸 리 는 시간 보다 더 길 기 때 문 입 니 다.이해 하기 쉽다.보 기 를 만 들 때 열 이름 을 의미 있 는 이름 으로 바 꾸 어 열 이 대표 하 는 내용 을 쉽게 이해 할 수 있 습 니 다.보기 에서 열 이름 을 수정 하면 기본 표 의 열 이름 l 에 영향 을 주지 않 고 데 이 터 를 얻 는 것 이 더 쉽 습 니 다.많은 사람들 이 SQL 에 대해 잘 모 르 기 때문에 여러 표 에 대한 복잡 한 조 회 를 만 드 는 것 은 매우 어렵다.따라서 보 기 를 만들어 서 여러 표 의 데 이 터 를 편리 하 게 접근 할 수 있 습 니 다.개발 자 에 대한 혜택 l 데이터 검색 제한 이 더 쉽다.개발 자 들 은 때때로 어떤 줄 이나 열 에 있 는 정 보 를 숨겨 야 한다.보 기 를 사용 하면 사용 자 는 필요 한 데 이 터 를 유연 하 게 방문 할 수 있 고 같은 표 나 다른 표 의 다른 데이터 베이스 의 안전성 을 확보 할 수 있 습 니 다.이 목 표를 실현 하려 면 보 기 를 만 들 때 사용자 에 게 비밀 번 호 를 유지 할 열 을 제외 할 수 있 습 니 다.l 유지보수 프로그램 이 더 편리 합 니 다.디 버 깅 보기 가 디 버 깅 조회 보다 더 쉽다.보기 의 과정 별 오 류 를 추적 하 는 것 이 더 쉽 습 니 다.모든 절차 가 보기 의 구성 부분 이기 때 문 입 니 다.보 기 를 만 듭 니 다
If exists (select * from sysobjects where name-‘myview')
Drop view myview
Go
Create view myview
As
Select =stuName, =sutInfo from stuInfo left join stuMarks
on stuInfo.stuNO=stuMarks.stuNo
Go
보 기 를 사용 합 니 다.Select*from my view 5.저장 과정 5.1 시스템 저장 과정 에서 자주 사용 되 는 시스템 저장 과정 Spdatadases 는 서버 에 있 는 모든 데이터베이스 Sp 를 보 여 줍 니 다.helpdb 지정 한 데이터베이스 나 모든 데이터베이스 에 대한 정보 보고 Sprenamedb 데이터베이스 이름 변경 Sptables 현재 환경 에서 조회 가능 한 대상 의 목록 으로 돌아 가기 Spcolumns 는 어떤 표 열 에 있 는 정보 sp 를 되 돌려 줍 니 다.help 어떤 표 의 모든 정 보 를 보기 Sqhelpconstraint 어떤 표 의 제약 조건 보기 Sqhelpindex 어떤 표 의 색인 보기 Sqstored_procedures 는 현재 환경 에 있 는 모든 저장 과정 을 보 여 줍 니 다 Sppassword 로그 인 계 정의 비밀번호 추가 또는 수정 Sphelptext 는 기본 값,암호 화 되 지 않 은 저장 과정,사용자 정의 저장 과정 을 표시 합 니 다.트리거 나 보기 의 실제 텍스트 5.2 사용자 정의 저장 프로 세 스 Ø 메모리 프로 세 스 Ø 테이프 입력 매개 변수 저장 프로 세 스 Ø 테이프 출력 매개 변수 저장 프로 세 스 5.2.1 매개 변수 저장 프로 세 스
Create proc procedureName
As
SQL
Go
문법 Exec procedure Name 5.2.2 입력 매개 변수 저장 프로 세 스
Create proc procedureName
@number int = ,
@n varchar(20)
As
SQL
Go
:
Exec procedureName 200,'lyh'
Exec procedureName @n='lyh'
5.2.3 출력 매개 변수 저장 프로 세 스
Create proc procedureName
@number int output,
@name char(20)
As
SQL
Set @number=1000
Go
Declare @dd int
Exec procedureName @dd output,'lyh'
6.SQL server 트리거 는 트리거 가 무엇 입 니까?트리거 는 시 계 를 삽입 하거나 업데이트 하거나 삭제 할 때 자동 으로 실행 되 는 저장 과정 입 니 다.트리거 의 종류 INSERT 트리거:테이블 에 데 이 터 를 삽입 할 때 트리거 가 정 의 된 SQL 문 구 를 자동 으로 실행 합 니 다.UPDATE 트리거:표 의 열,다 중 열 을 업데이트 할 때 트리거 가 정의 하 는 SQL 문 구 를 자동 으로 실행 합 니 다.DELETE 트리거:표 에 기 록 된 기록 을 삭제 할 때 트리거 가 정의 하 는 SQL 문 구 를 자동 으로 실행 합 니 다.deleted 표:DELETE 와 UPDATE 문구 에 영향 을 미 치 는 줄 을 저장 하 는 복사 본 입 니 다.즉,DELETED 표 에 삭제 되 거나 업데이트 되 기 전의 기록 줄 을 임시로 저장 합 니 다.DELETE 나 UPDATE 문 구 를 실행 할 때 트리거 시트 에서 줄 을 삭제 하고 DELETED 표 로 전송 합 니 다.이로써 저 희 는 DELETED 표 에서 삭 제 된 데이터 줄 이 삭 제 될 수 있 는 지 확인 할 수 있 습 니 다.만약 할 수 없다 면,트리거 자체 가 특수 한 사무 단원 이기 때문에,이 동작 을 취소 할 수 있 습 니 다.Inserted 표:INSERT 와 UPDATE 문구 에 영향 을 미 치 는 줄 을 저장 하 는 복사 본 입 니 다.즉,inserted 표 에 삽입 되 거나 업 데 이 트 된 기록 줄 을 임시로 저장 합 니 다.INSERT 나 UPDATE 문 구 를 실행 할 때 새 줄 은 INSERT 표 와 트리거 표 에 동시에 추 가 됩 니 다.이 를 통 해 저 희 는 INSERTED 에서 데 이 터 를 삽입 하 는 것 이 업무 수 요 를 만족 시 키 는 지 확인 할 수 있 습 니 다.만족 하지 않 으 면 사용자 에 게 오류 메 시 지 를 보고 하고 스크롤 백 으로 작업 을 취소 할 수 있 습 니 다.트리거 정의 Create trigger triggername On tablae_name[with encryption]For(insert,update,delete)SQL 문장 Go Triggername:트리거 이름 입 니 다.트리거 이름 은 식별 자 규칙 에 부합 되 어야 하 며 데이터베이스 에서 유일 해 야 합 니 다.트리거 소유자 이름 을 지정 할 지 선택 할 수 있 습 니 다.Table_name:트리거 를 실행 하 는 표 나 보기 With encryption:암호 화 syscoments 표 에 create trigger 문 구 를 포함 하 는 항목 입 니 다.with encryption 을 사용 하면 트리거 를 SQLserver 에서 복사 한 부분 으로 발표 하 는 것 을 방지 할 수 있 습 니 다.Create trigger:일괄 처리 의 첫 번 째 문장 이 어야 하 며 표 에 만 적용 할 수 있 습 니 다.트리거 는 현재 데이터베이스 에서 만 만 만 들 수 있 지만 트리거 는 현재 데이터베이스 의 외부 대상 을 참조 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.