摘要:
无索引的表就是一个无序的行集。比如下面的人员表中有一些数据: 这个表上没有索引,因此如果我们查找年龄等于17的人员时,必须查看表中的每一行,看它是否与所需的值匹配。这是一个全表扫描,很慢,如果表中只有少数几个记录与搜索条件相匹配,则其效率是相当低的。 如果我们经常要查询某个年龄的人员,必须查看表中的 阅读全文
posted @ 2018-10-19 23:58
尐鱼儿
阅读(376)
评论(0)
推荐(0)
摘要:
我们来为货物建一张表,其中包含规格、名称、生产厂家等等信息,如下: 可以看到这里存在大量冗余信息,比如厂家的名称、地址、电话等就在表中重复多次, 这会带来如下的问题: 1,信息冗余占据空间。数据的存储是占据一定的空间的,如果存在过多冗余信息将会使得存储系统的利用率过低。 2,信息冗余使得新数据的加入 阅读全文
posted @ 2018-10-19 23:58
尐鱼儿
阅读(278)
评论(0)
推荐(0)
摘要:
记录有可以被称为行(Row),可以通俗的认为它是数据表中的一行数据。以员工表为例,一个公司的员工表中的数据是这样的: 这里每一行数据就代表一个员工的资料,这样的一行数据就叫做一条记录。表是由行和列组成的一张二维表,这就是关系数据库中最基本的数据模型。 阅读全文
posted @ 2018-10-19 23:57
尐鱼儿
阅读(676)
评论(0)
推荐(0)
摘要:
员工表中的每一行记录代表了一个员工,一般员工的名字就能唯一标识这一个员工,但 是名字也是有可能重复的,这时我们就要为每一名员工分配一个唯一的工号: 这样就可以通过这个工号来唯一标识一名员工了。当老板下令说“把王二小提升为副总”的时候,我们就要问“公司有两个王二小,您要提升哪一个?”,老板可以说“技术 阅读全文
posted @ 2018-10-19 23:57
尐鱼儿
阅读(1587)
评论(0)
推荐(0)
摘要:
上面我们为员工表规定了“姓名”、“部门”和“入职时间”三个列,这样只要按照这个格式进行数据填写就可以了,但是这里仍然有一个问题,那就是我们没法限定用户向表中填写什么数据,比如用户填写成下面的格式: 姓名 33 部门 12.3 入职时间 信息中心 显然姓名不应该为一个数字33;不可能有一个名称为“12 阅读全文
posted @ 2018-10-19 23:55
尐鱼儿
阅读(142)
评论(0)
推荐(0)
摘要:
同样是生肉,不同的生肉又有不同的特性,有的生肉是里脊肉,有的生肉是前臀尖,这块生肉是18公斤,而那块生肉是12公斤,这块生肉是12.2 元/公斤,而那块生肉是13.6 元/公斤。每块肉都有各自的不同的特性,这些特性包括取肉部位、重量、单价。如果不对每块肉标注这些特性数据的话,当提货人要我们将所有里脊 阅读全文
posted @ 2018-10-19 23:54
尐鱼儿
阅读(896)
评论(0)
推荐(0)
摘要:
虽然我们已经将不同用途的物品保存在不同的仓库中了,但是在同一个仓库中数据的保存仍然存在问题。比如食品分为熟食、生肉、大米等,如果把他们随意的堆放在一起,就会造成我们无法很容易的对这些食品进行管理,当要对大米进行提货的话就必须在一堆的食品中翻来翻去。解决这个问题的方法就是将仓库划分为不同的区域,熟食保 阅读全文
posted @ 2018-10-19 23:52
尐鱼儿
阅读(423)
评论(0)
推荐(0)
摘要:
数据库就是数据的仓库,而DBMS是数据库的“管理员”。一些企业即生产食品又生产农用物资,这些产品都要保存到仓库中,同时企业内部也有一些办公用品需要保存到仓库中。 如果这些物品都保存到同一个仓库中的话会造成下面的问题: l,不便于管理。食品的保存和复印纸的保存需要的保存条件是不同的,食品需要低温保鲜而 阅读全文
posted @ 2018-10-19 23:49
尐鱼儿
阅读(681)
评论(0)
推荐(0)
摘要:
目前有许多DBMS产品,如DB2、Oracle、Microsoft SQL Server、Sybase SQLServer、Informix、MySQL等,它们在数据库市场上各自占有一席之地。下面简要介绍几种常用的数据库管理系统。 (1)DB2 DB2第一种使用使用SQL的数据库产品。DB2 于19 阅读全文
posted @ 2018-10-19 23:48
尐鱼儿
阅读(2866)
评论(0)
推荐(0)
摘要:
子查询在DELETE 中唯一可以应用的位置就是WHERE 子句,使用子查询可以完成复杂的数据删除控制。其使用方式与SELECT 语句中的子查询基本相同,而且也可以使用相关子查询等高级的特性。下面的SQL语句用来将所有同类书本书超过3 本的图书删除: 上面的SQL 语句使用相关子查询来查询所有与待更新 阅读全文
posted @ 2018-10-19 01:02
尐鱼儿
阅读(2101)
评论(0)
推荐(0)
摘要:
在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询。下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下: 注意,在MYSQL 中是不支持使用子查询来更新一个列的,所以这个UPDATE 语句无法在MYSQL中执行。 执行完毕查看T_Book表中的内容: 如果U 阅读全文
posted @ 2018-10-19 01:01
尐鱼儿
阅读(1482)
评论(0)
推荐(0)
摘要:
在使用INSERT语句的时候,一般都是使用它向数据库中一条条的插入数据,比如: 但是有时我们可能需要将数据批量插入表中,比如创建一个和T_ReaderFavorite表结构完全相同的表T_ReaderFavorite2,然后将T_ReaderFavorite 中的输入复制插入到T_ReaderFav 阅读全文
posted @ 2018-10-19 01:00
尐鱼儿
阅读(3578)
评论(0)
推荐(0)
摘要:
ALL在英文中的意思是“所有”,ALL运算符要求比较的值需要匹配子查询中的所有值。ALL运算符同样不能单独使用,必须和比较运算符共同使用。 下面的SQL语句用来检索在所有会员入会之前出版的图书: 执行完毕我们就能在输出结果中看到下面的执行结果: 与ANY 运算符相同,ALL 运算符同样不能与固定的集 阅读全文
posted @ 2018-10-19 00:59
尐鱼儿
阅读(499)
评论(0)
推荐(0)
摘要:
和IN、ANY、ALL等运算符不同,EXISTS运算符是单目运算符,它不与列匹配,因此它也不要求待匹配的集合是单列的。EXISTS运算符用来检查每一行是否匹配子查询,可以认为EXISTS就是用来测试子查询的结果是否为空,如果结果集为空则匹配结果为false,否则匹配结果为true。 先来看一个简单的 阅读全文
posted @ 2018-10-19 00:59
尐鱼儿
阅读(550)
评论(0)
推荐(0)
摘要:
在SQL中ANY和SOME是同义词,所以下面介绍的时候只使用ANY,SOME的用法和功能和ANY一模一样。和IN运算符不同,ANY必须和其他的比较运算符共同使用,而且必须将比较运算符放在ANY 关键字之前,所比较的值需要匹配子查询中的任意一个值,这也就是ANY在英文中所表示的意义。 首先看一个ANY 阅读全文
posted @ 2018-10-19 00:58
尐鱼儿
阅读(1028)
评论(0)
推荐(0)
摘要:
在前面已经介绍了IN运算符的简单使用,使用IN运算符可以用来匹配一个固定集合中的某一项。比如下面的SQL语句检索在2001、2003和2005年出版的所有图书: 执行完毕我们就能在输出结果中看到下面的执行结果: 这里进行匹配的集合是已经确定的集合“2001,2003,2005”,如果要匹配的集合是动 阅读全文
posted @ 2018-10-19 00:57
尐鱼儿
阅读(609)
评论(0)
推荐(0)
摘要:
标量子查询不仅可以用在SELECT 语句的列表中,它还可以用在WHERE 子句中,而且实际应用中子查询很多的时候都是用在WHERE子句中的。 先来看一个简单的例子,我们要检索喜欢“Story”的读者主键列表,那么这可以使用连接来完成,不过这里我们将使用子查询来完成。 使用子查询的实现思路也比使用连接 阅读全文
posted @ 2018-10-19 00:56
尐鱼儿
阅读(710)
评论(0)
推荐(0)
摘要:
与标量子查询不同,列值子查询可以返回一个多行多列的结果集。这样的子查询又被称为表子查询,表子查询可以看作一个临时的表,表子查询可以用在SELECT 语句的FROM子句中、INSERT语句、连接、IN 子句等很多场合。 首先来看一个在FROM子句中使用的最简单的表子查询。SQL语句如下: 这里将T_R 阅读全文
posted @ 2018-10-19 00:55
尐鱼儿
阅读(635)
评论(0)
推荐(0)
摘要:
我们讲到可以将标量子查询当成SELECT列表中的一个列,唯一的约束就是子查询的返回值必须只有一行记录,而且只能有一个列。看完上章的例子有的读者可能认为标量子查询只能返回唯一的值,其实标量子查询完全可以返回随当前查询记录而变化的值。比如下面的SQL语句可以清楚的说明这一点: 这个SELECT语句首先检 阅读全文
posted @ 2018-10-19 00:55
尐鱼儿
阅读(1193)
评论(0)
推荐(0)
摘要:
单值子查询的语法和普通的SELECT语句没有什么不同,唯一的限制就是子查询的返回值必须只有一行记录,而且只能有一个列。这样的子查询又被称为标量子查询,标量子查询可以用在SELECT语句的列表中、表达式中、WHERE 语句中等很多场合。 首先来看一个在SELECT语句列表中使用的最简单的标量子查询。S 阅读全文
posted @ 2018-10-19 00:54
尐鱼儿
阅读(635)
评论(0)
推荐(0)
摘要:
SQL语句允许将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询。所有可以使用表的地方几乎都可以使用子查询来代替,比如SELECT FROM T 中就可以用子查询来代替表T,比如SELECTFROM(SELECT FROM T2 where F 阅读全文
posted @ 2018-10-19 00:53
尐鱼儿
阅读(211)
评论(0)
推荐(0)
摘要:
前边我们讲解了一些常用的函数,这些函数不是在各个主流数据库系统中有着相同的名称和用法,就是在各个主流数据库系统中有等价的实现,这些函数可以基本满足我们大部分需求。不过在各个主流数据库系统还提供了一些自身独有的函数,这些函数在其他的数据库系统中一般都没有等价的实现,使用这些函数以后会给系统的跨数据库移 阅读全文
posted @ 2018-10-19 00:38
尐鱼儿
阅读(792)
评论(0)
推荐(0)
摘要:
日期时间类型的数据也是经常用到的,比如员工出生日期、结账日期、入库日期等等,而且经常需要对这些数据进行处理,比如检索所有超过保质期的商品、将结账日期向后延迟3天、检索所有每个月18日的入库记录,进行这些处理就需要使用日期时间函数。SQL中提供了丰富的日期时间函数用于完成这些功能,本节将对这些日期时间 阅读全文
posted @ 2018-10-19 00:37
尐鱼儿
阅读(261)
评论(0)
推荐(0)
摘要:
除了数学函数、字符串函数、日期函数之外,数据库中还有其他一些函数,比如进行类型转换的函数、进行非空逻辑判断的函数等,这些函数也是非常重要的,因此在本节中我们将对这些函数进行介绍。 类型转换 在使用SQL语句的时候,我们使用的数据的类型不一定符合函数或者运算符的需要,比如函数需要整数类型的数据而我们使 阅读全文
posted @ 2018-10-19 00:37
尐鱼儿
阅读(351)
评论(0)
推荐(0)
摘要:
除了数值类型的数据,字符串类型的数据也是数据库系统中经常用到的数据类型,比如用户的密码、电子邮箱地址、证件号码等都是以字符串类型保存在数据库中的。我们经常需要对这些数据进行一些处理,比如截取身份证号码前5位、将电子邮箱地址全部改为大写、去掉用户名中的空格,SQL 中提供了丰富的字符串函数用于完成这些 阅读全文
posted @ 2018-10-19 00:36
尐鱼儿
阅读(447)
评论(0)
推荐(0)
摘要:
SQL中可供使用的函数是非常多的,这些函数的功能包括转换字符串大小写、求一个数的对数、计算两个日期之间的天数间隔等,数量的掌握这些函数将能够帮助我们更快的完成业务功能。本章将讲解这些函数的使用,并且对它们在不同数据库系统中的差异性进行比较。为了更容易的运行本章中的例子,必须首先创建所需要的数据表,因 阅读全文
posted @ 2018-10-19 00:32
尐鱼儿
阅读(204)
评论(0)
推荐(0)
摘要:
SQL标准中只规定了4个数学函数,不过很多主流的数据库系统都提供了大量常用的数学函数,而且几乎所有的数据库系统都对它们提供了支持,因此这里我们有必要对这些函数进行详细的介绍。 求绝对值 ABS()函数用来返回一个数值的绝对值。该函数接受一个参数,这个参数为待求绝对值的表达式。执行下面的SQL语句: 阅读全文
posted @ 2018-10-19 00:32
尐鱼儿
阅读(362)
评论(0)
推荐(0)
摘要:
由于不同数据库系统的语法有差异,所以如果想要开发的系统能够运行于多数据库系统下就必须通过一定的方法来消除这些差异性。消除差异性的主要方法有: 为每种数据库编写不同的SQL语句;使用语法交集;使用抽象SQL;使用ORM工具;使用SQL翻译器。 下面对这几种方案进行分析。 为每种数据库编写不同的SQL语 阅读全文
posted @ 2018-10-19 00:26
尐鱼儿
阅读(837)
评论(0)
推荐(0)
摘要:
MYSQL中取得指定表的字段定义(假设表名为mytable): MYSQLServer中取得指定表的字段定义(假设表名为mytable): Oracle中的all_tab_columns表是系统中所有表的字段定义,其中TABLE_NAME字段为表名,因此取得指定表的字段定义(假设表名为mytable 阅读全文
posted @ 2018-10-19 00:25
尐鱼儿
阅读(836)
评论(0)
推荐(0)
摘要:
MYSQL中取得指定Schema下所有表定义的SQL语句如下(假设Schema名为demoschema): MSSQLServer中的系统表sysobjects中记录了当前系统中定义的对象,其中xtype字段等于U的记录为表定义,因此取得当前数据库中所有表定义的SQL语句如下(假设Schema名为d 阅读全文
posted @ 2018-10-19 00:24
尐鱼儿
阅读(944)
评论(0)
推荐(0)
摘要:
MYSQL中取得当前数据库中所有表定义的SQL语句如下: MSSQLServer中的系统表sysobjects中记录了当前系统中定义的对象,其中xtype字段等于U的记录为表定义,因此取得当前数据库中所有表定义的SQL语句如下: Oracle中的系统表all_objects中记录了当前系统中定义的对 阅读全文
posted @ 2018-10-19 00:23
尐鱼儿
阅读(129)
评论(0)
推荐(0)
摘要:
MYSQL中可以通过函数来取得数据库的信息,包括当前数据库名、版本、当前登录用户等信息:DATABASE()函数返回当前数据库名;VERSION()函数以一个字符串形式返回MySQL 服务器的版本;USER()函数(这个函数还有SYSTEM_USER、SESSION_USER两个别名)返回当前MyS 阅读全文
posted @ 2018-10-19 00:22
尐鱼儿
阅读(352)
评论(0)
推荐(0)
摘要:
索引的定义在各个数据库系统中基本相同,但是删除索引的语法则各有不同,比如删除T_Person表中定义的名称为idx1的索引在不同数据库系统下的SQL语句如下: 阅读全文
posted @ 2018-10-19 00:21
尐鱼儿
阅读(461)
评论(0)
推荐(0)
摘要:
不同数据库系统对函数的差异是非常大的,不仅同样功能的函数在不同数据库系统中的名称不同,而且一些高级的函数也并不是在所有数据库系统中都有提供支持。比如将一个字符串转换为小写的函数在MYSQL,MSSQLServer 和Oracle 中为LOWER,而在DB2 中则为LCASE;MYSQL 中支持IF 阅读全文
posted @ 2018-10-19 00:20
尐鱼儿
阅读(422)
评论(0)
推荐(0)
摘要:
在实现分页检索、排行榜等功能的时候,需要限制检索的结果集行数,不同的数据库系统对此的支持是不同的。 MYSQL中提供了LIMIT关键字用来限制返回的结果集,比如: MSSQLServer:MSSQLServer中提供了TOP关键字用来返回结果集中的前N条记录,比如: 在MSSQLServer2005 阅读全文
posted @ 2018-10-19 00:20
尐鱼儿
阅读(223)
评论(0)
推荐(0)
摘要:
整数类型:在MYSQL中整数相关的类型有tinyint、smallint、mediumint、int、integer和bigint;在MSSQLServer中整数相关的类型有bit、int、smallint、tinyint 和bigint;在Oracle中整数相关的类型有number;在DB2中整数 阅读全文
posted @ 2018-10-19 00:18
尐鱼儿
阅读(293)
评论(0)
推荐(0)
摘要:
在不同的数据库系统中字符串拼接的方式是不同的,下面的主流数据库系统对字符串拼接的支持: MYSQL:在MYSQL 中进行字符串的拼接要使用CONCAT 函数,CONCAT 函数支持一个或者多个参数,比如CONCAT("Hello",1,"World");MYSQL 中还提供了另外一个进行字符串拼接的 阅读全文
posted @ 2018-10-19 00:18
尐鱼儿
阅读(111)
评论(0)
推荐(0)
摘要:
现在市场上存在很多厂商推出的数据库管理系统,商业化的有Oracle、MSSQLServer、DB2、SybaseSQLServer、Informix,开源的有MYSQL、SQLite、SimpleSQL、Berkely DB、Minosse、Firebird、HSQLDB等,这些数据库产品的出现给了 阅读全文
posted @ 2018-10-19 00:17
尐鱼儿
阅读(141)
评论(0)
推荐(0)

浙公网安备 33010602011771号