この記事は Google 翻訳を使用して処理されました
SQL Series
データベース学習 1 データベース入門: https://blog.yexca.net/ja/archives/86
データベース学習 2 リレーショナル モデル: https://blog.yexca.net/archives/ja/87
データベースの学習 3 SQL言語: 本文以下のはまだ翻訳しないので、中国語(簡体字)のリンクだよ
数据库学习四 关系数据库理论: https://blog.yexca.net/archives/89
数据库学习五 范式: https://blog.yexca.net/archives/90
数据库学习六 数据库设计: https://blog.yexca.net/archives/91
数据库学习七 数据库的控制功能: https://blog.yexca.net/archives/92
SQL言語の分類
- DDL(データ定義言語)
データベースシステムでは、データベース内の各データベース、テーブル、ビュー、インデックスなどがデータベースオブジェクトです。データベースオブジェクトを作成または削除するには、SQL 言語を使用します。 DDL には CREATE
、ALTER
、DROP
などが含まれます。
- DML(データ操作言語)
DML は、INSERT
、DELETE
、UPDATE
など、データベース内のデータを追加、変更、削除するために使用されるステートメントを指します。
- DQL (データクエリ言語)
クエリはデータベースの基本機能であり、クエリ操作は SQL データ クエリ言語を通じて実装されます。たとえば、テーブルの内容を照会するにはSELECT
を使用します。
- DCL(データ制御言語)
DCL には、データベース オブジェクトの権限管理やトランザクション管理などが含まれます。
(I) DDLデータ定義言語
1. データベースを作成する
|
|
2。基本テーブルを作成します
|
|
<1> データタイプ
INT
/INTEGER
: 整数FLOAT(n)
: 少なくともn桁の精度を持つ浮動小数点数NUMERIC(p, d)
/DECIMAL(p, d)
/DEC(p, d)
: p桁(符号と小数点を除く)のd桁の固定小数点数小数点以下の数字CHAR(n)
: 長さnの固定長文字列- DATETIME: 日付と時刻の型
|
|
<2> ラインレベルの整合性の制約
-
not null: 空ではない
-
unique: ユニーク
-
not null unique: 空ではなくユニーク
-
default: デフォルト値を定義する
|
|
<3> テーブルレベルの整合性の制約
名前 | 条項 | 通信の完全性 |
---|---|---|
主キー句 | PRIMARY KEY | エンティティの整合性 |
チェック条項 | CHECK | ユーザー定義の整合性 |
外部キー句 | FOREIGN KEY | 参照整合性 |
|
|
整合性の検査
- アサート(通常は推奨されません)
|
|
- トリガー
テーブルが追加、削除、または変更されると、トリガー内の条件がチェックされます。条件が満たされている場合はトリガー内のアクションが実行され、満たされていない場合はアクションは実行されません。
|
|
3。基本的なテーブル構造を変更します
- 新しい列を追加する
|
|
- 列を変更する*
|
|
- 列の削除
|
|
4。基本テーブルを削除します
|
|
(二)、DML データ操作言語
次のコンテンツの例は、これらのテーブルに基づいています
|
|
1. INSERT ステートメントを挿入
SQL基本テーブルにデータを挿入する方法は2つあります。タプル値を直接挿入するか、クエリの結果値を挿入するかです。
- タプル値を直接挿入する
|
|
- クエリの結果値を挿入する
|
|
2. DELETE 削除ステートメント
|
|
3. UPDATE ステートメントを修正
|
|
(三)、DQL データクエリ言語
SQL データクエリ機能は SELECT 文を通じて実装されます。完全な構文は次のとおりです。
|
|
1. 投影クエリ
クエリ テーブル内の任意の列を選択するには、SELECT
コマンドを使用します。複数の列がある場合は、カンマ ,
を使用して区切ります。 FROM
句に複数のリレーショナルテーブルがある場合、各テーブルの名前を記述する必要があります。
|
|
重複行を削除するには DISTINCT
を使用します
|
|
クエリ結果の列名をカスタマイズするには AS
を使用します
|
|
2. クエリを選択
選択クエリは、クエリ条件を指定し、ソース テーブルからクエリ条件を満たすレコードのみを抽出または表示します。
選択クエリでは通常、次の種類の操作が使用されます。
オペレーター | コード | 説明する |
---|---|---|
セットメンバーシップ演算子 | INNOT IN | セット内セットに含まれない |
文字列マッチング演算子 | LIKE | _ および % を使用した単一または複数の文字の一致 |
NULL比較演算子 | IS NULLIS NOT NULL | 空の空にすることはできません |
算術演算子 | >>=«br /><==<> | より大きいより大きいか等しい未満以下等しい等しくない |
<1> 条件式の比較演算
|
|
<2> 文字列マッチング操作
|
|
'一致文字列'
は完全な文字列にすることも、ワイルドカード文字 %
と _
を含めることもできます。
- %: 任意の長さの文字を表します
- _ : 任意の1文字を表す
<3> 集合の比較演算
|
|
<4> 論理的結合演算
|
|
3. 並べ替えクエリ
クエリ結果はORDER BY
句を使用して並べ替えることができます。
|
|
複数の列を指定して並べ替えることもできます。最初の列が最初に並べ替えられ、次に2番目の列が並べ替えられます。
|
|
ORDER BY
句はクエリの最後に配置する必要があります。
4. 集計関数
集計関数は、データ統計やその他の機能を実装します。一連の値を計算し、単一の値を返すために使用されます。
通常は group by
句とともに使用される一般的な集計関数は次のとおりです。
関数名 | 説明 |
---|---|
AVG | 平均値 |
COUNT | 指定された式で選択された項目の数をカウントしますCOUNT(*)はクエリによって出力された行数をカウントします |
MIN | 最小値 |
MAX | 最大値 |
SUM | 値の合計 |
STDWV | 指定された式のすべてのデータの標準偏差を計算します |
STDEVP | 母集団標準偏差 |
集計関数の引数の一般的な形式は次のとおりです。
|
|
このうち、ALL
はすべての値に対して集計関数演算を実行することを意味し、これがデフォルト値となります。また、DISTINCT
は、すべての一意の値が考慮されることを指定します。 expr
は式です
|
|
5. データのグループ化
集計関数は1つの結果しか出力しないため、列をクエリして集計関数をまとめるとエラーが報告されます。
特定のカテゴリの集計関数の結果は、データをグループ化することで計算できます。つまり、集計関数の範囲は各グループ内のすべてのレコードになります。
集計関数をフィルター条件として使用する場合は、それを HAVING
句の後に置く必要があります。
|
|
クエリ内に WHERE
句、GROUP BY
句、HAVING
句、および集計関数が同時に出現する場合、SELECT
コマンドの実行順序は次のようになります。
WHERE
句を実行してテーブルから行を選択します- 選択した行を「GROUP BY」でグループ化する
- 集計関数を実行する
HAVING
句を実行して条件を満たすグループを選択します。
|
|
集計関数は条件として
HAVING
句の後にのみ配置でき、WHERE
句の後には配置できません。
SELECT
句が列名と集計関数で構成されている場合、すべての列名をグループ化する必要があります。
6. テーブル接続クエリ
FROM
句では結合するテーブルを指定し、WHERE
句では結合条件を指定します。
|
|
2つのテーブルの共通列には、student.学号
などのプレフィックスを指定する必要があります。
SQL Server では、接続は内部接続と外部接続に分けられます。
<1> 内部結合
Θ 結合、等価結合、自然結合
内部結合は最も基本的な結合方法です。INNER JOIN
キーワードを使用します。このキーワードを使用しない場合、デフォルトは内部結合になります。
- 等接続
つまり、2つのテーブル間の接続関係は「等しい」です。
|
|
入力を簡略化するために、テーブルエイリアスを使用することができます。
|
|
- 非等価結合
つまり、2つのテーブル間の接続関係は「等しい」ではない。
- 自己接続
同じテーブルを結合することを自己結合と呼びます。
|
|
<2> 外部結合 OUTER JOIN
左外部結合: LEFT OUTER JOIN または LEFT JOIN
右外部結合: RIGHT OUTER JOIN または RIGHT JOIN
完全外部結合: FULL OUTER JOIN または FULL JOIN
|
|
7. サブクエリ
<1> 一般的なサブクエリ
あるクエリが別のクエリの条件である場合、つまり、テーブルから行を選択する条件がテーブル自体または他のテーブルの結合情報に依存する場合、サブクエリを実装する必要があります。
サブクエリは、SELECT
ステートメントの WHERE
句で最もよく使用されます。
|
|
<2> 相関サブクエリ
通常のサブクエリでは、各サブクエリは 1 回だけ実行され、返された値はメインクエリの WHERE
句で使用されます。
メイン クエリが各行を選択するかどうかを判断するときは、サブクエリを「起動」し、メイン クエリにフィードバックする必要があります。つまり、内部条件に外部属性が含まれるサブクエリは相関サブクエリと呼ばれます。
|
|
<3> EXISTS テストを含むサブクエリ
EXISTS
は存在量指定子 ∃ を表し、論理真または論理偽の値のみを返します。
|
|
あるいは、結果を否定する「NOT EXISTS」がある。
8. クエリ結果の結合、交差、差の演算
次の演算子を使用して、2 つの SELECT
クエリの結果に対して操作を実行できます。
- UNION : および
- 交差:
- 例外: 差異
|
|
(四)、DCL データ制御言語
データ制御は、ユーザーのデータ保存権限を制御し、DBA(データベース管理者)によって決定されます。
データベースセキュリティ
不安要素:
- データベースへの不正アクセスと破壊
- データベースから重要なデータが漏洩
- 安全保障環境の脆弱性
セキュリティコントロール:
- ユーザーID認証: 静的パスワード認証、動的パスワード認証、生体認証、スマートカード認証
- アクセス制御
- 自律的なアクセス制御方式(ユーザーが操作権限をカスタマイズし、他のユーザーに割り当てることができる)
自律アクセス制御
DBMS(データベース管理システム)データ制御には以下の機能が必要です
GRANT
とREVOKE
を通じてシステムに権限を通知し、データ辞書に保存する- ユーザーがリクエストを行った場合、認可ステータスに基づいて操作リクエストを実行するかどうかを確認します。
SQL 標準には、DELETE
、INSERT
、SELECT
、および UPDATE
権限が含まれます。 SELETE
権限は READ
権限に対応します。SQL には REFERENCES
権限も含まれており、これはリレーションを作成するときにユーザーが外部キーを定義する機能を制限するために使用されます。
1. 認可ステートメントの形式
|
|
操作オブジェクトの種類によって権限は異なります。一般的な権限は次のとおりです。
オブジェクト | オブジェクトタイプ | 操作権限 |
---|---|---|
属性列 | TABLE | SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES (4つの権限の合計) |
ビュー | TABLE | SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES (4つの権限の合計) |
基本テーブル | TABLE | SELECT、INSERT、UPDATE、DELETE、ALTER、INDEXALL PRIVILEGES (6つの権限の合計) |
データベース | DATABASE | CREATETAB テーブルを作成する権限。DBA が一般ユーザーに付与できます。 |
- PUBLIC: 権限を受け取るユーザーは、単一のユーザーまたは複数の特定のユーザーです。
PUBLIC
パラメータは、すべてのユーザーに権限を付与できます。 - GRANT OPTION付き: この句が指定されている場合、権限を取得したユーザーは他のユーザーに権限を付与することもできます。
2. 権限取り消しステートメントの形式
|
|
データベースの役割
役割とは、CEO、取締役、一般従業員など、人物のタイプを指します。人物のタイプを承認できます。
- キャラクター作成
|
|
- ロールの承認
|
|
- 他のユーザーまたはロールにロールを付与する
|
|
with admin option
は、このユーザーが他のロールまたはユーザーにこの権限を付与できることを意味します。
- ロール権限の取り消し
|
|
ビューのメカニズム
ビューは、1 つ以上の基本テーブルまたはビューから派生したテーブルです。これは仮想テーブルです。
ユーザーごとに異なるビューを定義し、ユーザーが間違いを起こさないように不要なデータを非表示にします。
ビューの作成
|
|
- サブクエリの
SELECT
文には通常、ORDER BY
句とDISTINCT
文を含めることはできません。 WITH CHECK OPTION
は、UPDATE
、INSERT
、およびDELETE
操作の場合、操作対象の行がビュー定義の述語条件 (つまり、サブクエリの条件式) を満たす必要があることを意味します。- ビューを構成する属性列名がすべて省略されているか、すべて指定されています。省略した場合、ビューは
SELECT
サブクエリのターゲット列のプライマリ属性で構成されていることが暗黙的に示されます。
|
|
ビューの削除
|
|
監査
データベースに対するすべての操作は監査ログに記録され、そのログを使用して不正な動作があるかどうかを確認できます。
|
|
データ暗号化
いくつかの暗号化アルゴリズムにより、プレーンテキストは暗号テキストに変換され、他の人が閲覧できなくなります。
## 索引
インデックスを使用すると、データベース プログラムはテーブル全体をスキャンしなくても、テーブル内の必要なデータを見つけることができます。
データベースのインデックスは、テーブルの 1 つ以上の列の値のコレクションと、これらの値を物理的に識別するテーブル内のデータ ページへの論理ポインターの対応するリストです。
内部スキーマによって定義されます(内部スキーマはすべての内部レコードタイプ、インデックス、およびファイル構成を定義します)
インデックスを作成する
|
|
順序:オプションASC
(デフォルト)または DSC
UNIQUE
:このインデックスの各インデックス値が 1 つのデータ レコードのみに対応することを示します。
CLUSTER
:作成されるインデックスがクラスター化インデックスであることを示します。つまり、インデックス項目の順序は、テーブル内のレコードの物理的な順序と一致します。
インデックスの削除
|
|