1 SQL理念
すべてがSQLフィールドに、Linuxの哲学のファイルのような形をしている、そのような知恵を持っています
一切都是关系
2リレーショナルデータベース
いわゆるリレーショナルデータベース(リレーショナルデータベース)数学的概念と代数の収集の方法により、データベース内のハンドルデータにリレーショナルモデルに基づいてデータベースを作成することです。
現実の世界とさまざまなエンティティのエンティティ間の結合は、リレーショナル・モデルで表現されています。このモデルは現在、いくつかの批判であるが、それは、データストレージの伝統的な標準ですが。SQLは、リレーショナルデータベース言語に基づいて標準クエリ言語データ検索は、この言語は、リレーショナルデータベースと操作中のデータに対して実行されます。
関係データ構造により、リレーショナルモデル、関係演算のセット、三つの部分のリレーショナル整合性制約。
2.1データ構造
- テーブル(リレーションシップ関係)
カラム(グループタプル値)および編成されたデータの列(属性項目)に設定されました。1つ以上のテーブル(関係の関係)を含むデータベース。たとえば、著者情報(関係関係)についての著者という名前のテーブルがあるかもしれません。各行(属性属性)が、このような著者の姓など、特定の種類の情報が含まれています。姓、名、住所など:各列(タプルを設定した値)は、特定の著者に関するすべての情報が含まれています。リレーショナルデータベーステーブル(リレーション関係)の関係で、リレーショナルデータベースは複数のテーブル(関係の関係)を含むことができます - ラインは
また、レコード(Record)と呼ばれ、それは単一のエンティティの関係を表しています。 カラム
、フィールド(フィールド)として知られているが、エンティティのプロパティを表します。表の各列は、対応するデータ型を持つ、一般的なデータ型は、文字型、数値型、日付と時刻タイプが含まれます。操作の2.2組
一般的なオペレーティングモジュール含むとの関係:- 増加(作成)
- クエリ(検索)
- アップデート(更新)
削除(削除)
その中でも、最も使用され、最も複雑な動作を具体的に含む、データのクエリです
- 選択(セレクション)
- プロジェクション(投影)
- 連合(連合)
- 交差点(交差点)
- 差集合(例外)
- 直積(デカルト積)
- ...
2.3整合性制約
整合性制約は、
2.3.1エンティティの整合性(エンティティ整合性)
3つのリレーショナルモデルのデータベースの整合性ルールの一つであるエンティティの整合性(。このルールは、データテーブルの各エンティティの整合性が主キーを持っていなければならないことを必要とし、主キーとしてすべてのフィールド、プロパティは一意である必要があり、 null以外の値。
フィールドは、一意のデータの各行は、主キー(主キー)と呼ばれる特定リレーショナルデータベースに、主キーフィールドは空白にすることはできません。各テーブルには、唯一の主キーを持っています。
2.3.2参照整合性
また、参照整合性として知られ、属性データが有効な参照を示すことです。私たちは、存在しないエンティティ参照を許可しない整合性を持っている関係を参照します。リレーショナルモデルを満たさなければならない、整合性と物理的な整合性の両方に、すべての整合性制約されている参照して、その目的は、データの一貫性を確保することです。
参照整合性の外部キー。
- 外部キー(外部キー)は、2つのテーブル間の関係を表し
、従業員などの部門に属しているので、部門番号フィールドは、部門テーブル内の部門番号フィールド引用され、現在従業員表です。部門を削除する前に、だけでなく、それに応じて、部門の従業員のための必要性、外部キー参照について、参照されたデータが存在している必要があり、従業員は存在しない部署に属することはできません。
2.3.3ユーザ定義の整合性
カスタマイズするための制約ベースのビジネスニーズ。
非空制約(NOT NULL)
適切なフィールドを確保するためには、NULL値ではありません、例えば、従業員は名前を持っている必要があります唯一の制約(UNIQUE)
フィールドの値を確保するためには、各従業員の電子メールアドレスが一意である必要があり、繰り返されることはありません- チェック制約(CHECK)は
、たとえば、給与が0より大きくする必要があり、より多くのビジネスルールを定義することができ、かつ他の文字は大文字でなければなりません デフォルト値(DEFAULT)
デフォルトのデータフィールドに挿入します。
唯一のMySQLのInnoDBストレージエンジンがサポートする外部キー制約; MySQLの8.0.16は、制約をチェックするためのサポートを追加します。上記のすべての制約の我々の強力なMySQLサポートので。
デフォルトの使用によって開始されてからのMySQL 5.5 InnoDBストレージエンジンことを支持取引(ACID)、行レベルのロック、クラッシュリカバリ、マルチバージョン同時実行制御(MVCC)と外部キー制約など
3 SQL:セット指向プログラミング
3.1構文の特徴
SQLは宣言型プログラミング言語、自然言語(英語)の構文近いです。などSELECT、INSERT、UPDATE、CREATE、DROP、などいくつかの簡単な英単語は、データベース操作のほとんどは完了です。
単純なクエリの例は
、SQLのシンプルかつ直感的に見ることができます。- クエリSELECT以上など、FROM一般的資本、(も句として知られている)と呼ばれているキーワード
- テーブル名、カラム名や他の一般的な小文字の内容
セミコロン(;)文の終わりを表し
SQL文は、大文字と小文字が区別はありませんが、一定のルールが読み、コードをより簡単にすることができ従ってください。
SQLは宣言型言語宣言型言語主な考え方は、結果(何を)、それを行う方法を指定しなくても、あなたが望むものをコンピュータに伝えることです。このような言語は、HTML、正規表現、および関数型プログラミングを含んでいます。
コレクションの3.2
SQLステートメントの場合、それがオブジェクト上で動作し、コレクション(表)で、結果は操作のセット(表)です。たとえば、次のクエリ:
SELECT emp_id, emp_name, salary
FROM employee;
従業員がテーブルである場合、それは文のクエリの目的である。同時に、またクエリテーブルの結果です。そこで、我々は、クエリを拡大し続けることができます。
SELECT emp_id, emp_name, salary
FROM (
SELECT emp_id, emp_name, salary
FROM employee
) dt;
入力値としてブラケット(名前DT)における我々のクエリ結果は、クエリの外部に渡され、全体の文の最終結果はまだテーブルです。
SQLクエリは、濾過変換、グループ概要、ソート等の表示などの各種のデータ操作であってもよい;しかしながら、それらは結果はテーブルであり、テーブルの操作に対して本質的です。
クエリ、挿入SQL、更新、および削除操作だけではなく、オブジェクトのコレクションにしています。私たちは、データ挿入の一例を見てみましょう。
CREATE TABLE t(id INTEGER);
-- 适用于 MySQL、SQL Server 以及 PostgreSQL
INSERT INTO t(id)
VALUES (1), (2), (3);
我々は最初のCREATE TABLE文を使用してテーブルを作成して、データを挿入するINSERT INTOステートメントを使用します。挿入操作の前に、データメモリ3を含み、ターゲットテーブルセットに挿入一時セット(表)を作成します。我々は通常、データラインに従って挿入されているデータの一部を、挿入しているので、実際には、データ収集の作品ですが、それはそれの唯一の要素です。
SQL UNION ALLは、より大きな集合からなる二組のために、動作中に設定されています。さらに、SQLは、交差演算子(INTERSECT)、差集合演算(除く)、およびデカルト積(デカルト積)をサポート
4データベースケース
従業員表(従業員)、部門表(県)と位置テーブル(ジョブ):3つのテーブルが含まれています。
図の構造は、また、エンティティと呼ばれる - 関係図(エンティティ関係図)
5まとめ
リレーショナルモデルは、データを格納するための、すなわち、関係(テーブル)、単純なデータ構造を定義します。SQLは、リレーショナルデータベースのために、宣言的に定義されたデータ、データ操作、およびアクセス制御を行う世界標準言語です。
SQLは、すべての関係(テーブル)のために、覚えておいてください。
参照
- 「データベース・システムの概念(元の本のバージョン6)。」
- リレーショナルデータベース
- マスターへのエントリからSQL
- エンティティ整合性
- 参照整合性