• 検索結果がありません。

DML = Data Manipulation Language Select, Insert, Update, Delete DDL = Data Definition Language

Create, Alter, Drop DCL = Data Contorol Language

Grant, Revoke, Commit, Rollback SQL-99, SQL-2003 は製品により異なる

2015/11/1

Null の大きさ

SQL Server では Null = 最少値, Oracleでは 最大値

Order By 数値

Select * From T1 Order By 1 Asc

数値はセレクト抽出時の列順番

IsNull = NVL(Oracle) = Nz(Acess)

Having は集計を行った結果に対する絞込み

Select 部門番号, Count(*) From emp Having Count(*) >= 5

Option(Force Order)

Select * From T1 Option(Force Order)

With Rollup

SELECT YEAR(受注日), 区分名, SUM(受注明細.単価 * 数量) FROM 受注明細

INNER JOIN 受注

ON 受注明細.受注コード = 受注.受注コード INNER JOIN 商品

ON 受注明細.商品コード = 商品.商品コード INNER JOIN 商品区分

ON 商品.区分コード = 商品区分.区分コード GROUP BY YEAR(受注日), 区分名

WITH ROLLUP

ORDER BY YEAR(受注日), 区分名

With Rollup ⇒ With Cube Select A, B, C Sum(n) From t

Group By Grouping Sets ( (A, B, C)

, (A, B) , (A, C) , (B, C)

, (A) ) Grouping Sets 関数は2008 から

2015/11/1

Pivot

2005から、 Pivot は演算子

データ移動

bcp Test1.dbo.Tbl In

"C:\Users\Takehiro Yamada\Desktop\t.txt"

/S TAKEHIRO\SQLEXPRESS /T /c /t ","

└ スペース含むパスはパス全体をWクォートでくくる

└ 文字列はWクォートでくくらない 。くくるとWクォートごとデータ移動

既存列 デフォルト設定

Alter Table Tbl Add Default (100) For [F2int]

Go

バッチ区切りの終了

Declare変数はバッチの間のみ有効 Declare @x Int = 20 , @y Int = 30

Select Cast(@x As VarChar(100)) + '①' Go

Select Cast(@x As VarChar(100)) + '②' ←無効、エラー

Where中 Collate

Select * From emp

Where empname Like '%ユカリ%' Collate Japanese_CI_AS Select * From emp

Where empname Like '%ユカリ%' Collate Japanese_CS_AS_KS_WS

ビューに対して、UPDATE や INSERT、DELETE など、更新系のステートメントを実行することも 可能です。ただし、ビュー内で GROUP BY や集計関数、DISTINCT 処理を行っていたり、演算 結果を行っている列に対しては、更新系のステートメントを実行することはできません。

2015/11/1

Exists

If Exists(Select * From emp)

Print 'データ有り' ← Begin, End 省略タイプ

【Where中】

If Exists(

Select * From emp Where empno = 1 )

Begin

Print 'データ有り' End

Else Begin

Print 'データ無し' End

Print '処理終了'

照合順序一覧表示

SELECT * FROM fn_helpcollations() WHERE name LIKE '%japan%'

Access倍精度 = Float

サポート開始年度

2012 EOMonth IIF ⇒Oracle での DECODE

DateFromParts Choose Format

2005 CTE

 ⇒ 関数Oracle比較 = TransactSQL入門100page

グラフィカル実行時プラン表示

Table Scan = 全件検索 クエリデザイナ右クリック

実際の実行プランを含める

2015/11/1

インデックス作成(非クラスター)

Create Index index_姓 On 社員(姓)

RID = Row ID = 行識別子

インデックス削除

Drop Index 社員.index_姓 or

Drop Index index_姓 On 社員

インデックスの無効化と復元

Alter Index index_姓 On 社員 DisAble Alter Index index_姓 On 社員 ReBuild

データベースの内部構造

2015/11/1

ページとヒープ

データファイルは内部的に8kbのページに区切り ページ = ディスク入出力の単位

800バイトテーブル ⇒ 1ページに10行分格納可能 ページ前提 = ヒープ

インデックス自体もデータファイルへ内部的には格納 ルートノード = ルートページ

中間ノード = 中間ページ リーフノード = リーフページ

データファイル内の連続した8ページ = エクステント ⇒ テーブルやインデックス   に割り当てられる領域

クエリが読み取ったページ数確認

Set Statistics IO On Set Statistics IO OFF

└ OFF にするか接続を切るまで有効

【27から】

2015/11/1

ゲージ名称

テーブル・クエリのテキスト出力(SQL Server以外)

SQL = "Select * Into [Test.txt] In '" & Str & "' 'Text;' From [Sheet1$];"

空間クエリ

平面

geom geometry

geometry::STGeomFromText('POINT(3 4)', 0)

geometry::STGeomFromText('POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))', 0)

2点間距離

DECLARE @g1 geometry;

DECLARE @g2 geometry;

SET @g1 = geometry::STGeomFromText('POINT(0 0)', 0);

SET @g2 = geometry::STGeomFromText('POINT(3 4)', 0);

SELECT @g1.STDistance(@g2);

面積

SET @g = geometry::STGeomFromText('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))', 0);

SELECT @g.STArea()

【立体】Geog

DECLARE @g1 geography

SELECT @g1 = geog FROM 郵便局 WHERE id = 1

SELECT * FROM 郵便局 WHERE @g1.STDistance(geog) < 2000 AND id <> 1

空間クエリ, GeoG Insert Intoの中

大文字小文字区分有り! ⇒ STGeogFrom~

('東京都中野区', Geography::STGeomFromText('POINT(139.663835 35.707398)', 4612),

2015/11/1

不一致クエリ

Select * From A Where Not Exists(

Select * From B Where A.企業ID = B.企業ID)

Select A.* From A Left Join B On A.企業ID = B.企業ID Where B.企業ID Is Null

Select * From A Except Select * From B

トリガー

Create Trigger Test_main_insert On Test_main_table For Iinsert

As

Insert Into Test_sub_table

( No, Name, Trigger_kind, Trigger_date )

Select No, Name, 1, Getdate() From Inserted Go

Insert Into Test_main_table Values(100, 'Name1') Insert Inserted

Update Inserted Delete Deleted

FOR INSERT, UPDATE, DELETE の書き方も可能

権限まとめ

①接続認証 Create Login aaa With Password = 'aaa'

②データベース接続

(テーブルでない方の大元)セキュリティ ⇒ ログイン ⇒ aaa ⇒ Ddouble Click ⇒ ユーザーマッピング ⇒ 接続先データベース名をチェック選択

↓ 上記手順終了後、下記が可能

Grant Connect To aaa Revoke Connect From aaa

③オブジェクト操作

Grant Select On emp To aaa

2015/11/1

表挿入

書式選択(通貨)

行高・列幅調整 Tablixコピー Excelエクスポート サーバへのアップ page76 グラフ一覧

86 グラフ列系追加

セカンダリ設定

92 セカンダリ凡例設定

横・縦軸タイトルの表示と非表示

8

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

2015/11/1

関連したドキュメント