Transact-SQL 基本
ステートメントをデータベース エンジンに送信する
- Transact-SQL ステートメントは次の方法で作成してデータベース エンジンに送信できる。
- SQL Server Management Studio または、Management Studio Express(無料) を使用
- sqlcmd ユーティリティを使用
- 作成したアプリケーションから接続
デーベースオブジェクトの作成
データベースを作成
create database TestData go
GO キーワードは、複数のステートメントを単一のバッチで送信した場合に、ステートメントを区切る。
テーブルの作成
USE コマンドを実行して、データベースのコンテキストを TestData データベースに変更する
use TestData go
テーブルの作成
- Products という名前のテーブルを作成
create table dbo.Products (
ProductID int primary key not null,
ProductName varchar(25) not null,
Price money null,
ProductDescription text null
)
go
データの挿入と更新
挿入
insert dbo.Products (ProductID, ProductName, Price, ProductDescription)
values(1, 'Clamp', 12.48, 'Workbentch clamp')
go
更新
update dbo.Products
set ProductName = 'Flat Head Screwdriver'
where ProductID = 1
go
データの読み取り
select * from dbo.Products go
データベース オブジェクトに対する権限の構成
ログインの作成
- データベース エンジンにアクセスするには、ユーザーのログインが必要
ログイン
- ユーザーの ID を Windows のアカウントまたは Windows グループのメンバとして表す
- SQL Server のみに存在する SQL Server ログインを使用
既定では、コンピュータの管理者には SQL Server へのフル アクセス権が与えられる
新しい Windows アカウントを作成
- ユーザー Yagi を作成
<<ref_imageプラグインは存在しません。>>
- これだけではログインできない
- ログインできませんでした(Microsoft SQL Server、エラー:18456)
<<ref_imageプラグインは存在しません。>>
ログインを作成
create login [ComputerName\Yagi]
from windows
with default_database = [TestData];
go
- エラーメッセージが変わった
- 規定のデータベースを開けません(Microsoft SQL Server、エラー:4064)
<<ref_imageプラグインは存在しません。>>
データベースへのアクセス権の付与
use [TestData]; go
create user [Yagi] for login [ComputerName\Yagi]; go
これで、SQL Server のインスタンスと、データベースにアクセスできるようになる
ビューとストアド プロシージャ
- ビューは、格納された SELECT ステートメント
- ストアド プロシージャは、バッチとして実行される 1 つ以上の Transact-SQL ステートメント
ビューを作成
create view vw_Names
as
select ProductName, Price from Products;
go
ストアド プロシージャ
作成
create procedure pr_Names @VarPrice money
as
begin
-- ユーザー定義メッセージをクライアントに返す
print 'Product less than ' + cast(@VarPrice as varchar(10));
-- 実際に行いたい処理
select ProductName, Price from vw_Names
where Price < @varPrice;
end
go
テスト
execute pr_Names 100.00; go
結果
<<ref_imageプラグインは存在しません。>>
- print ステートメントの内容が出力される
<<ref_imageプラグインは存在しません。>>
データベース オブジェクトへのアクセス権の付与
- 管理者は、上記で作成したビューとストアドプロシージャにアクセスできるが、追加したユーザーはアクセスできない
- 必要な権限を付与するには、GRANT ステートメントを使用
ストアドプロシージャへのアクセス権を付与
grant execute on pr_Names to Yagi; go
テーブルへのSELECT権限を付与
grant select on dbo.Products to Yagi; go
データベース オブジェクトの削除
ストアド プロシージャに対する実行権限を削除
revoke execute on pr_Names from Yagi; go
テーブルのSELECT権限を削除
revoke select on dbo.Products from Yagi; go
データベースに対するアクセス権を削除
drop user Yagi; go
インスタンスに対するアクセス権を削除
drop login [ComputerName\Yagi]; go

YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.