データベースの用語集を作りました(そもそも、DBがわからない・・・なら、データベースとは?を見てね!)。
■索引(押したら飛んでいきます)
■使い方
①上の索引(「あ」「か」「さ」「た」「な」など)を押すと移動します。お探しの用語を早く見つけるのに活用してください。
※例えば、「さ」を押すと、頭文字がさ行のDB用語が見れる。
②青字(リンク)になっている用語は、管理人ひよこSEが個別記事として作成したものです。なるべく、わかりやすく説明しているので、ぜひ見てね。
③SQL文の例は、完全にフィーリングです。Oracle・postgreSQL・MySQLなどで仕様は異なるので細かいところは、ご自身で調べてくださいまし。
あ行
■アボート
強制的に中断されること。トランザクションの最中にアボートされたら、ロールバックするしかない。
■一意制約
「主キーの重複はいけないよ」という制約のこと。たとえば、同じ大学で同じ学生番号が複数存在することはない。
製品によっては、「UNIQUE制約」だが同義。一意制約に違反した場合は、エラーとなるのでデータは登録できない。
別名のこと。
列(項目名)(select ○○ AS ××)と、テーブル(select * from hoge A)のエイリアスがある。
■エンティティ
実体。よくわかんなかったら、テーブルだと思えばよし!
もうちょい踏み込めば、「テーブルAーテーブルB」みたいな線を引いて、「AからテーブルBのデータは1つに絞れるのか?それとも複数取れるのか?」みたいな関係性をE-R図で表す。
か行
■外部キー
他のテーブルの主キー(①)となる項目。
「外部キー制約」を付けると、親テーブル(①)に存在しない値の登録、(①)が参照されている場合のレコードの削除はエラーとなる。
■外部スキーマ
利用者の目に見える形であること。データベースに入っている実際のデータを見たり更新ができる。
■概念スキーマ
「データの論理的関係」って言ったりするけど、テーブルの定義。
■関係データベース
表(テーブル)、行(レコード)、列(カラム)の形で管理されているデータベース。
データベースといえば、ほぼ関係データベースのことであり、実際の製品のことをカッコよく”RDBMS“といったりする。
■関数従属
主キーがわかると、他の情報が芋づる式にわかる関係のこと。(学生番号⇒生徒名みたな)
■共有ロック
他のトランザクションで参照できる状態だが、更新ができない状態のこと。
■結合
テーブル同士を結合させる。LEFT JOIN/INNER JOIN/RIGHT JOINだったり。
(個人的には好きじゃないけど、WHERE句での結合もできる)
1つのSELECT文で、異なるテーブルからデータを引っこ抜くのに使う。
※厳密にいえば、UPDATEやDELETEでも使えるっちゃ使えるけど、普通はやらないので、99%SELECTでよいかと。
■コミット
トランザクションを確定させること。データの登録や更新、削除も確定される。
さ行
■サブクエリ(副問い合わせ)
最終的にほしい抽出結果以外で、記載されているselect句のこと(副問い合わせともいう)。
select * from
(
select
A, B, C
from
table X
union all
select
A, B, C
from
table Y
) A
上記の例で言うと、かっこの中がサブクエリ(3行目~11行目)。select * from はメインクエリである。
■主キー
他とかぶらないし空にならない情報。それだけで、1つのデータに特定できる情報。
学生番号や会員IDなどをイメージすればよし。
■主問い合わせ(メインクエリ)
最終的にほしい抽出結果が、記載されているselect句のこと(メインクエリともいう)。
select * from
(
select
A, B, C
from
table X
union all
select
A, B, C
from
table Y
) A
上記の例で言うと select * from が主問い合わせ。かっこの中がサブクエリである。
■射影
列(カラム)を選択する。SELECT(選択)と一緒に使われる。
①SELECT 学生番号 FROM 学生テーブル
②SELECT * FROM 学生テーブル
①「学生番号」が、「列」であり「射影」。
②*(アスタリスク)を指定すれば、学生テーブルのすべての列が射影される。
■ジャーナル
データベースの更新履歴のこと。ロールフォワードするときの手掛かりになる。
■スキーマ
データベースの概念。概念スキーマ・外部スキーマ・内部スキーマの3つがあるが、単に「スキーマ」と言えば、普通は「概念スキーマ」のこと。
■ストアドプロシージャ
よく行われる処理を関数化したもの。
シーケンスの採番や、金額の消費税計算、他テーブルのコード値から名称を取ってくる処理でよく見る。
①– 消費税を計算するストアドプロシージャ
CREATE OR REPLACE PROCEDURE calcShohizei(money IN Number, rate IN VARCHAR2(4))
IS
BEGIN
— 処理を書く
END;
②SELECT
精算ID, 精算日, 精算金額, calcShohizei(精算金額, ‘0.08’)
FROM
顧客精算情報
WHERE
精算日 = ‘20211001’
- ①ストアドプロシージャの名称を付ける(calcShohizeiみたいな)
- ②SELECT で呼び出し
みたいな。
■選択
SELECTと同じ。文字通りデータを取ってくる。
■占有ロック
テーブルの更新も参照もできなくなるロックのこと。占有ロックでトランザクションが競合すると、デッドロックとなり処理が進まない。
下記の①・②のどちらかで、行の占有ロックがかかる。
(データベースの製品によって微妙に仕様が違うので注意!)
①INSERT, UPDATE, DELETE文が実行された行
②select 項目 From テーブル for update;
た行
すべてのデータを同じ形(DBに入る形)に整えること。
主キーにくっつく、データのかたまりを整理。
■第三正規化
主キー以外のデータのかたまりを整理。
■テーブル
データベース内でデータを保存するための箱本体。
トランザクション同士がお互いに待ち状態になること。
占有ロックをお互いに掛け合って身動きが取れなくなるのが原因。
データを入れ替えするときのまとまった処理。
な行
■内部スキーマ
データベースの製品名、OS、メモリや容量のような、物理的なデータベースの形式の話になってくる。
(インフラ屋さんは、ここら辺がかなり詳しいっす)
は行
■排他制御
ロックをかけること。データの不整合が起きないようにするのが目的。
■ビュー
仮で作った表(テーブル)のこと。仮で作った「仮想テーブル」なので、登録や更新などはできない。
SELECT(選択)されるたびに、ビューが作成される。
※ビューの正体は、ふつうのSELECT文です。複雑な計算結果とかを外出しするイメージ。
■フィールド
テーブルの列(カラム)のこと。
■副問い合わせ(サブクエリ)
最終的にほしい抽出結果以外で、記載されているselect句のこと(サブクエリともいう)。
select * from
(
select
A, B, C
from
table X
union all
select
A, B, C
from
table Y
) A
上記の例で言うと、かっこの中(3行目~11行目)が副問い合わせ。select * from は主問い合わせである。
■部分関数従属
複合キーの一部の情報から、他の情報が芋づる式にわかること。
全部のデータのコピーを作る。
管理をしてあげないと、全部をバックアップする性質から、すぐにサーバーの容量不足となる(ひよこSEは経験しました(*´ω`))
ま行
■マテリアライズドビュー
ふつうのテーブル(表)と同じように実態があるが、登録や更新・削除ができないビューのこと。
ビューは参照されるたびに仮想テーブルが作られるので更新は不要だが、マテリアライズドビューはリフレッシュをしないとデータが更新されない。
「マテビュー」と略されることが多い。
■メインクエリ(主問い合わせ)
最終的にほしい抽出結果が、記載されているselect句のこと(主問い合わせともいう)。
select * from
(
select
A, B, C
from
table X
union all
select
A, B, C
from
table Y
) A
上記の例で言うと select * from がメインクエリ。かっこの中がサブクエリである。
や行
■予約語
SELECTとかINSERTとかUPDATEとか。
「SELECT=データの抽出」みたいに、SQLの世界で役割が決まっている単語・句のこと。
ら行
■レコード
データベースのテーブルの1行のデータ。AB大学のデータベースのXYテーブルの学生番号123の学生のデータ1行がレコード。
トランザクションを実行前に戻すこと。データの登録・更新・削除は、なかったことになる。
■ロールフォワード
ジャーナル(データベースの更新履歴)を使って、最後のバックアップからさらにその先の、障害発生直前の状態にデータベースの状態を戻すこと。
バックアップしたデータを戻すだけでは不十分な場合に使う。
(・・・けど、ひよこSEは経験ないなぁ(*´ω`)。)
わ行
ないかも(*´ω`)。
A~E
下記の4つは、データベースなら担保されているよ的な話。
- 【Atomicity(原子性)】トランザクションは、「すべて実行される」、「実行されない」のどちらかであること
- 【Consistency(一貫性)】データベースの内容に矛盾がない状態であること
- 【Isolation(隔離性)】トランザクションの実行が同時、順番のどちらであっても結果は変わらないこと
- 【Duability(耐久性)】データベースが故障した場合でも、なんらかの復旧手段があること
■ASC
昇順。数字や文字が、辞書的に小さい順に並びかえる。
SELECT 項目A FROM テーブル1 ORDER BY 項目A ASC
;
■COUNT
データの個数を数える、集計関数。
SELECT 項目A, COUNT(*) FROM テーブル1 GROUP BY 項目A ORDER BY 項目A
;
■CREATE
テーブル、ビュー、マテアライズドビューを作るのに使う。
CREATE TABLE・・・
CREATE VIEW・・・
CREATE MATERIALIZED VIEW・・・
■DBMS
「Database Management System=データベース管理システム」のこと。
早い話が、Oracle・PostgreSQL・MySQL・SQL Serverなどの製品名だと思えばいい。
■DDL
Data Definition Languageの略で、「データ定義言語」って言われる。
CREATE文, DROP文などのテーブルを使う文たちと思えばよし。
■DESC
降順。数字や文字が、辞書的に大きい順に並びかえる。
SELECT 項目A FROM テーブル1 ORDER BY 項目A DESC
;
■DML
「Data Manipulation Language=データ操作言語」のこと。
SELECT, INSERT, UPDATE, DELETE が該当する。
■DROP
テーブルを削除する。(データの削除でなく、テーブルごと削除する)
DROP TABLE テーブル1 CASCADE CONSTEAINTS
;
ちなみに、 CASCADE CONSTEAINTS(制約も含めてテーブルを消す)を入れておかないと、けっこう面倒。
テーブルをDROPした後も、主キー制約・外部キー制約は単体で残り続けるので、再度CREATE TABLEするときに、「そのキー制約は既に登録されているぜ」的なエラーになる。
■E-R図
箱と線でつながりを表すもの(テーブルやエンティティの関係性を線で表すもの)
F~J
■GROUP BY
集計単位を指定する。「SUM(合計),COUNT(数え上げ),MAX(最大値),MIN(最小値)をSELECTしたい」となった場合に、「どの単位で集計するのか?」を指定しないと「GROUP BYに含めてくれ」的なエラーになる。
SELECT 項目A, COUNT(*) FROM テーブル1 GROUP BY 項目A ORDER BY 項目A
;
GROUP BYした後に、フィルターする場合に使う。
(例えば、「個数が3以上のAを抽出する」みたいに、集計後のフィルター)
SELECT 項目A, COUNT(*) FROM テーブル1 GROUP BY 項目A HAVING COUNT(*) >= 3 ORDER BY 項目A
;
■INNER JOIN
テーブルを結合する。結合できなかった場合は、抽出結果から除外される。
SELECT テーブル1.項目A, テーブル2.項目X FROM テーブル1
INNER JOIN テーブル2
ON テーブル1.項目A = テーブル2.項目B
;
■INSERT
データを登録(挿入)する。
INSERT INTO 学生テーブル
(
学生番号
, 所属学部
, 生徒名
)
VALUES
(
20XXEC0001
, ‘経済学部’
, ‘ひよこSE’
)
;
K~O
■LEFT JOIN
テーブルを結合する。
結合できなかった場合は、下記の例で言えば、「テーブル2.項目X」はNULLになる。
SELECT テーブル1.項目A, テーブル2.項目X FROM テーブル1
LEFT JOIN テーブル2
ON テーブル1.項目A = テーブル2.項目B
;
■Max
かっこの中に入れた項目の最大値を取る。
SELECT 項目A, Max(日付) FROM テーブル1 GROUP BY 項目A ORDER BY 項目A
;
■Min
かっこの中に入れた項目の最小値を取る。
SELECT 項目A, Min(日付) FROM テーブル1 GROUP BY 項目A ORDER BY 項目A
;
■ORDER BY
並び替える。ASC(昇順)、DESC(降順)を指定する。
P~T
■RDB
Relational Database(「関係データベース」)の略。
現在のデータベースはほぼ、表と行と列で作られる「関係データベース」であるため、結果的にデータベースと同じ意味。
DBMS(データベース管理システム)とほぼ同じ意味。
(現在のデータベースは、ほぼ「関係データベース」であり、製品をあらわすデータベース管理システムも同じであるため。)
■RIGHT JOIN
テーブルを結合する。
結合できなかった場合は、下記の例で言えば、「テーブル1.項目A」はNULLになる。
SELECT テーブル1.項目A, テーブル2.項目X FROM テーブル1
RIGHT JOIN テーブル2
ON テーブル1.項目A = テーブル2.項目B
;
■SELECT
選択と同じ意味。データを取ってくる。
■SQL
データベースとデータをやり取りするための言葉
変な文字を入れてデータベースに悪さすること。
■SUM
合計をとる。
SELECT 項目A, SUM(金額) FROM テーブル1 GROUP BY 項目A ORDER BY 項目A
;
U~Z
■UPDATE
データベースのテーブルのデータを更新するための予約語。
UPDATE テーブルX SET 項目A=’hoge’ WHERE 項目B=’123′
;
■UNION
SELECT文の結果を結合する。
SELECT 項目A, 項目B, 項目C FROM テーブル1
UNION ALL
SELECT 項目D, 項目E, 項目F FROM テーブル2
;
この場合、項目A, 項目B, 項目Cと、項目D, 項目E, 項目Fの組み合わせは、データの型が同じである必要がある。
「主キーの重複はいけないよ」という制約のこと。たとえば、同じ大学で同じ学生番号が複数存在することはない。
製品によっては、「一意制約」だが同義。UNIQUE制約に違反した場合は、エラーとなるのでデータは登録できない。
集計「前」に条件をしぼりこむ。
①SELECT 項目A, 項目B, 項目C FROM テーブル1
WHERE 項目A =’あいう’
;②SELECT 項目D, 項目E, 項目F FROM テーブル2
WHERE 項目D < 100
;
①だと、項目Aが、’あいう’に等しいレコード(データ、行)
②だと、項目Dが、’100’より小さいレコード(データ、行)
が抽出される。