LIKE述語


用途:特定の文字列が含まれる行を取得する(where句で使用)


■%ワイルドカード
0個以上の文字で構成される文字列にマッチするワイルドカード

製品名(Name)に「Ball」という文字列を含む行と
「LL」という文字列で始まる行を取り出すSQLは以下の通り。

SELECT Product.ID, Name
FROM Production.Product
WHERE Name LIKE '%Ball%' OR Name LIKE 'LL%'

ワイルドカードでは大文字と小文字が区別されることに注意


■_ワイルドカード
任意の一文字を表すワイルドカード

製品名(Name)の最初が「Hex Nut」で、その後に任意の一文字を持つ行を
取り出すSQLは以下の通り。

SELECT ProductID,Name
FROM Production.Product
WHERE Name LIKE 'Hex Nut _'


なお、「_」は複数指定することも可能

「Hex Nut 10」のようにNutの後に任意の2文字が続く製品名を持つことを
条件に指定する場合のSQLは以下の通り。

SELECT ProductID,Name
FROM Production.Product
WHERE Name LIKE 'Hex Nut __'


■%ワイルドカードと_ワイルドカードの組み合わせ
%ワイルドカードと_ワイルドカードは組み合わせることが可能

Productテーブルから、製品名NameがCで始まり
最後の文字の一つ前がcである行を取り出すSQLは以下の通り。

SELECT ProductID,Name
FROM Production.Product
WHERE Name LIKE 'C%c_'

SQL文の種類

DDL(Data Definition Language:データ定義言語)
→データベースやテーブルの作成などを行うために定義されている言語
・CREATE:データベースやテーブルの作成
・ALTER :データベースやテーブルの定義の変更
DROP :データベースやテーブルの削除

DML(Data Manipulation Language:データ操作言語)
→テーブルに格納されるデータを取り扱う言語
・SELECT:テーブルに格納されたデータの取得
・UPDATE:テーブルに格納されたデータの内容の更新
・INSERT:テーブルへのデータ追加
・DELETE:テーブルからのデータ削除

DCL(Data Control Language:データ制御言語)
→データベースの制御やトランザクションの利用を行うために定義されている言語
・COMMIT :トランザクションの確定
・ROLLBACK:トランザクションの取り消し
・GRANT :データ操作権限のユーザーへの付与
・REVOKE :データ操作権限のユーザーからの剥奪

そもそもTSQLとは?

SQLの標準規格は、SQL87やSQL92など
ANSIやISOなどで標準規格が策定されている。

しかし、各種のRDBMSでは独自の拡張が行われており
マイクロソフトでは、この標準規格をSQL Server向けに拡張して
「Transact SQL」という言語仕様としてまとめている。

ゆえにSQL Serverでは、標準規格に則ったSQL
SQL Server専用のSQLが混在していることになる。

BULK_INSERTでテーブルにCSVファイルからデータインポート

BULK_INSERTで少し詰まったのでメモ

まず、サンプルテーブルの作成

CREATE TABLE dbo.MyFirstImport (
   PersonID  smallint,
   FirstName varchar(30),
   LastName  varchar(30),
   BirthDate Date
   );

最初次のやり方でトライしたところインポートできませんでした。

BULK INSERT Sales.dbo.MyFirstImport
FROM 'C:\Users\hoge\Documents\sample_01.csv'
WITH (FORMAT = 'CSV');

下のやり方ならインポートできました。

BULK INSERT Sales.dbo.MyFirstImport
FROM 'C:\Users\hoge\Documents\sample_01.csv'
WITH( FIELDTERMINATOR = ',' );

あとchar,varchar型のデータの場合、データにシングルクォーテーションで加工必要がありました。

以下のサイトを参考にさせていただきました。
http://sql55.com/query/bulk-insert.php

以上。

T-SQLで、カーソルSELECT、フェッチからのループ

■処理概要
従業員データが格納されたEmployeeテーブルを使って
パラメーターとして渡されたマネージャーコード(@MngID)に関連付けられた
従業員とその職種の一覧を出力する

※データは、AdventureWorks2014を使用

CREATE procedure uspSample5 @MngID int AS

/* 変数リストの宣言 */
DECLARE @FirstName nvarchar(50)
DECLARE @LastName  nvarchar(50)
DECLARE @Title     nvarchar(50)

/* カーソルの宣言 */
DECLARE EmpCur CURSOR FOR
SELECT cnt.FirstName,cnt.LastName,emp.JobTitle
    FROM HumanResources.Employee AS emp INNER JOIN Person.Person AS cnt
    ON emp.BusinessEntityID = cnt.BusinessEntityID WHERE emp.OrganizationLevel = @MngID

/* カーソルを開く */
OPEN EmpCur

/* 行の取り出し */
FETCH NEXT FROM EmpCur INTO @FirstName,@LastName,@Title

/* ループ処理 */
WHILE (@@FETCH_STATUS = 0)
BEGIN
    /* 変数リストの値の出力 */
    PRINT @FirstName + ' ' + @LastName + ' ' + @Title
    /* 行の取り出し */
    FETCH NEXT FROM EmpCur INTO @FirstName,@LastName,@Title
END

/* カーソルを閉じる */
CLOSE EmpCur
DEALLOCATE EmpCur

RETURN

以上。

Unityチュートリアル①

 

最近Unityを独学してるんで備忘録代わりに記事を作成しておく。

 

Unityのオフィシャルサイトのチュートリアルで学習中

http://japan.unity3d.com/developer/document/tutorial/my-first-unity/

 

f:id:Long_River:20140731004413j:plain

--

ここではUnityのインターフェースについて説明します。

インターフェース

・概要

主要なビューは赤枠で囲まれた4つです。

f:id:Long_River:20140731004523j:plain

 

シーン(真ん中)

f:id:Long_River:20140731004830j:plain

シーンとは、ゲームのレベルやUIを含むもので、「画面」(=ステージ)それぞれのことです。
「メニュー画面」や「ゲームオーバー画面」などはそれぞれシーンを切り替えて作ります。  

 

ヒエラルキー(左)

ヒエラルキービューには、現在のシーンで使用しているゲームオブジェクト(シーン内に配置される全てのオブジェクトを指す)が全て格納 してあります。

f:id:Long_River:20140731004929j:plain

 

インスペクター(右)

インスペクタービューは、その時点で選択されているゲームオブジェクトの詳細情報と、それに関連付いているコンポーネントとそのプロパティを表示する。

ここで各ゲームオブジェクトの位置、動作、大きさ等を設定する。

f:id:Long_River:20140731005006j:plain

 

プロジェクトビュー

ゲームで使用するすべてのアセット(JS、音楽ファイル等)の管理 を行います。

f:id:Long_River:20140731005035j:plain

--

とりあえず今日はここまで。

netstatコマンド

2台のサーバー間でアプリケーションが通信を行っている際に、

どのポートが使われているか確認する必要があり、

netstatコマンドを使用しました。

 

基本はこれでOK

# netstat

 

使用したオプション

-a   接続と待ち受けをしているすべてのポート

-n   実行結果にコンピュータ名やプロトコル名を使用せず、数値で表示してくれる

-p   プロトコル名を表示してくれる(TCP、ICMPなど)

 

# netstat -anp

 

ただし、これだと出力される結果が多すぎるので、State(ステータス)やポート番号等、絞り込みたい条件でgrepしましょう。

 

接続中の情報を表示

# netstat -anp | grep "ESTABLISHED"

 

こんな感じです。