| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Transact-SQL 基本」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
1行目: 1行目:
==Transact-SQL 基本==
+
==[[Transact-SQL 基本]]==
*http://msdn.microsoft.com/ja-jp/library/ms365303(v=SQL.90).aspx
+
*http://msdn.microsoft.com/ja-jp/library/ms365303(v=[[SQL]].90).aspx
 
[[SQL Server]] | [[Transact-SQL]] |  
 
[[SQL Server]] | [[Transact-SQL]] |  
 
===ステートメントをデータベース エンジンに送信する===
 
===ステートメントをデータベース エンジンに送信する===
=====Transact-SQL ステートメントは次の方法で作成してデータベース エンジンに送信できる。=====
+
=====[[Transact-SQL]] ステートメントは次の方法で作成してデータベース エンジンに送信できる。=====
 
*SQL Server Management Studio または、[http://go.microsoft.com/fwlink/?LinkID=37075&clcid=0x409 Management Studio Express(無料)] を使用
 
*SQL Server Management Studio または、[http://go.microsoft.com/fwlink/?LinkID=37075&clcid=0x409 Management Studio Express(無料)] を使用
 
*[http://msdn.microsoft.com/ja-jp/library/ms162773(v=SQL.90).aspx sqlcmd ユーティリティ]を使用
 
*[http://msdn.microsoft.com/ja-jp/library/ms162773(v=SQL.90).aspx sqlcmd ユーティリティ]を使用
52行目: 52行目:
 
*データベース エンジンにアクセスするには、ユーザーのログインが必要
 
*データベース エンジンにアクセスするには、ユーザーのログインが必要
 
====ログイン====
 
====ログイン====
#ユーザーの ID を Windows のアカウントまたは Windows グループのメンバとして表す
+
#ユーザーの ID を [[Windows]] のアカウントまたは [[Windows]] グループのメンバとして表す
#SQL Server のみに存在する SQL Server ログインを使用
+
#[[SQL Server]] のみに存在する [[SQL Server]] ログインを使用
  
<blockquote>既定では、コンピュータの管理者には SQL Server へのフル アクセス権が与えられる</blockquote>
+
<blockquote>既定では、コンピュータの管理者には [[SQL Server]] へのフル アクセス権が与えられる</blockquote>
====新しい Windows アカウントを作成====
+
====新しい [[Windows]] アカウントを作成====
 
=====ユーザー Yagi を作成=====
 
=====ユーザー Yagi を作成=====
 
[[File:1210_sqlsvr_sample05.jpg]]
 
[[File:1210_sqlsvr_sample05.jpg]]
 
=====これだけではログインできない=====
 
=====これだけではログインできない=====
*ログインできませんでした(Microsoft SQL Server、エラー:18456)
+
*ログインできませんでした(Microsoft [[SQL Server]]、エラー:18456)
 
[[File:1211_sqlsvr_sample06.jpg]]
 
[[File:1211_sqlsvr_sample06.jpg]]
  
71行目: 71行目:
  
 
=====エラーメッセージが変わった=====
 
=====エラーメッセージが変わった=====
*規定のデータベースを開けません(Microsoft SQL Server、エラー:4064)
+
*規定のデータベースを開けません(Microsoft [[SQL Server]]、エラー:4064)
 
[[File:1212_sqlsvr_sample07.jpg]]
 
[[File:1212_sqlsvr_sample07.jpg]]
  
 
====データベースへのアクセス権の付与====
 
====データベースへのアクセス権の付与====
*TestData データベースに切り替えてから CREATE USER ステートメントを使用して、ユーザーにそのログインをマップする。
+
*TestData データベースに切り替えてから C[[R]]EATE USE[[R]] ステートメントを使用して、ユーザーにそのログインをマップする。
 
=====[http://msdn.microsoft.com/ja-jp/library/ms188366(v=SQL.90).aspx USE]=====
 
=====[http://msdn.microsoft.com/ja-jp/library/ms188366(v=SQL.90).aspx USE]=====
 
  use [TestData];
 
  use [TestData];
84行目: 84行目:
  
  
<blockquote>これで、SQL Server のインスタンスと、データベースにアクセスできるようになる</blockquote>
+
<blockquote>これで、[[SQL Server]] のインスタンスと、データベースにアクセスできるようになる</blockquote>
 
==ビューとストアド プロシージャ==
 
==ビューとストアド プロシージャ==
 
[[SQL Server ストアド プロシージャ]] |  
 
[[SQL Server ストアド プロシージャ]] |  
 
*ビューは、格納された SELECT ステートメント
 
*ビューは、格納された SELECT ステートメント
*ストアド プロシージャは、バッチとして実行される 1 つ以上の Transact-SQL ステートメント
+
*ストアド プロシージャは、バッチとして実行される 1 つ以上の [[Transact-SQL]] ステートメント
 
===ビューを作成===
 
===ビューを作成===
 
=====[http://msdn.microsoft.com/ja-jp/library/ms187956(v=SQL.90).aspx CREATE VIEW]=====
 
=====[http://msdn.microsoft.com/ja-jp/library/ms187956(v=SQL.90).aspx CREATE VIEW]=====
  create view vw_Names
+
  create [[vi]]ew vw_Names
 
     as
 
     as
 
         select ProductName, Price from Products;
 
         select ProductName, Price from Products;

2020年2月16日 (日) 04:33時点における最新版

目次

Transact-SQL 基本

SQL Server | Transact-SQL |

ステートメントをデータベース エンジンに送信する

Transact-SQL ステートメントは次の方法で作成してデータベース エンジンに送信できる。

デーベースオブジェクトの作成

データベースを作成

CREATE DATABASE
create database TestData
go

<blockquote>GO キーワードは、複数のステートメントを単一のバッチで送信した場合に、ステートメントを区切る。</blockquote>

テーブルの作成

USE コマンドを実行して、データベースのコンテキストを TestData データベースに変更する

use TestData
go

テーブルの作成

CREATE TABLE
  • Products という名前のテーブルを作成
create table dbo.Products (
    ProductID int primary key not null,
    ProductName varchar(25) not null,
    Price money null,
    ProductDescription text null
)
go

データの挿入と更新

挿入

INSERT
insert dbo.Products (ProductID, ProductName, Price, ProductDescription)
    values(1, 'Clamp', 12.48, 'Workbentch clamp')
go

更新

UPDATE
update dbo.Products
    set ProductName = 'Flat Head Screwdriver'
    where ProductID = 1
go

データの読み取り

SELECT
select * from dbo.Products
go

データベース オブジェクトに対する権限の構成

ログインの作成

  • データベース エンジンにアクセスするには、ユーザーのログインが必要

ログイン

  1. ユーザーの ID を Windows のアカウントまたは Windows グループのメンバとして表す
  2. SQL Server のみに存在する SQL Server ログインを使用

<blockquote>既定では、コンピュータの管理者には SQL Server へのフル アクセス権が与えられる</blockquote>

新しい Windows アカウントを作成

ユーザー Yagi を作成

1210 sqlsvr sample05.jpg

これだけではログインできない
  • ログインできませんでした(Microsoft SQL Server、エラー:18456)

1211 sqlsvr sample06.jpg

ログインを作成

CREATE LOGIN
create login [ComputerName\Yagi]
    from windows
    with default_database = [TestData];
go
エラーメッセージが変わった
  • 規定のデータベースを開けません(Microsoft SQL Server、エラー:4064)

1212 sqlsvr sample07.jpg

データベースへのアクセス権の付与

  • TestData データベースに切り替えてから CREATE USER ステートメントを使用して、ユーザーにそのログインをマップする。
USE
use [TestData];
go
CREATE USER
create user [Yagi] for login [ComputerName\Yagi];
go


<blockquote>これで、SQL Server のインスタンスと、データベースにアクセスできるようになる</blockquote>

ビューとストアド プロシージャ

SQL Server ストアド プロシージャ |

  • ビューは、格納された SELECT ステートメント
  • ストアド プロシージャは、バッチとして実行される 1 つ以上の Transact-SQL ステートメント

ビューを作成

CREATE VIEW
create view vw_Names
    as
       select ProductName, Price from Products;
go

ストアド プロシージャ

作成

CREATE PROCEDURE
[1] PRINT]
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
execute pr_Names 100.00;
go

結果

1213 sqlsvr sample08.jpg

  • print ステートメントの内容が出力される

1214 sqlsvr sample09.jpg

データベース オブジェクトへのアクセス権の付与

  • 管理者は、上記で作成したビューとストアドプロシージャにアクセスできるが、追加したユーザーはアクセスできない
  • 必要な権限を付与するには、GRANT ステートメントを使用

ストアドプロシージャへのアクセス権を付与

GRANT
grant execute on pr_Names to Yagi;
go

テーブルへのSELECT権限を付与

GRANT
grant select on dbo.Products to Yagi;
go

データベース オブジェクトの削除

ストアド プロシージャに対する実行権限を削除

REVOKE
revoke execute on pr_Names from Yagi;
go

テーブルのSELECT権限を削除

REVOKE
revoke select on dbo.Products from Yagi;
go

データベースに対するアクセス権を削除

DROP USER
drop user Yagi;
go

インスタンスに対するアクセス権を削除

DROP LOGIN
drop login [ComputerName\Yagi];
go