LOG

SQL操作をするための事前知識

噛めば噛むほど味が出る・・・


表操作

表操作には以下の種類がある。

選択 | 行の抽出 | WHERE句

     
     
     

射影 | 列の抽出 | SELECT句

   
   
   
   
   

指定 | 表の指定、結合 | FROM句、JOIN節

    
    
    
    
    
    
    
    
    
    
参考
リレーショナル・データベースの表操作

テーブル、フィールド、カラム、レコード

namecontinentareapopulationgdp
AfghanistanAsia6522302550010020343000000
AlbaniaEurope28748283174112960000000
AlgeriaAfrica238174137100000188681000000
AndorraEurope468781153712000000
AngolaAfrica124670020609294100990000000
テーブルサンプル
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_idnameage
1yokota29
2tateda29

とあり、「user_id」は一意、「name + age」の組み合わせも一意だった場合

スーパーキー(user_id), (user_id,name), (user_id,name,age), (name,age)
候補キー(user_id),(name,age)
主キー(user_id)
代理キー(name,age)

となる。

引用
データベース設計論で使われるキー、非キー、候補キー、スーパ… – Yahoo!知恵袋

※ 関係モデルではスーパーキー、候補キーの概念しかない。


SELECT構文

SELECT構文の書式は大文字、小文字を区別しない。


関数

関数が使える
関数一覧