摘要: 内部连接要求组成连接的两个表必须具有匹配的记录,T_Order表中的数据如下: 使用内部连接可以查询每张订单的订单号、价格、对应的客户姓名以及客户年龄,SQL语句如下: 执行以后我们在输出结果中看到下面的执行结果: 仔细观察我们可以看到T_Order表中有7行数据,而通过上面的内部连接查询出来的结果 阅读全文
posted @ 2018-10-21 01:46 尐鱼儿 阅读(431) 评论(0) 推荐(0)
摘要: 几乎所有的数据库系统都支持左外部连接和右外部连接,但是全外部连接则不是所有数据库系统都支持,特别是最常使用的MYSQL就不支持全外部连接。全外部连接是左外部连接和右外部连接的合集,因为即使在右表中不存在匹配连接条件的数据,左表中的所有记录也将被放到结果集中,同样即使在左表中不存在匹配连接条件的数据, 阅读全文
posted @ 2018-10-21 01:46 尐鱼儿 阅读(282) 评论(0) 推荐(0)
摘要: 到目前为止,我们讲解的连接都是在不同的数据表之间进行的,其实参与连接的表完全可以是同一样表,也就是表与其自身相连接,这样连接就被称为自连接。自连接并不是独立于交叉连接、内连接、外连接等这些连接方式之外的另外一种连接方式,而只是这些连接方式的一种特例,也就是交叉连接、内连接、外连接等连接方式中只要参与 阅读全文
posted @ 2018-10-21 01:45 尐鱼儿 阅读(936) 评论(0) 推荐(0)
摘要: 到目前为止,本书中所有的连接几乎都是等值连接,也就是在这种连接的ON子句的条件包含一个等号运算。等值连接是最常用的连接,因为它指定的连接条件是一个表中的一个字段必须等于另一个表中的一个字段。 处理等值连接,还存在另外一种不等值连接,也就是在连接的条件中可以使用小于(<)、大于(>)、不等于(<>)等 阅读全文
posted @ 2018-10-21 01:44 尐鱼儿 阅读(1824) 评论(0) 推荐(0)
摘要: 与内连接比起来,交叉连接非常简单,因为它不存在ON子句。交叉连接会将涉及到的所有表中的所有记录都包含在结果集中。可以采用两种方式来定义交叉连接,分别是隐式的和显式的。 隐式的连接只要在SELECT语句的FROM语句后将要进行交叉连接的表名列出即可,这种方式可以被几乎任意数据库系统支持。比如下面的SQ 阅读全文
posted @ 2018-10-21 01:44 尐鱼儿 阅读(423) 评论(0) 推荐(0)
摘要: 内连接组合两张表,并且基于两张表中的关联关系来连接它们。使用内连接需要指定表中哪些字段组成关联关系,并且需要指定基于什么条件进行连接。内连接的语法如下: 其中table_name 为被关联的表名,condition则为进行连接时的条件。 下面的SQL语句检索所有的客户姓名为MIKE的客户的订单号以及 阅读全文
posted @ 2018-10-21 01:43 尐鱼儿 阅读(16586) 评论(0) 推荐(0)
摘要: 使用目前所介绍的SQL知识,我们仅能够从一张数据表中检索数据,这在很多情况下是不能满足要求的,因为经常需要从多个表中进行检索才能得到想要的数据,SQL中的“表连接”就是用来解决这个问题的。表连接使用JOIN关键字将一个或者多个表按照彼此间的关系连接为一个结果集。 表连接在SQL中的地位是非常重要的。 阅读全文
posted @ 2018-10-21 01:42 尐鱼儿 阅读(289) 评论(0) 推荐(0)
摘要: 到目前为止,我们讲解的数据查询都是针对单张数据表的,但是在真实的业务系统中,各个表之间都存在这种联系,很少存在不与其他表存在关联关系的表,而在实现业务功能的时候也经常需要从多个表中进行数据的检索,而进行多表检索最常用的技术就是表连接。 为了更容易的运行本章中的例子,必须首先创建所需要的数据表,因此下 阅读全文
posted @ 2018-10-21 01:40 尐鱼儿 阅读(248) 评论(0) 推荐(0)
摘要: 第一范式要求每张表都要有主键,因此主键约束是非常重要的,而且主键约束是外键关联的基础条件。主键约束为表之间的关联提供了链接点。 主键必须能够唯一标识一条记录,也就是主键字段中的值必须是唯一的,而且不能包含NULL 值。从这种意义上来说,主键约束是UNIQUE 约束和非空约束的组合。虽然一张表中可以有 阅读全文
posted @ 2018-10-21 01:36 尐鱼儿 阅读(1378) 评论(0) 推荐(0)
摘要: 当一些信息在表中重复出现的时候,我们就要考虑要将它们提取到另外一张表中了,然后在源表中引用新创建的中的数据。比如很多作者都著有不止一本著作,所以在保存书籍信息的时候,应该把作者信息放到单独的表中,创建表的SQL语句如下: 表T_AUTHOR是作者信息表,FId字段为主键,FName字段为作者姓名,F 阅读全文
posted @ 2018-10-21 01:36 尐鱼儿 阅读(405) 评论(0) 推荐(0)
摘要: 唯一约束又称为UNIQUE约束,它用于防止一个特定的列中两个记录具有一致的值,比如在员工信息表中希望防止两个或者多个人具有相同的身份证号码。唯一约束分为单字段唯一约束与复合唯一约束两种类型,下面分别介绍。 如果希望一个字段在表中的值是唯一的,那么就可以将唯一约束设置到这个字段上,设置方式就是在字段定 阅读全文
posted @ 2018-10-21 01:35 尐鱼儿 阅读(1122) 评论(0) 推荐(0)
摘要: CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK条件中使用任意有效的SQL表达式,CHECK约束对于插入、更新等任何对数据进行变化的操作 阅读全文
posted @ 2018-10-21 01:35 尐鱼儿 阅读(1699) 评论(0) 推荐(0)
摘要: 在定义数据表的时候,默认情况下所有字段都是允许为空值的,如果需要禁止字段为空,那么就需要在创建表的时候显示指定。指定一个字段为空的方式就是在字段定义后增加NOT NULL,比如下面的SQL语句创建了表T_Person,并且设置FNumber 字段不允许为空: 创建T_Person表后我们执行下面的S 阅读全文
posted @ 2018-10-21 01:34 尐鱼儿 阅读(726) 评论(0) 推荐(0)
摘要: 使用CREATE TABLE语句创建数据表的时候,通过定义一个字段的类型,我们规范了一个字段所能存储的数据类型,但是在有的情况下这种类型的约束是远远不够的。加入一个用户向T_Person表中录入数据,由于疏忽它录入的数据中有一条记录中的FName字段忘记了填入数据,这就造成了一个没有名字的人员的出现 阅读全文
posted @ 2018-10-21 01:33 尐鱼儿 阅读(101) 评论(0) 推荐(0)
摘要: 前面的章节我们讲解了数据表的创建以及数据的增删改查,掌握了这些知识我们已经可以对数据库进行基本的操作了,但是在使用一段时间后我们就发现很多问题,比如按照年龄进行数据检索的时候速度非常快但是按照姓名进行数据检索的时候则非常慢、一个人的姓名不应该是未知的但是还是录入了大量的值为NULL的姓名到系统中、注 阅读全文
posted @ 2018-10-21 01:32 尐鱼儿 阅读(142) 评论(0) 推荐(0)
摘要: 各个数据库系统中提供的修改表结构的方法是不同的,有的提供了修改表名、修改字段类型、修改字段名称等操作的SQL语句,而有的则没有提供这些功能,甚至有的数据库系统连删除字段的功能都不支持。但是这些操作有的时候又是必要的,那么有没有变通的手段来实现这些功能呢?答案是有! 在DB2中如果要在表T中删除一个字 阅读全文
posted @ 2018-10-21 01:29 尐鱼儿 阅读(171) 评论(0) 推荐(0)
摘要: 当一个数据表不再有用的时候我们就可以将其删除,使用DROP TABLE 语句就可以完成这个功能,DROP TABLE 语句的语法如下: 可以看到DROP TABLE 语句语法非常简单,只要指定要删除的表名就可以了。执行下面的SQL就可以将T_Person表删除了: 需要注意的是,如果在表之间创建了外 阅读全文
posted @ 2018-10-21 01:28 尐鱼儿 阅读(245) 评论(0) 推荐(0)
摘要: 外键是非常重要的概念,也是体现关系数据库中“关系”二字的体现,通过使用外键,我们才能把互相独立的表关联起来,从而表达丰富的业务语义。 外键是定义在源表中的,定义位置同样为所有字段定义的后面,使用FOREIGN KEY关键字来定义外键字段,并且使用REFERENCES关键字来定义目标表名以及目标表中被 阅读全文
posted @ 2018-10-21 01:26 尐鱼儿 阅读(944) 评论(0) 推荐(0)
摘要: 通过 CREATE TABLE 语句创建的数据表的结构并不是永远不变的,很多因素决定我们需要对数据表的结构进行修改,比如我们需要在T_Person表中记录一个人的个人爱好信息,那么就需要在T_Person中增加一个记录个人爱好的字段,再如我们不再需要记录一个人的年龄,那么我们就可以将FAge字段删除 阅读全文
posted @ 2018-10-21 01:26 尐鱼儿 阅读(284) 评论(0) 推荐(0)
摘要: 通过主键能够唯一定位一条数据记录,而且在进行外键关联的时候也需要被关联的数据表具有主键,所以为数据表定义主键是非常好的习惯。在CREATE TABLE 中定义主键是通过PRIMARY KEY 关键字来进行的,定义的位置是在所有字段定义之后。比如我们为公交车建立一张数据表,这张表中有公交车编号FNum 阅读全文
posted @ 2018-10-21 01:25 尐鱼儿 阅读(1162) 评论(0) 推荐(0)
摘要: 我们在定义字段的时候为字段设置一个默认值,当向表中插入数据的时候如果没有为这个字段赋值则这个字段的值会取值为这个默认值。比如我们希望设置教师信息表中的是否班主任字段FISMaster的默认值为“NO”,那么只要如下设计建表SQL: 可以看到,与普通字段定义不同的地方是,非空字段的定义在类型定义后增加 阅读全文
posted @ 2018-10-21 01:24 尐鱼儿 阅读(295) 评论(0) 推荐(0)
摘要: 我们在注册一些网站的会员的时候都需要填写一些表格,这些表格中有一些属于必填内容,如果不填写的话会无法完成注册。同样我们在设计数据表的时候也希望某些字段为必填值,比如学生信息表中的学号、姓名、年龄字段是必填的,而个人爱好、家庭电话号码等字段则选填,所以我们如下设计建表SQL: 可以看到,与普通字段定义 阅读全文
posted @ 2018-10-21 01:23 尐鱼儿 阅读(406) 评论(0) 推荐(0)
摘要: SQL语句CREATE TABLE 用于创建数据表,其基本语法如下: 这里的CREATE TABLE 语句告诉数据库系统我们要创建一张数据表,CREATE TABLE语句后紧跟着表名,这个表名不能与数据库中已有的表名重复。括号中是一条或者多条表定义,表定义包括字段定义和约束定义两种,一张表中至少要有 阅读全文
posted @ 2018-10-21 01:22 尐鱼儿 阅读(285) 评论(0) 推荐(0)
摘要: 联合结果集不必受被联合的多个结果集之间的关系限制,不过使用UNION仍然有两个基本的原则需要遵守:一是每个结果集必须有相同的列数;二是每个结果集的列必须类型相容。 首先看第一个原则,每个结果集必须有相同的列数,两个不同列数的结果集是不能联合在一起的。比如下面的SQL语句是错误的: 执行以后数据库系统 阅读全文
posted @ 2018-10-21 00:50 尐鱼儿 阅读(412) 评论(0) 推荐(0)
摘要: UNION运算符要放置在两个查询语句之间。比如我们要查询公司所有员工(包括临时工)的标识号码、姓名、年龄信息。 查询正式员工信息的SQL语句如下: 而查询临时工信息的SQL语句如下: 只要用UNION操作符连接这两个查询语句就可以将两个查询结果集联合为一个结果集,SQL语句如下: 可以看到UNION 阅读全文
posted @ 2018-10-21 00:49 尐鱼儿 阅读(193) 评论(0) 推荐(0)
摘要: 我们想列出公司中所有员工(包括临时工)的姓名和年龄信息,那么我们可以执行下面的SQL语句: 的是不一致的,在正式员工中有姓名为Tom、年龄为26以及姓名为Tina、年龄为26的两名员工,而临时工中也有姓名为Tom、年龄为26以及姓名为Tina、年龄为26的两名员工,也就是说正式员工的临时工中存在重名 阅读全文
posted @ 2018-10-21 00:48 尐鱼儿 阅读(159) 评论(0) 推荐(0)
摘要: 有的时候我们需要查询一些不能从任何实体表中能够取得的数据,比如将数字1作为结果集或者计算字符串“abc”的长度。 有的开发人员尝试使用下面的SQL来完成类似的功能: 可是执行以后却得到了下面的执行结果集 结果集中出现了不止一个1,这时因为通过这种方式得到的结果集数量是取决于T_Employee表中的 阅读全文
posted @ 2018-10-21 00:47 尐鱼儿 阅读(138) 评论(0) 推荐(0)
摘要: 有的时候我们需要组合两个完全不同的查询结果集,而这两个查询结果之间没有必然的联系,只是我们需要将他们显示在一个结果集中而已。在SQL中可以使用UNION运算符来将两个或者多个查询结果集联合为一个结果集中。 为了更好的讲解本节的内容,需要首先创建一张用来存储临时工信息的新表,在数据库系统下执行下面的S 阅读全文
posted @ 2018-10-21 00:47 尐鱼儿 阅读(147) 评论(0) 推荐(0)
摘要: 我们不仅能在SELECT语句中使用计算字段,我们同样可以在进行数据过滤、数据删除以及数据更新的时候使用计算字段,下面我们举几个例子。 计算处于合理工资范围内的员工我们规定一个合理工资范围:上限为年龄的1.8倍加上5000元,下限为年龄的1.5倍加上2000元,介于这两者之间的即为合理工资。我们需要查 阅读全文
posted @ 2018-10-21 00:46 尐鱼儿 阅读(215) 评论(0) 推荐(0)
摘要: SQL允许两个或者多个字段之间进行计算,字符串类型的字段也不例外。比如我们需要以“工号+姓名”的方式在报表中显示一个员工的信息,那么就需要把工号和姓名两个字符串类型的字段拼接计算;再如我们需要在报表中在每个员工的工号前增加“Old”这个文本。 这时候就需要我们对字符串类型的字段(包括字符串类型的常量 阅读全文
posted @ 2018-10-21 00:45 尐鱼儿 阅读(866) 评论(0) 推荐(0)
摘要: 像普通编程语言一样,SQL也支持使用函数处理数据,函数使用若干字段名或者常量值做为参数;参数的数量是不固定的,有的函数的参数为空,甚至有的函数的参数个数可变;几乎所有函数都有返回值,返回值即为函数的数据处理结果。 其实在前面的章节中我们已经用到函数了,最典型的就是“聚合函数”,“聚合函数”是函数的一 阅读全文
posted @ 2018-10-21 00:44 尐鱼儿 阅读(264) 评论(0) 推荐(0)