SQL操作をするための事前知識
噛めば噛むほど味が出る・・・
表操作
表操作には以下の種類がある。
選択 | 行の抽出 | WHERE句
■ | ■ | ■ | ■ | ■ |
■ | ■ | ■ | ■ | ■ |
■ | ■ | ■ | ■ | ■ |
射影 | 列の抽出 | SELECT句
■ | ■ | ■ | |||
■ | ■ | ■ | |||
■ | ■ | ■ | |||
■ | ■ | ■ | |||
■ | ■ | ■ |
指定 | 表の指定、結合 | FROM句、JOIN節
■ | ||||
■ | ||||
■ | ||||
■ | ||||
■ |
■ | ||||
■ | ||||
■ | ||||
■ | ||||
■ |
テーブル、フィールド、カラム、レコード
name | continent | area | population | gdp |
---|---|---|---|---|
Afghanistan | Asia | 652230 | 25500100 | 20343000000 |
Albania | Europe | 28748 | 2831741 | 12960000000 |
Algeria | Africa | 2381741 | 37100000 | 188681000000 |
Andorra | Europe | 468 | 78115 | 3712000000 |
Angola | Africa | 1246700 | 20609294 | 100990000000 |
- テーブルサンプル
- SQLZOO:SELECT basics
名前 | 説明 |
---|---|
テーブル | 2次元の表 |
フィールド | 列(縦軸) |
カラム | フィールドと同じ |
レコード | 行(横軸) |
SQL用語と関係モデル用語の対応関係
=ではない。
SQL用語 | 関係モデル用語 |
---|---|
表(テーブル) | 関係変数(リレーション変数) |
行(レコード) | 組(タプル) |
列(カラム、フィールド) | 属性 |
制約
データベースの内容が「整合性」が取れた状態で保たれるために、カラムやテーブルに対して格納するデータに条件(制約)を付けることができる。
つまり格納するデータを限定する。
制約名 | 別名 | 説明 |
---|---|---|
ユニーク制約 | UNIQUE (KEY)制約、一意性制約、一意キー制約、ユニークキー制約 | カラムのデータが重複しないことを保証する制約 |
NOT NULL制約 | 非NULL制約 | カラムのデータがNULL値でないことを保証する制約 |
主キー制約 | プライマリキー(primary key)制約 | ユニーク制約 + NOT NULL制約 |
外部キー制約 | 外部テーブルのデータを参照する際にお互いのデータが一致していることを保証する制約 |
キー
キーとは何かが具体的に書いている参考記事が見つからなかった。。
多分だけど、レコードを一意なものにするカラムの識別子みたいな扱いなのかなと思う。
違ってたら誰か教えてくださいm(_ _)m @yokotak0527
super key (スーパーキー)
レコードを一意に特定できるカラムの組み合わせのこと。最小である必要はなく、冗長でも構わない
冗長でも構わないというのは、つまり余計なカラムが入っていても依然としてスーパーキーであるという意味。
candidate key (候補キー)
スーパーキーのうち、必要最小限のカラムの組み合わせのこと
必要最低限とはどれか1つでも欠ければ一意性が確保出来なくなるという意味
主キーの候補となるキー
primary key (主キー、PK)
候補キーのうち、最も適していると思われる組み合わせのこと
最も適していなければいけないので、値は重複してはいけないし、NULLもダメ。
alternate key (代理キー)
主キーに選ばれなかった候補キーのこと。
foreign key (外部キー,FK)
外部のカラムを参照するカラム
外部キー制約は、お互いのデータが一致していることを保証する制約であるという点、
参照されるカラムは複数のテーブルの外部キーから参照される場合があるという点
から参照されるカラムの値は一意なものでなければならない。
お互いのカラムを親子に例えて
参照する側のカラム(外部キー)を子キー
参照される側のカラムを親キーと言うこともある。
artificial key (人為キー、人工キー、別名キー)
一意性を確保するためだけにシステム内部で生成された主キーのこと
人工キーと自然キーの関係性についてはWikipediaがわかりやすかった。
主キー – Wikipedia
surrogate key (サロゲートキー、代替キー)
artificial keyと同じ意味。
代替キー = 代理キーとして説明してるところもある。
主キーがあるレコードで代替キー(主キー)を作成 = 候補キー = 代理キーということなんやろか。
natural key (ナチュラルキー、自然キー)
そのまんま。
人工キーと自然キーの関係性についてはWikipediaがわかりやすかった。
主キー – Wikipedia
例えば
user_id | name | age |
---|---|---|
1 | yokota | 29 |
2 | tateda | 29 |
とあり、「user_id」は一意、「name + age」の組み合わせも一意だった場合
スーパーキー | (user_id), (user_id,name), (user_id,name,age), (name,age) |
候補キー | (user_id),(name,age) |
主キー | (user_id) |
代理キー | (name,age) |
となる。
※ 関係モデルではスーパーキー、候補キーの概念しかない。
SELECT構文
SELECT構文の書式は大文字、小文字を区別しない。
関数
関数が使える
関数一覧