「SQLは知っておく必要がある」付録


在数据库中,除了表中的数据,其他都不区分大小写。

「SQLMustKnow and Know(FourthEdition)」eBook

https://pan.baidu.com/s/1sUzdNZSChK-zZz4YfZfLQQ
抽出コード:4oyt

付録Aサンプルテーブルスクリプト

A.1サンプルテーブル

この本で使用されている表は、架空のおもちゃのディーラーが使用している注文入力システムの一部です。これらのテーブルは、次のタスクを実行するために使用されます。

  • サプライヤーを管理します。
  • 製品カタログを管理します。
  • 顧客リストを管理します。
  • 顧客の注文を入力します。

それらを完成させるには5つのテーブルが必要です(それらはリレーショナルデータベース設計の一部として密接に関連しています)。次のセクションでは、各テーブルについて説明します。

テーブルの説明

これが5つのテーブルと各テーブルの列名です。
1.
ベンダーテーブルベンダーテーブルには、製品を販売するベンダーが格納されます。各サプライヤにはこのテーブルのレコードがあり、サプライヤID列(vend_id)は製品とサプライヤを照合するために使用されます。
ここに画像の説明を挿入
すべてのテーブルに主キーが必要です。このテーブルでは、主キーとしてvend_idを使用する必要があります。

2.製品テーブル
製品テーブルには、ラインごとに1つの製品の製品カタログが含まれています。各製品には一意のID
(prod_id列)があり、vend_id(サプライヤーの一意のID )を使用してサプライヤーに関連付けられます。
ここに画像の説明を挿入
すべてのテーブルに主キーが必要です。このテーブルでは、主キーとしてprod_idを使用する必要があります。
参照整合性を実装するには、ベンダーのvendor_id列に関連付けられているvendor_idで外部キーを定義する必要があります。

3.顧客テーブル
顧客テーブルには、すべての顧客情報が格納されます。各顧客には一意のID(cust_id列)があります。
ここに画像の説明を挿入
すべてのテーブルに主キーが必要です。このテーブルでは、cust_idを主キーとして使用する必要があります。

4.注文テーブル
注文テーブルには、顧客の注文が格納されます(注文の詳細ではありません)。各注文には一意の番号があります(order_num列)。注文テーブルは、cust_id列(Customersテーブルに関連付けられた一意の顧客ID)によって対応する顧客に関連付けられます。
ここに画像の説明を挿入

  • すべてのテーブルに主キーが必要です。このテーブルでは、主キーとしてorder_numを使用する必要があります。
  • 参照整合性を実装するには、Customersのcust_id列に関連付けられているcust_idに外部キーを定義する必要があります。

