《SQL必知必会》附录


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

《SQL必知必会(第四版)》电子书

https://pan.baidu.com/s/1sUzdNZSChK-zZz4YfZfLQQ
提取码:4oyt

附录A 样例表脚本

A.1 样例表

本书中所用的表是一个假想玩具经销商使用的订单录入系统的组成部分。这些表用来完成以下几项任务:

  • 管理供应商;
  • 管理产品目录;
  • 管理顾客列表;
  • 录入顾客订单。

完成它们需要5个表(它们作为一个关系数据库设计的组成部分紧密关联)。以下各节给出每个表的描述。

表的描述

下面介绍5个表及每个表内的列名。
1.Vendors表
Vendors表存储销售产品的供应商。每个供应商在这个表中有一个记录,供应商ID列( vend_id)用于进行产品与供应商的匹配。
在这里插入图片描述
所有表都应该有主键。这个表应该用vend_id作为其主键。

2. Products表
Products表包含产品目录,每行一个产品。每个产品有唯一的ID
( prod_id列),并且借助vend_id(供应商的唯一ID)与供应商相关联。
在这里插入图片描述
所有表都应该有主键。这个表应该用prod_id作为其主键。
为实施引用完整性,应该在vend_id上定义一个外键,关联到vendors的vend_id列。

3. Customers表
customers表存储所有顾客信息。每个顾客有唯一的ID( cust_id列).
在这里插入图片描述
所有表都应该有主键。这个表应该用cust_id作为它的主键。

4.Orders表
orders表存储顾客订单(不是订单细节)。每个订单唯一编号( order_num列)。orders表按cust_id列(关联到Customers表的顾客唯一ID)关联到相应的顾客。
在这里插入图片描述

  • 所有表都应该有主键。这个表应该用order_num 作为其主键。
  • 为实施引用完整性,应该在cust_id 上定义一个外键,关联到Customers的cust_id列。

