sql serverについて、どのくらい知っていますか.


先月1篇の文章を書いた
JSについて、どのくらい知っていますか。
次に、シリーズの2つであるsql serverを見てみましょう.
以前は長い間、sql serverデータベースとテーブルを管理するためにインタフェースを使用していましたが、最も主な設計はクエリーアナライザとエンタープライズマネージャです(sql server 2005のSSMSとsql server 2000のクエリーアナライザは似ています).私たちのプログラミングスタッフにとって、sql serverの初級段階にとどまることはできないと思います.最近しばらくsql serverを学んで、T-SQLのプログラミングに対してとても大きい理解があって、今T-SQL文を使ってデータベースを制御することができます.
1データベースの作成
  
--     Library
create database Library
on
(
	name='Librarybin',
	filename='D:\Library.mdf',
	size=4mb,
	maxsize=30mb,
	filegrowth=10%
)
log on
(
	name='Librarylog',
	filename='D:\Library.ldf',
	size=5mb,
	maxsize=25mb,
	filegrowth=1mb
)
go

もちろん、ここではprimaryファイルグループの下にデフォルトで配置されています.同時に、サブデータファイルと複数のログファイルを作成することもできます.構造は同じです.主に5つの属性が含まれています.名前、filename、size、maxsize、filegrowthです.もちろんこの中には多くの注意点がありますが、書いてみると問題が見つかります.もう一つはスクリプトの最後にgo文があり、一括実行を表しますよ.
2テーブルの作成
use library
--   Readers
create table Readers
(
	RID int identity(1,1),
	RName varchar(20) not null,
	RAge int,
	RSex bit ,
	RAddress varchar(50)
)

ここでは、フォーマット:フィールド名フィールドタイプ[フィールドプロパティ]を参照してください.フィールドプロパティにはidentityとnot nullの2つが含まれています.この2つだけです.フィールドの後ろにdefault()が続く場合がありますが、フィールド属性ではなく、フィールドの制約です.defaultコンストレイントも、5つのコンストレイントのうち唯一の設定方法が異なります.制約については以下を見ます.
3制約の作成
sql serverでは、データベース・テーブルを作成するときにコンストレイントを同時に作成する方法と、データベース・テーブルの作成番号の後にコンストレイントを作成する方法の2つがあります.コンストレイントのタイプは、プライマリ・キーコンストレイント(primary key)、外部キーコンストレイント(foreign key)、チェックコンストレイント(check)、デフォルトコンストレイント(default)、一意コンストレイントの5種類です.
--     
create table Borrows
(
	BSID int identity(1,1),
	BID int not null foreign key references Books(BID),
	RID int not null foreign key references Readers(RID),
	BorrowDate datetime default(getdate()),
	ReturnDate datetime,
	primary key(BSID)
)
--    
alter table Readers
add constraint CK_RaderAge
check(rage between 15 and 60)

--    
alter table Readers
add constraint PK_Reader
primary key (RID)

--    
alter table Borrows
add constraint FK_Book
foreign key (BID) references Books(BID)
--    
alert table Readers
add constraint DF_ReturnDate
default (getdate()) for ReturnDate

追加デフォルトコンストレイントを単独で出すと、他のコンストレイントとは書き方が違います.
4トランザクションの作成
--     

begin transaction
declare @error int
set @error = 0
insert into borrows(rid,bid,borrowdate) values
		(5,10,2008-6-11)
set @error = @error + @@error

update books set bstate=1
where bid=10

set @error = @error + @@error

if @error <> 0
	rollback transaction

else
	commit transaction

事物三歩曲:begin transaction,rollback transaction,commit transaction.ここでは,@errorと@@errorの2つの変数も見られ,前者は我々が定義した局所変数であり,後者はsql serverが定義したint型グローバル変数である.変数を定義する方法は、declare@error intです.ローカル変数を設定する方法はset@error=0、select@error=フィールド名fromテーブルです.ちなみにsql server種の出力方式にもprintとselect文の2種類があります.前者はテキストを印刷し、後者は表を印刷します.
トランザクションについては、トランザクションの独立性レベルについて説明します.それぞれ、読み取り未コミット、読み取りコミット、繰り返し読み取り可能、シーケンス化です.sql serverのデフォルトの独立性レベルは、読み取りコミット済みです.異なる独立性レベルで発生する問題は、修正の損失(書き込みの競合)、膨張、繰り返し不可、幻読みです.コミットされていない独立性レベルを読むと、すべての問題が発生しますが、シーケンス化では問題は発生しません.また、幻読と再読不可の概念も違いますよ.一つはオブジェクトの集合で、一つはオブジェクトの状態です.
5インデックス
--  
create clustered index IX_Books_Name
on Books(Bname)
with fillfactor 30

select * from books (index=IX_Books_Name)
where bname='    '

インデックスの作成は簡単です.もちろん、インデックスには4つのタイプ(プライマリ・キー・インデックス、ユニーク・インデックス、集計インデックス、非集計インデックス)があります.プライマリ・キー・インデックスは異なる作成方法のインデックスです.プライマリ・キーを作成するときに作成し、集計インデックスに設定します.集約インデックスと非集約インデックスの概念についても簡単ですが、辞書を使うのは良い比喩ですが、この2つの概念がまだ分からない場合は、急いで資料を調べましょう.クエリーのテーブル名にindex=インデックス名を付けるだけで簡単です.
6ビュー
--    
create view V_Borrow
as 
 	select     =books.bid,    =books.bname,
		    =readers.rid,    =readers.rname,
		    =borrows.borrowdate,    =borrows.returndate
	from books
	inner join borrows on books.bid=borrows.bid
	inner join readers on readers.rid=borrows.rid

これは何も言うことはありません.簡単すぎます.
7ストレージ・プロシージャ
sql serverのストレージ・プロシージャは、プログラミング言語の方法のようなものです.彼は一連の操作のパッケージです.もちろん彼にも名前、パラメータ、メソッドがあります.パラメータの書き方は、他の言語とはかなり違います.
@lianxi  int [= 0] [output]
名前タイプデフォルト入力/出力
outputは出力パラメータを表します.ここで入出力パラメータは一緒に書かれていますが、これも他のプログラミング言語とは異なるところです.次に、作成方法を示します.
create procedure xxx
@lianxi  int [= 0] [output]
as
xxxx
呼び出しはexecストレージ・プロシージャ名を使用します.
sql serverでのストレージ・プロシージャは、システム・ストレージ・プロシージャとユーザー定義ストレージ・プロシージャに分けられます.上記は、ユーザー定義ストレージ・プロシージャです.システムストレージ・プロシージャの場合、sql serverはmasterシステム・データベースに格納します.そこで、彼の詳細なコードを見ることができます.また、システムストレージプロセスを拡張する概念もあります.
8ビューについてもっと言いたいのは、クエリーしようとするデータの量が大きい場合、どのようにしてクエリーが試行中のレコードに迅速にクエリーされることを保証するかということです.インデックスを作成できませんか?
9 sql serverにはシステムテーブルがあることを知っています.インタフェースを通じて、システムテーブルにはデータベース、テーブル、トランザクションビューインデックスに関する多くの情報が含まれています.私たちもmysqlにも必ずあることを知っています.なぜmysqlの複数のサードパーティ管理ツールは、これらのシステムテーブルを参照する機能を追加しないのでしょうか.結局、これらの情報はとても重要です.
[size=medium;]これから数ヶ月の計画[/size]
[size=medium;]xml
ajax
オブジェクト向け
oracle
設計モード[/size]