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