5.OrderItems表
orderItems表存储每个订单中的实际物品,每个订单的每个物品一行。对于orders表的每一行,在 OrderItems表中有一行或多行。每个订单物品由订单号加订单物品((第一个物品、第二个物品等)唯一标识。订单物品用order_num列(关联到orders表中订单的唯一ID)与其相应的订单相关联。此外,每个订单物品包含该物品的产品ID(把物品关联到Products表)。
在这里插入图片描述

  • 所有表都应该有主键。这个表应该用order_num 和order_item作为其主键。
  • 为实施引用完整性,应该在 order_num和 prod_id上定义外键,关联order_num到orders的order_num列,关联prod_id到Products的prod_id列。

数据库管理员通常使用关系图来说明数据库表的关联方式。要记住,正如上面表描述提到的,外键定义了这些关系。图A-1是本附录描述的五个表的关系图。
在这里插入图片描述

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下载DBMS SQL脚本

大多数DBMS 以不自己完成文件分布的格式存储数据(如Access、Openoffice Base和sQLite那样)对于这些DBMS,可以从上述URL下载SQL脚本。对于每个DBMS,有两个文件:

  • create.text包含创建5个数据库表(包括定义所有主键和外键约束)的sQL语句。
  • populate.txt包含用来填充这些表的SQL INSERT语句。

这些文件中的SQL语句依赖于具体的DBMS,因此应该执行适合于你的DBMS的那个。这些脚本为方便读者而提供,作者对执行它们万一引起的问题不承担任何责任。

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

有这么多可以用,建议使用MySQL,企业中用的最多。

附录B 流行的应用程序

B.0 使用MySQL

有两种方式使用MySQL。DBMS带有一个名为mysq1的命令行实用程序。这是一个纯文本工具,通常作为MySQL安装程序的一部分来安装,用来执行任何SQL语句。另外,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.1使用Oracle

Oracle有一大套工具和客户端。学习SQL时首选Oracle sQL Developer,它可以与MySQL DBMS一起安装,也可以独立下载并安装。下面介绍如何使用此工具。

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

建议安装好DBMS之后(即我们通俗说的MySQL或Oracle),使用可视化工具来操作数据库,这里推荐Navicat Premium适合大多数的DBMS好用到爆炸。

附录C SQL语句的语法

为帮助读者在需要时找到相应语句的语法,本附录列出了最常使用的sQL语句的语法。每条语句以简要的描述开始,然后给出它的语法。为更方便查询,还标注了相应语句所在的课。

在阅读语句语法时,应该记住以下约定。

  • |符号用来指出几个选择中的一个,因此,NULL / NOT NULL表示或者给出NULL或者给出NOT NULL。
  • 包含在方括号中的关键字或子句(如[like this])是可选的。
  • 下面列出的语法几乎对所有DBMS都有效。关于具体语法可能变动的细节,建议读者参考自己的DBMS文档。

C.0 ALTER TABLE

ALTER TABLE用来更新已存在表的结构。为了创建新表,应该使用CREATE TABLE。详细信息,请参阅第17课。

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

C.1 COMMIT

COMMIT用来将事务写入数据库。详细内容请参阅第20课。

COMMIT [TRANSACTION];

C.2 CREATE INDEX

CREATE INDEX用于在一个或多个列上创建索引。详细内容请参阅第22课。

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

C.3 CREATE PROCEDURE

CREATE PROCEDURE用于创建存储过程。详细内容请参阅第19课。正如所述,Oracle使用的语法稍有不同。

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

C.4 CREATE TABLE

create table 用于创建新数据库表。更新已经存在的表结构,使用alter table。参阅17课。

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

C.5 CREATE VIEW

CREATE VIEW 用来创建视图。参阅18课。

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

C.6 DELETE

DELETE删除表中一行或多行数据。参阅16课。

delete from tablename
[where ...];

C.7 DROP

DROP永久的删除数据库对象(表,视图,索引等)参见17课。

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

C.8 INSERT

为表添加一行。参阅15课。

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

C.9 INSERT SELECT

将select的结果插入到一个表。参阅15课。

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

C.10 ROLLBACK

撤销一个事务块。参见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 UPDATE

更新一行或多行。参阅16课。

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

附录D SQL数据类型

数据类型用于以下目的。

  • 数据类型允许限制可存储在列中的数据。例如,数值数据类型列只能接受数值。
  • 数据类型允许在内部更有效地存储数据。可以用一种比文本字符串更简洁的格式存储数值和日期时间值。
  • 数据类型允许变换排序顺序。如果所有数据都作为字符串处理,则1位于10之前,而10又位于2之前(字符串以字典顺序排序,从左边开始比较,一次一个字符)。作为数值数据类型,数值才能正确排序。

在设计表时,应该特别重视所用的数据类型。使用错误的数据类型可能会严重影响应用程序的功能和性能。更改包含数据的列不是一件小事(而且这样做可能会导致数据丢失)。

D.0 字符串数据类型

在这里插入图片描述
不管使用何种形式的字符串数据类型,字符串值都必须括在单引号内。

D.1 数值数据类型

在这里插入图片描述
与字符串不一样,数值不应该括在引号内。

D.2 日期和时间数据类型

在这里插入图片描述
最常用的就这三类,其他还有二进制数据类型等等,很少用 初学可以不用关注。

附录E SQL保留字

SQL是由关键字组成的语言,关键字是一些用于执行sQL操作的特殊词汇。在命名数据库、表、列和其他数据库对象时,一定不要使用这些关键字。因此,这些关键字是一定要保留的。
本附录列出主要DBMS中最常用的保留字。请注意以下几点。

  • 关键字随不同的DBMS而变化,并非下面的所有关键字都被所有DBMS采用。
  • 许多DBMS扩展了SQL保留字,使其包含专门用于实现的术语。多数DBMS专用的关键字未列在下面。
  • 为保证以后的兼容性和可移植性,应避免使用这些保留字,即使它们不是你使用的 DBMS的保留字。

感兴趣的可以看看。不感兴趣的就算了。。。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常用SQL语句速查

ALTER TABLE
ALTER TABLE用来更新现存表的模式。可以用CREATE TABLE来创建一个新表。详情可参见第17课。

COMMIT
COMMIT用来将事务写人数据库。详情可参见第20课。

CREATE INDEX
CREATE INDEX用来为一列或多列创建索引。详情可参见第22课。

CREATE TABLE
CREATE TABLE用来创建新的数据库表。可以用ALTER TABLE来更新一个现存表的模式。详情可参见第17课。

CREATE VIEW
CREATE VIEw用来创建一个或多个表的视图。详情可参见第18课。

DELETE
DELETE用来从表中删除一行或多行。详情可参见第16课。

DROP
DROP用来永久性地删除数据库对象(表、视图、索引等)。详情可参见
第17课和第18课。

INSERT
INSERT用来对表添加一个新行。详情可参见第15课。

INSERT SELECT
INSERT SELECT用来将SELECT的结果插人到表中。详情可参见第15课。

ROLLBACK
ROLLBACK用来撤销事务块。详情可参见第20课。

SELECT
SELECT用来从一个或多个表(或视图)中检索数据。详情可参见第2课、第3课和第4课(第2课到第14课从不同方面涉及了SELECT ).

UPDATE
UPDATE用来对表中的一行或多行进行更新。详情可参见第16课。

猜你喜欢

转载自blog.csdn.net/qq_43600467/article/details/112917369