1.Transact-SQL
SQLはANSIによって規格が定められた標準のデータベース言語であり、最新の規格はANSI SQL-92であり、Transact-SQLはSQL Serverで使用するSQL言語です。
(1)Transact-SQLの分類
データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つに分類され、Transact-SQLの命令のことをステートメント(問合せ、クエリ)と呼びます。
DDL:create,alter,drop
DML:Select,Insert,Update,Delete
DCL:Grant,Revoke,Deny
(2)Transact-SQLの処理の流れ
ステップ1.解析
発行されたクエリがTransact-SQLの構文規則に照らして正しいかどうかチェックされる
ステップ2.標準化
クエリの中から冗長な部分が探されそれを排除することでクエリを効率的に処理しやすい形に変換する。
ステップ3.最適化
クエリの評価が行われ、その結果をもとに最も効率的な実行の方法がどのようなものかが判断される。
ステップ4.コンパイル
クエリが人間に読める形式のものからコンピュータに読める形式のものに変換される。
ステップ5.実行
コンパイルによってできた実行コードが実行される。
(3)データ型とは
データベースに格納されるデータにはさまざまな種類があり、その種類のことをデータ型と呼びます。
① int:正または負の整数
②decimal:固定小数点数
③numeric:decimalと同じ
④float:浮動小数点数
⑤money:金額
⑥datetime:日付と時刻
⑦char:固定長の文字列
⑧varchar:可変長の文字列
⑨text:固定長の文字列
⑩binary:バイナリデータ
⑪image:画像データ
2.データの抽出
(1)Selectステートメント
Select <列名> FROM <テーブル名> WHERE <検索条件>、複数の列を指定する際には列名と列名の間を,で区切ります。
(2)複数の列が検索対象になる場合
検索対象が複数になる場合は<*>の記号を使用します。
SELECT * FROM 社員データ WHERE 社員番号=001
(3)比較演算子
比較演算子には次の記号を使用します。
①= 等しい
②> 大きい
③< 小さい
④>= 以上
⑤<= 以下
⑥< > IWOjD
(4)ワイルドカード文字
あいまい検索をする場合、ワイルドカード文字を使用します。
Where句の検索条件の指定にはワイルドカード文字を使用することもできます。%,-,[],[^]
①select * from 社員データ where 社員名 Like ‘赤%’
この場合は社員データテーブルの中の赤で始まる社員の行を抽出します。
②Select * from 社員データ where 社員名 Like ‘赤-‘
社員データテーブルのすべての列殻社員名が赤から始まる2文字になっている行を抽出します。
③Select * from 社員データ where 社員名 like ‘赤[坂羽尾]’
社員データテーブルの全ての列から社員名が赤で始まる2文字目が坂、羽、尾になっている行を抽出します。
④Select * FROM 社員データ where 社員名 Like ‘赤[^尾]’
この場合は2文字目が尾でない行を抽出します。
(5)論理演算子
論理演算子には AND,OR,NOTなどがあります。
①* Select * from 社員データ Where 社員名 Like ‘赤[^尾]’ AND 社員番号 >001
②* Select * from 社員データ where 社員名 like ‘赤[^尾]’ OR 社員番号 >001 AND 給与 >=200000
③* Select * from 社員データ where (社員名 like ‘赤[^尾]’ OR 社員番号 > 001) AND (給与 >=200000)
(6)算術演算子
算術演算子は+,-,*,/,%があります。
(7)BETWEEN演算子
①Select * from 社員データ where 社員番号 Between 001 and 003
Between演算子を使用した場合も比較演算子を使用した場合もコンピュータ内部での処理やステートメントの実行速度に違いはありません。
(8)IN演算子
IN演算子はSELECTステートメントの中でIN演算子の後に続くデータから選択し抽出する場合に使用します。
①Select * from 社員データ Where 社員名 IN(“田中’,’鈴木’,’佐藤’)
OR演算子を使用すると次のように書き換えられます。
②Select * from 社員データ where 社員名 =’田中’ or 社員名 =’鈴木’ or 社員名=’佐藤’
(9)NULL
データベースのデータ欠落のことをNULLといい、データベースからNULLの部分を検索するにはIS NULL演算子と呼ばれる演算子を使用します。
①Select * from 社員データ Where 電話番号 IS NULL
逆にNULLになっていない行を抽出するにはIS NOT NULL 演算子と呼ばれる演算子
②Select * from 社員データ where 電話番号 IS NOT NULL
(10)ORDER BY句
ORDER BY をSelectステートメントに入れると行を昇順にソートすることができます。
①Select * from 社員データ where 社員番号 >=001 order by 社員番号 ASC
ソートを昇順から降順にする場合はDESCを使用します。
②Select * from 社員データ where 社員番号 >=001 order by 社員番号 DESC
(11)Distinct
Selectステートメントによっては処理結果(導出テーブル)に重複する行ができてしまうがSelectステートメントにDistinctを使用すれば解消できます。
この場合は社員データテーブルから社員番号001以上のデータを重複しないで抽出します。
①Select DISTINCT * from 社員データ Where 社員番号 >=001
(12)列名の変更
①列名変更、ASの使用
Select 社員番号 AS 社員ID FROM 社員データ
社員番号を社員IDとして抽出します。
②スペースを使用する場合
Select 社員番号 社員ID FROM 社員データ
③=を使用
Select 社員番号 = 社員ID FROM 社員データ
(13)集計関数
集計関数は次の関数があります。
①AVG:平均値を求める
②Count:行数を求める
③MAX:最大値を求める
④MIN:最小値を求める
⑤SUM:合計値を求める
集計関数を使用した例は次の通りです。
①AVG関数の例
Select AVG(給与) AS ‘給与の平均値’ FROM 社員データ
社員データテーブルから給与平均値として給与の平気を抽出します。
②COUNT関数の例
Select count(社員名) AS ‘社員名’ FROM 社員データ
③SUM関数の例
Select SUM(給与) AS ‘給与の合計値’FROM 社員データ
社員データテーブルの給与例のデータの合計値を求めるステートメントです。
(14)GROUP BY句
テーブルの行を特定の列のデータを基準にしてグループに分けます。この関数を使用した場合はグループごとに合計値、平均値、最大値を求めることができます。
①Select 部署コード,SUM(給与) AS ‘部署ごとの給与の合計値’ FROM 社員データ GROUP BY 部署コード
社員データテーブルの給与列のデータの合計値が表示される列には部署ごとの給与の合計値という名前で抽出します。
(15)HAVAING句
HAVING区は集計関数とGROUP BY句で求めたグループごとの合計値や平均値から特定の条件を満たすものだけを抽出するための句です。
①Select 部署コード,AVG(給与) AS ‘部署ごとの給与の平均値’ FROM 社員データ GROUP BY 部署コード HAVING AVG(給与) >=200000
この場合は社員データテーブルの給与列のデータの平均値を部署別に求めさらにその中から20万以上になっているものを抽出します。
3.副問合せ
Selectステートメントの中にSELECTステートメントを更に埋め込むことを副問合せと呼ぶ。この場合は副問合せから実行しその処理結果を利用して外側のステートメントが実行されます。
副問合せをサブクエリと呼びます。ただしSQL Serverでは副問合せの中にさらに副問合せを埋め込むことは原則として認められていません。
■使用例
この場合は商品データテーブルから単価を平均価格とし、その平均価格以上の単価の商品名、単価、平均価格を抽出します。
Select 商品名,単価,(Select AVG(単価) FROM 商品データ) AS 平均価格 FROM 商品データ WHERE 単価>=(SELECT AVG(単価) FROM 商品データ)
4.相関副問合せ
外側のSELECTステートメントで選択された行1つ1つにつき1回ずつ実行される副問合せです。相関副問合せの処理は次の手順で進みます。
手順1.外側のSELECTステートメントで選択されたデータのうち1行目が内側のステート面とに渡されます
手順2.渡されたデータに対して内側のSELECTステートメントが実行され、その事項結果が外側のSELECTステートメントに渡されます。
手順3.外側のSELECTステートメントが渡された実行結果のうち条件に合うものだけを導出テーブルに組み込みます。
手順4.外側のSELECTステートメントで選択されたデータがなくなるまで1-3の処理が繰り返されます。
■使用例
Select 商品コード.売上金額 FROM 商品データ AS P1 WHERE P1.売上金額 <= (SELECT AVG (P2.売上金額) FROM 商品データ AS P2 WHERE P2.商品コード AS P2 WHERE P2.商品コード=P1.商品コード)
このステートメントを実行すると売上金額が全商品の平均値以下になっている商品が検索され、その商品コードと売上金額を格納した導出テーブルが作成されます。A.Bというようにピリオドで区切られているステートメントでは左側にあるAはテーブル名をを示し、右側になるBはそのテーブルAの列名を示します。
5.EXISTSキーワード
EXISTSキーワードは相関副問合せに使用するもので、特定の条件を満たす行がテーブル中に存在するか否かを外側の問合せに知らせるサブクエリを作成するためのキーワードです。
Select 社員番号,社員名 FROM 社員データ AS s WHERE EXISTS(Select * from 誕生日データ as b where s.社員番号=b.社員番号 and b.生年月日 =’66/5/26’)
このステートメントを実行すると生年月日が66/5/26である社員があるか検索され該当する社員がいればその社員の社員番号と名前を格納した導出テーブルが作成されます。
①共通集合演算と差集合演算
差集合演算はNOT EXISTSキーワードを使用し、テーブルA,Bについて共通集合演算を行うステートメントです
Select * from A where EXISTS (Select * from B where<Aの主キー>=<Bの主キー>)
差集合を行うステートメントは次の通りです。
Select * from A where NOT EXISTS (Select * from B where <Aの主キー>=<Bの主キー>)
6.テーブルの結合
同時に複数のテーブルを対象として検索を行わねばならない為、テーブルの結合を行う場合があります。
(1)内部結合
結合の対象となるテーブルの間で共通の列を比較し同じデータをもつ行だけを抽出します。通常結合とは基本内部結合を指します。内部結合を行う場合はFROM句でINNER JOINを使用します。
■構文 Select 社員データ.*,部署コードと部署名.* FROM 社員データ INNER JOIN 部署コードと部署名 ON 社員データ.部署コード=部署コードと部署名.部署コード
■直積集合演算
テーブルA,Bの間で直積集合演算を行うステートメントです
SELECT A.*,B.*FROM A INNER JOIN B
(2)外部結合
内部結合に対し共通する列のデータが結合するテーブルの間で一致していない行も残すという場合は、外部結合と呼びます。外部結合には左外部結合と右外部結合という二つの種類があります。
左外部結合はテーブルAについてはすべての行を残し、テーブルBについてはテーブルAと共通する列のデータが一致しているものだけを残し、右外部結合はテーブルBについてはすべての行を残し、テーブルAについてはテーブルBと共通する列のデータが一致しているものだけを残します。
(3)左外部結合
Select 社員データ.*,部署コードと部署名.* FROM 社員データ LEFT OUTER JOIN 部署コードと部署名 ON 社員データ.部署コード=部署コードと部署名.部署コード
(4)右外部結合例
Select 社員データ.*,部署コードと部署名.* FROM 社員データ RIGHT OUTER JOIN 部署コードと部署名 ON 社員データ.部署コード = 部署コードと部署名.部署コード
7.結果の結合
これにはUNIONという演算子を使用しUNION演算子を使用します。
■構文
Select ステートメント UNION Select ステートメント
■例 Select 商品コード,売上金額 From 1月の売上データ UNION Select 商品コード,売上金額 FROM 2月の売上データ
このステートメントは1月の売上データテーブルの商品コードの列、売上金額列を2月の売上データテーブルの商品コード列、売上金額列を結合させます。
UNION演算子を使用した処理は和集合と同じものになります。
8.データ更新
(1)INSERT
INSERTステートメントはテーブルに新しい行を一つ追加するステートメントです。
■構文 INSERT <テーブル名><列名> VALUES <追加するデータ>
■例 INSERT 社員データ(社員番号,社員名) VALUES (005,’小田’)
(2)UPDATEステートメント
■構文 UPDATE<テーブル名> SET<列名> =<更新後のデータ> where <更新対象となる行を限定する条件>
■例 UPDATE 社員データ SET 社員名=’渡部村子’ Where 社員番号=005
更新対象となる行を限定する条件の指定によっては一度に複数の行を更新対象にできます。
(3)DELETEステートメント
テーブルの既存の行を削除するというステートメントです。
■構文 DELETE <テーブル名> where <削除する行を限定する条件>
■例 DELETE 社員データ WHERE 社員番号=005
(4)SELECT INTOステートメント
SELECT INTOステートメントは既存テーブルからデータを取り出して新しいテーブルに格納するというステートメントです。
■構文 SELECT <列名> INTO <新規のテーブル名> FROM <既存テーブル名> where <検索条件>
■ローカル一時テーブル、グローバル一時テーブル
ローカル一時テーブルはそのテーブルを作成したセッションでのみ使用できる一時テーブルのこと、グローバル一時テーブルはそのテーブルを作成した以外のセッションでも使用できる一時テーブルです。ローカル一時テーブルはテーブルの前に#を付加し、グローバル一時テーブルはテーブル前に##を付加します。
■例 Select * INTO #社員データ004以降 FROM 社員データ WHERE 社員番号 >=004
(5)INSERT INTOステートメント
■構文 SELECT INTO <テーブル名><Selectステートメント>
■例 INSERT INTO 社員データ2 SELECT * FROM 社員データ
社員データテーブルの中のすべての列からデータを抽出し、社員データ2テーブルに格納せよというステートメントです。
9.データベース定義
(1)データベースの作成
データベースを新規に作成するにはCREATE DATABASEステートメントを使用します。SQL ServerではCreate Databaseによりデータファイルとログファイルを作成するステートメントです。
■構文
Create DATABASE <データベース名> ON (NAME =<論理ファイル名>,FILENAME=’<物理ファイル名>’,SIZE=<初期サイズ>,MAXSIZE=<最大サイズ>,FILEGROWTH=<増分値>) LOG ON (NAME=<論理ファイル名>,FILE NAME=’<物理ファイル名>’,SIZE=<初期サイズ>,MAXSIZE=<最大サイズ>,FILEGROWTH=<増分値>)
①<データベース名>
作成するデータベースの名前を指定します。
②<論理ファイル名>
データファイル、ログファイルの論理名を指定する。論理名とはSQL言語でそのファイルを扱う際に使用するファイル名である。
③<物理ファイル名>
データファイル、ログファイルの物理名を指定する。物理名とはWindows上でエクスプローラなどを使って普通にファイルを扱う際に使用するファイル名
④<初期サイズ>
データファイルとログファイルの初期サイズを指定する。
⑤<最大サイズ>
データファイルとログファイルを最大でどのくらいの大きさまで拡張できるかを指定する。
⑥<増分値>の部分
データファイル、ログファイルを拡張する際、どのくらいの単位で拡張するかを指定する。
■CREATE DATABASE使用例
CREATE DATABASE Sample ON(NAME=Datafile,FILENAME=’c:\ProgramFiles\data\sampledata.mdf,Size=5MB,MAXSIZE=5MB,FILEGROWTH=1MB)
LOG ON (NAME=Logfile,FILE NAME=’c:\Program FILES\DATA\LogSample.ldf’,SIZE=1MB,MAXSIZE=5MB,FILEGROWTH=1MB)
10.データベース拡張
データベースのデータファイルやログファイルの拡張が必要になる場合はALTER DATABASEステートメントを使用します。データベースのサイズ拡張には次の3つの方法があります。
①データファイル、ログファイルが自動的に拡張されるように設定
②データファイルやログファイルのサイズを手作業で変更
③手作業でデータファイル、ログファイルを新たに追加する
■使用例
ALTER DATABASE Sample ADD FILE(NAME=Datafile2,Filename=’c:\ProgramFiles\Data\SampleData2.ndf’,Size=5MB,MAXSIZE=20MB)
ALTER DATABASE Sample MODIFY FILE(NAME =Logfile, SIZE=2MB)
11.テーブルの作成と削除
テーブルの作成にはCREATE TABLEステートメントを使用します。
■構文 CREATE TABLE <テーブル名>(<列名><データ型> NULL|NOT NULL)
NULL|NOT NULLについては列にNULLを入れるかどうかを指定します。
■使用例 Create table 社員データ(社員番号 int NOT NULL,社員名 varchar(20) NOT NULL,給与 money NULL
このステートメントは社員データという名前のテーブルが作成され、このテーブルにはNULLが許可されない社員番号(整数)、NULLが許可されない社員名(文字データ)NULLが許可される給与の列ができます。テーブルの削除にはDROP TABLEステートメントが使用されます。
■構文 DROP TABLE<テーブル名>
12.ビューの作成
ビューは使用頻度の高い検索(SELECTステートメント)の内容をデータベースにあらかじめ記憶させておくものであるが、検索を行うことによってその結果によってテーブルが作成されるのでデータが保存されていない仮想的なテーブルと見ることができます。ビューの作成にはCREATE VIEWステートメントというステートメントを使用します。
■構文 CREATE VIEW <ビュー名> AS <SELECTステートメント>
■使用例 Create View 給与20万以上の社員リスト AS Select * FROM 社員データ Where 給与 >=200000
■ビュー使用のメリット
①ユーザーに必要なデータだけを集めることができる。
②複雑なデータベース、テーブルを用意に使用できるものにする。
③不適切なユーザーにテーブルの使用権限を与えずにすむ。
13.整合性制約の定義
データベースのデータは一環していて矛盾がなく、正確なものである必要がある。それを整合性と呼ばれるが、整合性には3つの種類があります。
①ドメイン整合性
ドメイン整合性とは列のデータが一定の条件に適合したものであること
②実態整合性
テーブルのデータに重複がないことを意味する。
③参照性合成
外部キーと参照先の列のデータに矛盾がないことを意味する。
(1)ドメイン整合性
ドメイン整合性を維持するには、DEFAULT制約、CHECK制約を定義します。
①Default制約
DEFAULT制約とはINSERTステートメントの列の規定値を指定する為のルールです。INSERTステートメントが列にどのようなデータを入れるかを指定しなかった場合、自動的に列に入力されるデータのことです。
■DEFAULT制約構文例
CONSTRAINT <制約名> DEFAULT <規定値>
<制約名>:制約の名前を指定する
<規定値>:規定値を指定する
DEFAULT制約の制約名の先頭には通常DFをつけます。
■使用例
ALTER Table 社員データ ADD CONSTRAINT DF_depcode DEFAULT 001 FOR 部署コード
社員データテーブルの部署コードの列の規定値を001にするDF_depcodeという名前のDEFAULT制約の名前です。
(2)CHECK制約
■CHECK制約
CHECK制約はテーブルの列に入力する値に制限をかけ、規定外のデータがテーブルに入力されることがなくなります。
■CHECK制約構文 Constraint <制約名> CHECK(<条件式>)
CHECK制約の制約名の先頭には通常CK_をつけます。
■使用例
ALTER TABLE 社員データ ADD CONSTRAINT CK_pay CHECK(給与>=200000)
このステートメントは社員データテーブルの給与列のデータを20万以上に制限します。
(3)実態の整合性
実態の整合性を維持するにはPRIMARY KEY制約、UNIQUE制約を定義します。PRIMARY KEYの制約は次の通りです。この制約はテーブルの主キーを制約するためのもの。以下の3点に注意します。
①主キーは各テーブルに一つだけ指定することができる
②主キーとなった列ではNULLは許可されない
③主キーとなった列に関してはインデックスが自動的に作成される。このインデックスはデータ重複が排除される。
■PRIMARY KEY制約構文例
CONSTRAINT <制約名> PRIMARY KEY CLUSTERED | NONCLUSTERED(<列名>)
CLUSTERD|NONCLUSTEREDは自動的に作成されるインデックス種類の選択であり、CLUSTEREDはクラスタ化インデックス
NONCLUSTEREDは非クラスタ化インデックスが作成されます。PRIMARY KEY制約の制約名先頭には通常PK_をつけます。
■PRIMARY KEY使用例
ALTER TABLE 社員データ ADD CONSTRAINT PK_empid PRIMARY KEY CLUSTERED(社員番号)
社員データテーブルの社員番号列を主キーとするステートメントであります。
(4)UNIQUE制約
主キー以外の列に関してデータ重複を排除するためのものであり、この制約を定義した例ではデータ重複ができません。UNIQUE制約を定義する際は次の点に注意します。
①各テーブルには複数定義できる
②NULLは列につき一つだけ許可される。
③UNIQUE制約を定義した列に関してはインデックスが自動的に作成される。このインデックスではデータ重複が排除される
■UNIQUE制約構文例
CONSTRAINT <制約名> UNIQUE CLUSTERED|NONCLUSTERED(<列名>)
UNIQUE制約の制約名の先頭には通常UK_をつける。
■使用例
ALTER TABLE 社員データ ADD CONSTRAINT UK_depcode UNIQUE ClUSTERED(部署コード)
社員データテーブルの部署コード列からデータの重複を排除するステートメント
(5)参照整合性
①FOREIGN KEY
参照整合性を維持するにはFOREIGN KEY制約を定義します。
■構文例
CONSTRAINT <制約名>FOREIGN KEY(<制約>)REFERENCES <テーブル名>(<列名>)
FOREIGN KEY制約の制約名の先頭には通常FK_をつけます
■使用例
ALTER TABLE 部署データ ADD CONSTRAINT FK_empid FOREIGN KEY(社員番号) REFERENCES 社員データ(社員番号)
この場合は部署データテーブルの社員番号の列を外部キーとするステートメントである、参照先となるのは社員データテーブルの社員番号列です。
②CASCADE/NOACTION
その他CASCADE、NOACTIONといったオプションを指定することもできます。
CASCADEオプションを指定すると連鎖参照整合性と呼ばれる整合性が維持されるようになります。これは参照先の列のデータが変更・削除されるとそれにともなって外部キーでもデータが変更・削除が行われます。NOACTIONオプションは参照先の列でデータの削除、更新ができなくなります。
■構文例
CONSTRAINT <制約名> FOREIGN KEY (<列名>) REFERENCES <テーブル名>(<列名>)ON DELEATE CASCADE|ON UPDATE CASCADE
CONSTRAINT <制約名> FOREIGN KEY (<列名>) REFERENCES <テーブル名>(<列名>)ON DELEATE NOACTION | ON UPDATE NOACTION
尚、ON DELEATE NOACTION、ON UPDATE NOACTION は規定値なので何も指定しないと自動的にこのオプションは有効です。
14.問合せの最適化
SQLServerにはクエリオプティマイザと呼ばれる機能があり、これによって問合せの処理が最適化されます。最適化とは処理のために必要となるコンピュータ資源をできる限り減らし、処理速度を向上させることができます。
(1)最適化手順
SQLステートメントの評価を行い、その結果をもとに最適な実行方法(実行プラン)がどのようなものかを判断します。SQLステートメントの評価としては次の方法があります。
[SQLステートメント評価]
①問合せ対象となるテーブルについてインデックス有無を調べる。インデックスがあればそれが問合せ効率化にどの程度役に立つか調べる
②問合せでテーブルを結合する場合は最も効率的な結合の順序や結合方法を判断する。
③実行プランを立てその中でページの入出力、CPU使用率が最も低いと思われるものを選択する。
[コストページ最適化]
ページI/O,CPU使用率をまとめてコストと呼びます。クエリオプティマイザはコストが最も低い実行プランを選択するが、この最適化の方法をコストベースの最適化と呼びます。
(2)結合最適化
クエリオプティマイザには問合せ中に結合演算が含まれています。選択肢となる結合方法は、ネスト化ループ結合、マージ結合、ハッシュ結合の三種類があります。
①ネスト化ループ結合
結合する二つのテーブルのうち一方が外部テーブル、もう一方を内部テーブルとし、外部テーブルから一行選択されその行と結合できる行が内部テーブルのすべての行の中から検索される。
結合対象となるデータが比較的少ない場合に有効である。
②マージ結合
二つのテーブルからそれぞれ1行が選択され、比較される。両者が一致しなければ小さいほうのデータが破棄されそのデータが属するテーブルから次の行のデータが取り出され、再度比較される。
マージ結合はテーブルのデータがあらかじめソートされている場合に有効な方法である。
③ハッシュ結合
基準となるハッシュキーとする列とし、ハッシュテーブルで一致したものは結合作成されるテーブルに組み込まれる。
ハッシュ結合はテーブルにインデックスがない場合や、インデックスがあってもあまり役立たない場合に有効である。
15.まとめ
(1)ANSI SQL-92とは
1992年に制定されたSQL言語
(2)データ定義言語(Data Definition Language)とは
データベースのオブジェクトを作成する、オブジェクトに関する設定を変更する、オブジェクトを削除するなどの用途に使用される言語
(3)データ操作言語(Data Manipulation Language)とは
データベースの検索、データの追加、更新、削除などの用途に使用される言語
(4)データ制御言語(Data Control Language)とは
データベースオブジェクトに対する権限の制御に使用される言語
(5)データ型とは
データベースに格納されるデータの種類であり、主なところはINT,maney,charなどがある。
(6)比較演算子とは
比較演算子はWhere句で使用される演算子であり、=,>,<,>=,<=,<>がある。
(7)ワイルドカード
Where句の検索条件の指定で文字列の代わりに使用できる文字でありワイルドカード文字と呼ぶ。
%,-,[],[^]がある、
(8)論理演算子
Where句の検索条件に条件を指定する場合に使用する。演算子にはAND,OR,NOTがある。
(9)算術演算子
数値に関して加減乗除などの算術演算を行うことが可能である。算術演算子は加算+,減算-,乗算*,除算/,剰余%とある。
(10)集計関数
集計関数とはデータベースのデータについて、平均値、最大値、最小値、合計値などを求めるための関数の総称。
AVG:平均値
COUNT:行数を求める
MAX:最大値を求める
MIN:最小値を求める
SUM:合計値を求める
(11)副問合せ
Selectステートメントの中にSELECTステートメントを埋め込むことができ、それを副問合せと呼ぶ。
(12)相関副問合せ
相関副問合せとは外側のSelectステートメントで選択された行1つ1つにつき1回ずつ実行される副問合せである。
(13)結合
同時に複数のテーブルを対象として複数のテーブルを組み合わせて新たな一つのテーブルを作成する。
(14)UNION演算子
複数のSELECTステートメントの実行結果を結合するもの。
SELECT ステートメントUNION SELECT ステートメントで結合する。
(15)整合性
データベースのデータが一貫していて矛盾がなく、正確なものであること。
(16)クエリオプティマイザ
問合せ資源の最適化処理のこと。