5. OrderItemsテーブル
orderItemsテーブルには、各注文の実際のアイテムと、各注文の各アイテムに1つの行が格納されます。注文テーブルの各行について、OrderItemsテーブルには1つ以上の行があります。各注文アイテムは、注文番号と注文アイテム((最初のアイテム、2番目のアイテムなど)によって一意に識別されます。注文アイテムは、order_num列(注文内の注文に関連付けられた一意のID)を使用して対応する注文に関連付けられます。さらに、各注文アイテムには、アイテムの製品IDが含まれます(アイテムをProductsテーブルに関連付けます)。
ここに画像の説明を挿入

  • すべてのテーブルに主キーが必要です。このテーブルでは、主キーとしてorder_numとorder_itemを使用する必要があります。
  • 参照整合性を実装するには、外部キーをorder_numとprod_idで定義し、order_numをordersのorder_num列に関連付け、prod_idをProductsのprod_id列に関連付ける必要があります。

データベース管理者は通常、図を使用してデータベーステーブルがどのように関連しているかを示します。上記の表の説明で述べたように、外部キーはこれらの関係を定義することを忘れないでください。図A-1は、この付録で説明する5つの表の関係図です。
ここに画像の説明を挿入

A.2サンプルテーブルを取得する

各例を学習するには、データで満たされた一連のテーブルが必要です。取得して実行するために必要なものはすべて、ブックページhttp://www.forta.com/books/0672336073/にあります
MySQLサンプルテーブルとデータSQL:https
://pan.baidu.com/s/1024yj3uonDz1bFsbJ0iHlg抽出コード:eqz8

A.2.1利用可能なデータファイルをダウンロードする

データが入力された次の形式のファイルは、上記のURLからダウンロードできます。

  • Apache Open Office Base
  • Microsoft Access ( 2000和2007)
  • SQLite

これらのファイルを使用する場合は、SQLの作成および入力スクリプトを実行する必要はありません。

A.2.2 DBMSSQLスクリプトのダウンロード

ほとんどのDBMSは、それ自体ではファイル配布を完了しない形式(Access、Openoffice Base、sQLiteなど)でデータを格納します。これらのDBMSの場合、上記のURLからSQLスクリプトをダウンロードできます。各DBMSには、次の2つのファイルがあります。

  • create.textには、5つのデータベーステーブルを作成するためのsQLステートメントが含まれています(すべての主キーと外部キー制約の定義を含む)。
  • Populate.txtには、これらのテーブルにデータを入力するために使用されるSQLINSERTステートメントが含まれています。

これらのファイルのSQLステートメントは特定のDBMSに依存するため、DBMSに適したステートメントを実行する必要があります。これらのスクリプトは読者の便宜のために提供されており、作成者はそれらの実行によって引き起こされた問題について一切の責任を負いません。

  • IBM DB2;
  • Microsoft SQL Server (包括Microsoft sQL Server Express );
  • MariaDB
  • MySQL;
  • Oracle(包括Oracle Express);
  • PostgreSQL。

利用できるものは非常に多いため、企業で最も使用されているMySQLを使用することをお勧めします。

付録B人気のあるアプリケーション

B.0MySQLを使用する

MySQLを使用するには2つの方法があります。DBMSには、mysq1という名前のコマンドラインユーティリティが付属しています。これは、SQLステートメントを実行するためにMySQLインストールプログラムの一部として通常インストールされるプレーンテキストツールです。さらに、MySQLの作成者はMySQLWorkbenchと呼ばれるインタラクティブツールをリリースしました。これは通常、個別にダウンロードしてインストールする必要があるため、他のインストールプログラムには表示されません。MySQLを学ぶときは、それを強くお勧めします。
コマンドラインからmysqlを使用して、次の手順を実行します。

(1)输人mysq1运行实用程序。根据如何定义安全性,可能需要使用-u和-p参数指定登录信息。
(2)在mysq1>提示下输人USE database打开数据库,例如USE tysq7就是打开tysq1数据库。
(3)在mysql>提示下输入SQL语句,每条语句必须以分号(;)结束。结果将显示在屏幕上。
(4)为可能使用的命令列表输人\h,为状态信息输人\s(包括MySQL版本信息)。
(5)输人\q退出mysq1实用程序。

MySQL Workbenchを使用して、次の操作を実行します。

(1)运行MySQL Workbench。
(2) MySQL Workbench的最左侧列出了可用的 MySQL数据库连接,允许你访问它们。点击任何连接就可以打开这个数据库;如果数据库没有在此列出,请选择New Connection。
(3)一旦连接,就会显示多个窗口。左侧的Object Browser列出了可用的数据库,中间是用于输人SQL语句的大的文本编辑器,结果或信息显示在下方。		
(4)点击+SQL按钮,打开新的SQL窗口。
(5)输人.SQL语句后,点击Execute(有闪电图片的那个)运行SQL。结果显示在下面。

B.1Oracleを使用する

Oracleには、多数のツールとクライアントがあります。Oracle sQL Developerは、SQLを学習する際の最初の選択肢です。これは、MySQL DBMSと一緒にインストールすることも、個別にダウンロードしてインストールすることもできます。このツールの使用方法は次のとおりです。

(1)运行Oracle sQL Developer ( Windows用户需要使用提供的批处理文件运行,不能通过应用本身运行)。
(2)在使用数据库前,你需要定义一个连接。这可以使用左侧Connections面板中的选项完成。
(3)连接完成后,使用SQL Worksheet标签页,在Query Builder 屏幕中输入sQL语句。
(4)执行sQL语句,单击Execute按钮(带闪电图形)。结果将显示在下面的面板中。

DBMS(つまり、一般的な用語ではMySQLまたはOracle)をインストールした後、視覚化ツールを使用してデータベースを操作することをお勧めNavicat Premiumます。ほとんどのDBMSは使いやすく、爆発しやすいことをお勧めします。

付録CSQLステートメントの構文

読者が必要なときに対応する文の構文を見つけやすくするために、この付録では、最も一般的に使用されるsQL文の構文をリストします。各文は簡単な説明で始まり、次にその文法が与えられます。クエリを簡単にするために、対応する文が配置されているクラスもマークされています。

文の文法を読むときは、次の規則を覚えておく必要があります。

  • |記号は、いくつかの選択肢の1つを示すために使用されます。したがって、NULL / NOT NULLは、NULLまたはNOTNULLのいずれかが指定されていることを意味します。
  • 角括弧で囲まれたキーワードまたは句([このように]など)はオプションです。
  • 以下にリストされている構文は、ほとんどすべてのDBMSに有効です。特定の構文で考えられる変更の詳細については、読者は独自のDBMSドキュメントを参照することをお勧めします。

C.0 ALTER TABLE

ALTER TABLEは、既存のテーブルの構造を更新するために使用されます。新しいテーブルを作成するには、CREATETABLEを使用する必要があります。詳細については、レッスン17を参照してください。

ALTER TABLE tablename
(
ADD|DROP column datatype [NULL|NOT NULL] [CONSTRAINTS],
ADD|DROP column datatype [NULL|NOT NULL] [CONSTRAINTS],
...
);

C.1コミット

COMMITは、トランザクションをデータベースに書き込むために使用されます。詳細はレッスン20をご覧ください。

COMMIT [TRANSACTION];

C.2インデックスの作成

CREATE INDEXは、1つ以上の列にインデックスを作成するために使用されます。詳細については、レッスン22を参照してください。

create index indexname on tablename (column....);

C.3作成手順

CREATE PROCEDUREは、ストアドプロシージャを作成するために使用されます。詳細はレッスン19をご覧ください。前述のように、Oracleで使用される構文は少し異なります。

create procedure procedurename [parameters] [options]
as
sql statement;

C.4表の作成

create tableは、新しいデータベーステーブルを作成するために使用されます。既存のテーブル構造を更新するには、altertableを使用します。レッスン17を参照してください。

create table tablename
(
  column datatype [null|not null] [constraints],
  ...
);

C.5ビューの作成

CREATE VIEWは、ビューを作成するために使用されます。レッスン18を参照してください。

create view viewname as
select columns,....
from tables,...
[where ...]
[group by ...]
[having ...];

C.6削除

DELETEは、テーブル内の1行以上のデータを削除します。レッスン16を参照してください。

delete from tablename
[where ...];

C.7ドロップ

DROPは、データベースオブジェクト(テーブル、ビュー、インデックスなど)を完全に削除します。レッスン17を参照してください。

drop index|procedure|table|view
indexname|procedurename|tablename|viewname;

C.8挿入

テーブルに行を追加します。レッスン15を参照してください。

insert into tablename[(columns,...)]
values (values,...);

C.9 INSERT SELECT

selectの結果をテーブルに挿入します。レッスン15を参照してください。

insert into tablename[(columns,...)]
select columns,... from tablename,...
[where ...] ;

C.10ロールバック

トランザクションブロックを元に戻します。レッスン20を参照してください。

rollback [to savepointname];rollback transaction;

C.11 SELECT *

最も一般的に使用されるもの、最も重要なもの。
データを取得し、データを見つけます。レッスン2、3、および4を参照してください。

select columnname,...
from tablename
[where ...]
[union ...]
[group by ...]
[having ...]
[order by ...];

C.12アップデート

1つ以上の行を更新します。レッスン16を参照してください。

update tablename
set columnname = value,...
[where ...];

付録DSQLデータ型

データ型は次の目的で使用されます。

  • データ型を使用すると、列に格納できるデータを制限できます。たとえば、数値データ型の列は数値のみを受け入れることができます。
  • データ型により、データをより効率的に内部に保存できます。数値と日時の値は、テキスト文字列よりも簡潔な形式で保存できます。
  • データ型を使用すると、並べ替え順序を変更できます。すべてのデータが文字列として扱われる場合、1は10の前、10は2の前です(文字列は辞書式順序で並べ替えられ、左から1文字ずつ比較されます)。数値データ型として、数値を正しく並べ替えることができます。

テーブルを設計するときは、使用するデータの種類に特別な注意を払う必要があります。間違ったデータ型を使用すると、アプリケーションの機能とパフォーマンスに深刻な影響を与える可能性があります。データを含む列を変更することは簡単なことではありません(そうするとデータが失われる可能性があります)。

D.0文字列データ型

ここに画像の説明を挿入
不管使用何种形式的字符串数据类型,字符串值都必须括在单引号内。

D.1数値データ型

ここに画像の説明を挿入
与字符串不一样,数值不应该括在引号内。

D.2日付と時刻のデータ型

ここに画像の説明を挿入
最も一般的に使用されるのはこれらの3つのタイプであり、初心者にはめったに使用されず、注意を払う必要のない他のバイナリデータタイプなどがあります。

付録ESQL予約語

SQLは、sQL操作を実行するために使用される特別な単語であるキーワードで構成される言語です。データベース、テーブル、列、およびその他のデータベースオブジェクトに名前を付けるときは、これらのキーワードを使用しないでください。したがって、これらのキーワードは予約する必要があります。
この付録では、主要なDBMSで最も一般的に使用される予約語を示します。以下の点にご注意ください。

  • キーワードはDBMSによって異なり、以下のすべてのキーワードがすべてのDBMSに採用されているわけではありません。
  • 多くのDBMSは、SQL予約語を拡張して、実装固有の用語を含めています。ほとんどのDBMS固有のキーワードは以下にリストされていません。
  • 将来の互換性と移植性を確保するために、使用するDBMSの予約語でなくても、これらの予約語の使用は避けてください。

興味のある方はご覧ください。興味がなければ忘れてください。
ここに画像の説明を挿入

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

一般的に使用されるSQLステートメントのクイックチェック

ALTER TABLE
ALTER TABLEは、既存のテーブルのスキーマを更新するために使用されます。CREATE TABLEを使用して、新しいテーブルを作成できます。詳細については、レッスン17を参照してください。

COMMIT
COMMITは、データベースにトランザクションを書き込むために使用されます。詳細については、レッスン20を参照してください。

CREATE INDEX
CREATE INDEXは、1つ以上の列のインデックスを作成するために使用されます。詳細については、レッスン22を参照してください。

CREATE TABLE
CREATE TABLEは、新しいデータベーステーブルを作成するために使用されます。ALTER TABLEを使用して、既存のテーブルのスキーマを更新できます。詳細については、レッスン17を参照してください。

CREATE VIEW
CREATE VIEwは、1つ以上のテーブルのビューを作成するために使用されます。詳細については、レッスン18を参照してください。

DELETE
DELETEは、テーブルから1つ以上の行を削除するために使用されます。詳細については、レッスン16を参照してください。

DROP
DROPは、データベースオブジェクト(テーブル、ビュー、インデックスなど)を完全に削除するために使用されます。詳細については、
レッスン17とレッスン18を参照してください

INSERT
INSERTは、テーブルに新しい行を追加するために使用されます。詳細については、レッスン15を参照してください。

INSERT SELECT
INSERT SELECTは、SELECTの結果をテーブルに挿入するために使用されます。詳細については、レッスン15を参照してください。

ROLLBACK
ROLLBACKは、トランザクションブロックを元に戻すために使用されます。詳細については、レッスン20を参照してください。

SELECT
SELECTは、1つ以上のテーブル(またはビュー)からデータを取得するために使用されます。詳細については、レッスン2、レッスン3、およびレッスン4を参照してください(レッスン2からレッスン14には、さまざまな方法でSELECTが含まれます)。

UPDATE
UPDATEは、テーブル内の1つ以上の行を更新するために使用されます。詳細については、レッスン16を参照してください。

おすすめ

転載: blog.csdn.net/qq_43600467/article/details/112917369