最近更新したページ
2013-10-20
2013-09-29
2013-09-23
2012-01-07
2011-11-09
2011-10-23
2011-10-09
2011-10-01
2011-09-29
2011-09-03
2011-08-07
2011-08-02
2011-07-29
2011-07-10
2011-05-05
2011-05-04
2011-04-24
2011-04-13
2011-04-05
2011-03-26
2011-02-18
2011-02-15
2010-12-26
2010-12-07
2010-12-05
2010-11-23
2010-09-28
2010-09-23
2010-08-26
2010-08-22
2010-07-16
2010-01-17
2010-01-11
2009-10-04
2009-08-21
2009-08-13
2009-06-18
2009-06-01
2009-04-29
2009-02-16
2009-02-11
2009-02-03
2008-07-22
2008-07-21
2008-07-15
2008-07-14
2008-07-13
2008-07-12
2008-07-08
2008-07-05
2008-06-28
2008-06-17
2008-06-05
2008-06-02
2008-06-01
2008-05-29
2008-05-26
2008-05-21
2008-05-19
2008-05-18
2007-10-31
2007-10-27
2007-09-28
2007-09-23
2007-09-17
2007-09-16
2007-09-14
2007-09-11
2007-06-18
2007-04-15
2006-12-21
2006-11-30
2006-11-22
2006-08-17
2006-03-29
2006-03-28
2006-03-27

SQL文:Microsoft SQL Server


Microsoft SQL Server の基本的な使い方



 巨大な Books Online をダウンロード、インストし「オフラインのみで使用」に設定して有るにもかかわらず、オンラインでデータを引いてくるのは「なんでやっ!」って、おまけにデラ遅!

 ちゅうことで、自分用の覚書きを作成。

index




Microsoft SQL Server の SQL文の最も簡単な文例の覚書
 SQL Server 2005 Books Online より抜粋引用
 実行環境は、SQL Server Management Studio から Transact-SQL ステートメントを実行。
 SQL Server Management Studio は、Transact-SQL ステートメントを使用しなくとも SQL Server の各操作を容易にするローカルな SQL Server 管理ツール。

 うざい広告に辟易し FireFox 使いたいのに最新にしたらなぜか両袖の白が出なく表示がおかしくなった。CSS 直さんといかんと思いつつ面倒なので見ないふり・・・> 直しました。


※追記
  • ローカル環境 SQL Server 接続時のサーバー名 [ <conputer_name>\SQLEXPLESS ] は、代替として (1)[ .\SQLEXPLESS ] or (2)[ (local)\SQLEXPLESS ] or (3)[ 192.168.1.1\SQLEXPLESS ] or (4)[ localhost\SQLEXPLESS ] でも接続可能なようである。(3) を除いて動作確認済み。
  • SQL 標準の文字列連結子 [ || ], [ concat() 関数 ] は、SQL Server では使えない。[ + ] を接続演算子として使用する。MSDN を見てると Transact-SQL の解説で concat() 関数があるが ・・・ 使い方が標準でないかも?
    ・・・っということで文字列連結については、SQL Server(だけ) は完全に標準外の独自仕様ということが判った。


[ 編集 ] ▲上へ


まとめと補足


 案外情報が少ないのとセットアップが煩雑でうまく動かない場合など問題も覆いが、ここでは使い方のみ。

a-1) データベース作成のまとめ(一括操作)


TestData Object の削除方法までの一連の流れを理解し以下連続操作を実行する。
※削除が適切に行われていないとエラーが多発・・・発生・・・する。

/*
   1) TestData データベース作成とテーブルの作成まで
*/
-- ***** TestData データベースの新規作成
CREATE DATABASE TestData
GO
-- ***** カレントデータベースの移動
USE TestData
GO
-- ***** テーブルの新規作成
CREATE TABLE dbo.Products (
	ProductID		int PRIMARY KEY	NOT NULL,
	ProductName		varchar(25)	NOT NULL,
	Price			money		NULL,
	ProductDescription	text		NULL
)
GO

1) のコードと連続実行したらなぜかエラー。->以下分割実行したところ問題なし。

/*
   2) とデータの連続入力と更新処理
*/
-- ***** 実データの追加
-- 例 (1)
INSERT dbo.Products ( ProductID, ProductName, Price, ProductDescription )
    VALUES ( 1, 'Clamp', 12.48, 'Workbench clamp' )
