摘要:
内部连接要求组成连接的两个表必须具有匹配的记录,T_Order表中的数据如下: 使用内部连接可以查询每张订单的订单号、价格、对应的客户姓名以及客户年龄,SQL语句如下: 执行以后我们在输出结果中看到下面的执行结果: 仔细观察我们可以看到T_Order表中有7行数据,而通过上面的内部连接查询出来的结果 阅读全文
摘要:
几乎所有的数据库系统都支持左外部连接和右外部连接,但是全外部连接则不是所有数据库系统都支持,特别是最常使用的MYSQL就不支持全外部连接。全外部连接是左外部连接和右外部连接的合集,因为即使在右表中不存在匹配连接条件的数据,左表中的所有记录也将被放到结果集中,同样即使在左表中不存在匹配连接条件的数据, 阅读全文
摘要:
到目前为止,我们讲解的连接都是在不同的数据表之间进行的,其实参与连接的表完全可以是同一样表,也就是表与其自身相连接,这样连接就被称为自连接。自连接并不是独立于交叉连接、内连接、外连接等这些连接方式之外的另外一种连接方式,而只是这些连接方式的一种特例,也就是交叉连接、内连接、外连接等连接方式中只要参与 阅读全文
摘要:
到目前为止,本书中所有的连接几乎都是等值连接,也就是在这种连接的ON子句的条件包含一个等号运算。等值连接是最常用的连接,因为它指定的连接条件是一个表中的一个字段必须等于另一个表中的一个字段。 处理等值连接,还存在另外一种不等值连接,也就是在连接的条件中可以使用小于(<)、大于(>)、不等于(<>)等 阅读全文
摘要:
与内连接比起来,交叉连接非常简单,因为它不存在ON子句。交叉连接会将涉及到的所有表中的所有记录都包含在结果集中。可以采用两种方式来定义交叉连接,分别是隐式的和显式的。 隐式的连接只要在SELECT语句的FROM语句后将要进行交叉连接的表名列出即可,这种方式可以被几乎任意数据库系统支持。比如下面的SQ 阅读全文
摘要:
内连接组合两张表,并且基于两张表中的关联关系来连接它们。使用内连接需要指定表中哪些字段组成关联关系,并且需要指定基于什么条件进行连接。内连接的语法如下: 其中table_name 为被关联的表名,condition则为进行连接时的条件。 下面的SQL语句检索所有的客户姓名为MIKE的客户的订单号以及 阅读全文
摘要:
使用目前所介绍的SQL知识,我们仅能够从一张数据表中检索数据,这在很多情况下是不能满足要求的,因为经常需要从多个表中进行检索才能得到想要的数据,SQL中的“表连接”就是用来解决这个问题的。表连接使用JOIN关键字将一个或者多个表按照彼此间的关系连接为一个结果集。 表连接在SQL中的地位是非常重要的。 阅读全文
摘要:
到目前为止,我们讲解的数据查询都是针对单张数据表的,但是在真实的业务系统中,各个表之间都存在这种联系,很少存在不与其他表存在关联关系的表,而在实现业务功能的时候也经常需要从多个表中进行数据的检索,而进行多表检索最常用的技术就是表连接。 为了更容易的运行本章中的例子,必须首先创建所需要的数据表,因此下 阅读全文
摘要:
第一范式要求每张表都要有主键,因此主键约束是非常重要的,而且主键约束是外键关联的基础条件。主键约束为表之间的关联提供了链接点。 主键必须能够唯一标识一条记录,也就是主键字段中的值必须是唯一的,而且不能包含NULL 值。从这种意义上来说,主键约束是UNIQUE 约束和非空约束的组合。虽然一张表中可以有 阅读全文
摘要:
当一些信息在表中重复出现的时候,我们就要考虑要将它们提取到另外一张表中了,然后在源表中引用新创建的中的数据。比如很多作者都著有不止一本著作,所以在保存书籍信息的时候,应该把作者信息放到单独的表中,创建表的SQL语句如下: 表T_AUTHOR是作者信息表,FId字段为主键,FName字段为作者姓名,F 阅读全文
摘要:
唯一约束又称为UNIQUE约束,它用于防止一个特定的列中两个记录具有一致的值,比如在员工信息表中希望防止两个或者多个人具有相同的身份证号码。唯一约束分为单字段唯一约束与复合唯一约束两种类型,下面分别介绍。 如果希望一个字段在表中的值是唯一的,那么就可以将唯一约束设置到这个字段上,设置方式就是在字段定 阅读全文
摘要:
CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK条件中使用任意有效的SQL表达式,CHECK约束对于插入、更新等任何对数据进行变化的操作 阅读全文
摘要:
在定义数据表的时候,默认情况下所有字段都是允许为空值的,如果需要禁止字段为空,那么就需要在创建表的时候显示指定。指定一个字段为空的方式就是在字段定义后增加NOT NULL,比如下面的SQL语句创建了表T_Person,并且设置FNumber 字段不允许为空: 创建T_Person表后我们执行下面的S 阅读全文
摘要:
使用CREATE TABLE语句创建数据表的时候,通过定义一个字段的类型,我们规范了一个字段所能存储的数据类型,但是在有的情况下这种类型的约束是远远不够的。加入一个用户向T_Person表中录入数据,由于疏忽它录入的数据中有一条记录中的FName字段忘记了填入数据,这就造成了一个没有名字的人员的出现 阅读全文
摘要:
前面的章节我们讲解了数据表的创建以及数据的增删改查,掌握了这些知识我们已经可以对数据库进行基本的操作了,但是在使用一段时间后我们就发现很多问题,比如按照年龄进行数据检索的时候速度非常快但是按照姓名进行数据检索的时候则非常慢、一个人的姓名不应该是未知的但是还是录入了大量的值为NULL的姓名到系统中、注 阅读全文
摘要:
各个数据库系统中提供的修改表结构的方法是不同的,有的提供了修改表名、修改字段类型、修改字段名称等操作的SQL语句,而有的则没有提供这些功能,甚至有的数据库系统连删除字段的功能都不支持。但是这些操作有的时候又是必要的,那么有没有变通的手段来实现这些功能呢?答案是有! 在DB2中如果要在表T中删除一个字 阅读全文
摘要:
当一个数据表不再有用的时候我们就可以将其删除,使用DROP TABLE 语句就可以完成这个功能,DROP TABLE 语句的语法如下: 可以看到DROP TABLE 语句语法非常简单,只要指定要删除的表名就可以了。执行下面的SQL就可以将T_Person表删除了: 需要注意的是,如果在表之间创建了外 阅读全文
摘要:
外键是非常重要的概念,也是体现关系数据库中“关系”二字的体现,通过使用外键,我们才能把互相独立的表关联起来,从而表达丰富的业务语义。 外键是定义在源表中的,定义位置同样为所有字段定义的后面,使用FOREIGN KEY关键字来定义外键字段,并且使用REFERENCES关键字来定义目标表名以及目标表中被 阅读全文
摘要:
通过 CREATE TABLE 语句创建的数据表的结构并不是永远不变的,很多因素决定我们需要对数据表的结构进行修改,比如我们需要在T_Person表中记录一个人的个人爱好信息,那么就需要在T_Person中增加一个记录个人爱好的字段,再如我们不再需要记录一个人的年龄,那么我们就可以将FAge字段删除 阅读全文
摘要:
通过主键能够唯一定位一条数据记录,而且在进行外键关联的时候也需要被关联的数据表具有主键,所以为数据表定义主键是非常好的习惯。在CREATE TABLE 中定义主键是通过PRIMARY KEY 关键字来进行的,定义的位置是在所有字段定义之后。比如我们为公交车建立一张数据表,这张表中有公交车编号FNum 阅读全文