目录

  • 《SQL必知必会(第四版)》电子书
  • 附录A 样例表脚本
    • A.1 样例表
      • 表的描述
    • A.2获得样例表
      • A.2.1下载可供使用的数据文件
      • A.2.2下载DBMS SQL脚本
  • 附录B 流行的应用程序
    • B.0 使用MySQL
    • B.1使用Oracle
  • 附录C SQL语句的语法
    • C.0 ALTER TABLE
    • C.1 COMMIT
    • C.2 CREATE INDEX
    • C.3 CREATE PROCEDURE
    • C.4 CREATE TABLE
    • C.5 CREATE VIEW
    • C.6 DELETE
    • C.7 DROP
    • C.8 INSERT
    • C.9 INSERT SELECT
    • C.10 ROLLBACK
    • C.11 SELECT *
    • C.12 UPDATE
  • 附录D SQL数据类型
    • D.0 字符串数据类型
    • D.1 数值数据类型
    • D.2 日期和时间数据类型
  • 附录E SQL保留字
  • 常用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课。

《SQL必知必会》附录相关推荐

  1. 《CSS权威指南》--附录

    <CSS权威指南>--附录 虽然一条规则中的声明可以按照任何顺序写出来,但我背后还是有一个优先级顺序: 1. display 及相关声明: 2. position 及相关的声明: 3. m ...

  2. css权威指南第四版_16个非常有用的CSS伪选择器,你千万不要错过了!

    英文 | https://blog.bitsrc.io/css-pseudo-selectors-you-never-knew-existed-b5c0ddaa8116译文 | https://jue ...

  3. css权威指南pdf

    下载地址:网盘下载 内容简介  · · · · · · 这本书提供了对CSSl和CSS定位的完整的描述,同时也给出了CSS2的概述.书中对CSS的每个属性都做了详细的探究,同时讨论了各个属性之间如何协 ...

  4. CSS权威指南之css声明,伪类,文本处理--(简要笔记一)

    1.css层叠的含义 后面的会覆盖前面的样式 2.每个元素生成一个框,也称盒. 3.替换元素和非替换元素. img如果不指定src的外部路径,该元素就没有意义.他由文档本身之外的一个图像文件来替换. ...

  5. CSS权威指南(第三版)

    很早就买了这本书,之前都是断断续续地看,前段时间总算是花时间系统的把它看了一遍.严格的说是第二次才把这本书系统的看完,之前是因为很多知识点看不懂,所以没有系统看.虽然这一次也有好多知识点没有看懂.但是 ...

  6. css权威指南 note2

    样式表: 外部样式表(external style sheet) <link rel="stylesheet" type="text/css" href= ...

  7. 读书笔记《CSS权威指南》

    阅读本书主要目的: 自从学会CSS以来,虽然熟练掌握了其使用方法和技巧,但对其底层的原理和实现并不清晰,阅读本书想进一步系统化的学习和深入研究其本质,对这门前端基础语言从熟练使用到真正理解. 第1章 ...

  8. CSS权威指南(一)CSS概述

    文章目录 1.元素 2.引入样式表 3.样式表 4.媒体查询 5.特性查询 1.元素 (1)置换元素和非置换元素 置换元素,指用来置换元素内容的部分不由文档内容直接表示.比如img标签. 非置换元素, ...

  9. 翻译《CSS权威指南》第3版第1章有感

    昨晚第一章终于翻译完了,今天一直在想其中在 1.4.5 注释 章节提示中的一段文字: One way to create "nested" comments accidentall ...

  10. CSS权威指南之选择器补充

    1.给拥有两种类属性的标签内加css样式 <!DOCTYPE html> <html lang="en"> <head><meta cha ...

最新文章

  1. FIA2020会议准备相关工作
  2. 网络流量监控分析工具 Ntopng 安装
  3. ngrx里StoreModule.forFeature(‘example‘, reducers)运行时的数据结构
  4. .NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容
  5. 链表逆序的原理及实例
  6. 【软件质量】改善结构松散的代码
  7. python的变量在使用之前是否要进行声明_python – 如何在使用之前测试变量是否已初始化?...
  8. cp210x驱动运行不了怎么解决_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法...
  9. 【EOS】2.3 深入理解ABI文件
  10. 图像缩放之双线性插值
  11. 汉诺塔c 语言程序代码,汉诺塔 (C语言代码)
  12. 最难学的十大编程语言,Java排第三,C++排第二,第一名竟是它
  13. 计算机重做系统 d盘,pe重装系统后原c盘变称了d盘如何解决
  14. 直播视频秒开及视频优化
  15. 【C语言编程】 配对碱基链
  16. 软件生存周期、项目生命周期、产品生命周期区别
  17. 网上收集的几个花指令
  18. 屏蔽win10中文输入法
  19. 囤内存条,比买基金、白酒还赚钱
  20. 伽马矫正(Gamma correction)

热门文章

  1. Linux sz rz
  2. Ubuntu Software Center has closed unexpectly解决方案
  3. [3]⾃自定义视图、视图控制器
  4. 【Linux】CentOS 学习笔记之一(安装配制)
  5. MongoDB的安装、配置服务(转)
  6. PHP逆波兰表达式的算法
  7. python复制图片文件_python批量复制图片到另一个文件夹
  8. Qt Style Sheets Reference Qt css 样式属性列表[官版]
  9. Cocos2d lua 破解方案集合
  10. Spring中定义Bean的6种方式(声明式+编程式)