GO
-- 例 (2)
INSERT dbo.Products ( ProductName, ProductID, Price, ProductDescription )
    VALUES ( 'Screwdriver', 50, 3.17, 'Flat head' )
GO
-- 例 (3)
INSERT dbo.Products
    VALUES ( 75, 'Tire Bar', NULL, 'Tool for changing tires.' )
GO
-- 例 (4)
INSERT Products ( ProductID, ProductName, Price )
    VALUES ( 3000, '3mm Bracket', .52 )
GO
-- ***** データの更新処理
UPDATE dbo.Products
    SET ProductName = 'Flat Head Screwdriver'
    WHERE ProductID = 50
GO

表示実行は、適当にコメント位置をずらしながらすると楽。

 /*
-- 1) Products テーブルのデータの読取表示
SELECT ProductID, ProductName, Price, ProductDescription
    FROM dbo.Products
GO

-- 2) アスタリスク(全称記号?)を使用 
SELECT * FROM Products
GO
*/

-- 3) 表示列を指定・限定する(不要列の非表示) 
SELECT ProductName, Price FROM dbo.Products
GO

/*
-- 4) レコードの絞込み( WHERE 句を使用して id 60 以下に限定 ) 
SELECT ProductID, ProductName, Price, ProductDescription
    FROM  dbo.Products
    WHERE ProductID < 60
GO

-- 5) 演算と演算列の名称指定( ProductName と計算結果 CustomerPays を表示 ) 
SELECT ProductName, Price * 1.07 AS CustomerPays
    FROM dbo.Products
GO

*/


[ 編集 ] ▲上へ


a-2) アクセス権のまとめ(一括操作)


  • 1) Windows の新規アカウント作成(手動)

 %SystemRoot%\system32\compmgmt.msc /s → Mary を作成。
※W2K / XP Pro 以上・・・。念のため確認したら、やはり XP HE じゃ駄目みたい→コンパネから追加すれば同じと思う。

  • 2) ログイン・アクセス権・ビュー・ストアド プロシージャ

 ***** computer_name を各自環境に必ず合わせる(2ヶ所) *****
/*
   TestData のログイン・アクセス権の作成
   ※computer_name = 自PC名へ要置換
*/
CREATE LOGIN [computer_name\Mary]
    FROM WINDOWS
    WITH DEFAULT_DATABASE = [TestData];
GO
-- Mary へアクセス権付与
USE [TestData];
GO
CREATE USER [Mary] FOR LOGIN [computer_name\Mary];
GO
-- ビューの作成と動作確認
CREATE VIEW vw_Names
   AS
   SELECT ProductName, Price FROM Products;
GO
SELECT * FROM vw_Names;
GO

/*
   プロシージャの作成
*/
CREATE PROCEDURE pr_Names @VarPrice money
   AS
   BEGIN
      -- The print statement returns text to the user
      PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
      -- A second statement starts here
      SELECT ProductName, Price FROM vw_Names
            WHERE Price < @varPrice;
   END
GO
/*
    動作チェック
*/
EXECUTE pr_Names 10.00;
GO

  • 3) Mary へストアド・アクセス権付与

/*
   ストアド・アクセス権の付与
*/
GRANT EXECUTE ON pr_Names TO Mary;
GO


[ 編集 ] ▲上へ


a-3) 削除のまとめ(一括操作)


USE TestData;
GO
-- REVOKE ステートメント
REVOKE EXECUTE ON pr_Names FROM Mary;
GO
-- DROP ステートメント
DROP USER Mary;
GO

  ***** computer_name の置き換え必須!(1ヶ所) *****
-- DROP ステートメント
DROP LOGIN [computer_name\Mary];
GO
-- DROP ステートメント
DROP PROC pr_Names;
GO
-- DROP ステートメント
DROP View vw_Names;
GO
-- DELETE ステートメント(実データ削除)
DELETE FROM Products;
GO
-- DROP ステートメント(テーブル削除)
DROP Table Products;
GO
-- TestData データベースの削除
USE MASTER;
GO
DROP DATABASE TestData;
GO


[ 編集 ] ▲上へ


データベース・SQL文・SQLクエリー(query)関連リンク


参考になる書籍など


 ・SQL Server ・データベース・プログラミングASP.NETSQL全般

  • SQL Server 専門・学習・試験対策の良書





wiki内関連ページ



[ 編集 ] ▲上へ
2009年08月21日(金) 19:27:56 Modified by sakura_momo2




スマートフォン版で見る