转换数据 SQL Sever足够强大,可以在需要的时候把大部分数值从一种类型转换为另一种类型。
例如,要比较SMALLINT型和INT型数据的大小,你不需要进行显式的类型转换。SQL Sever会为你完成这项工作。
但是,当你想在字符型数据和其它类型的数据之间进行转换时,你的确需要自己进行转换操作。 例如,假设你想从一个MONEY型字段中取出所有的值,并在结果后面加上字符串“US Dollars”。
你需要使用函数CONVERT(),如下例所示: SELECT CONVERT(CHAR (8),price)+'US Dollars' FROM orders 函数CONVERT()带有两个变量。 第一个变量指定了数据类型和长度。
第二个变量指定了要进行转换的字段。在这个例子中,字段price被转换成长度为8个字符的CHAR型字段。
字段price要被转换成字符型,才可以在它后面连接上字符串'US Dollars'。 当向BIT型,DATETIME型,INT型,或者NUMERIC型字段添加字符串时,你需要进行同样的转换操作。
例如,下面的语句在一个SELECT语句的查询结果中加入字符串'The vote is',该SELECT语句返回一个BIT型字段的值: SELECT 'The vote is'+CONVERT(CHAR (1),vote) FROM opinion 下面是这个语句的结果示例: The vote is 1 The vote is 1 The vote is 0 (3 row(s) affected) 如果你不进行显式的转换,你会收到如下的错误信息: Implicit conversion from datatype 'varchar' to 'bit' is not allowec。 Use the CONVERT function to run this query。
操作字符串数据 SQL Sever有许多函数和表达式,使你能对字符串进行有趣的操作,包括各种各样的模式匹配和字符转换。在这一节中,你将学习如何使用最重要的字符函数和表达式。
匹配通配符 假设你想建立一个与Yahoo功能相似的Internet目录。你可以建立一个表用来保存一系列的站点名称,统一资源定位器(URL),描述,和类别,并允许访问者通过在HTML form中输入关键字来检索这些内容。
假如有一个访问者想从这个目录中得到其描述中包含关键字trading card的站点的列表。 要取出正确的站点列表,你也许试图使用这样的查询: SELECT site_name FROM site_directory WHERE site_desc='trading card' 这个查询可以工作。
但是,它只能返回那些其描述中只有trading card这个字符串的站点。 例如,一个描述为We have the greatest collection of trading cards in the world!的站点不会被返回。
要把一个字符串与另一个字符串的一部分相匹配,你需要使用通配符。你使用通配符和关键字LIKE来实现模式匹配。
下面的语句使用通配符和关键字LIKE重写了上面的查询,以返回所有正确站点的名字: SELECT SITE_name FROM site_directory WHERE site_desc LIKE '%trading cark%'。
1.1 运行SQL程序 1.2 Microsoft Access1.3 Microsoft SQL Server1.3.1 SQL Server 20001.3.2 SQL Server 2005/20081.4 Oracle1.5 IBM DB21.6 MySQL1.7 PostgreSQL 2.1 表、列和行2.1.1 表2.1.2 列2.1.3 行2.2 主键2.3 外键2.4 联系2.4.1 一对一2.4.2 一对多2.4.3 多对多2.5 规范化2.5.1 第一范式2.5.2 第二范式2.5.3 第三范式2.5.4 其他范式2.6 示例数据库2.6.1 表authors2.6.2 表publishers2.6.3 表titles2.6.4 表titles_authors2.6.5 表royalties2.7 创建示例数据库 3.1 SQL语法3.2 SQL标准和一致性3.3 标识符3.4 数据类型3.5 字符串类型3.6 二进制大型对象类型3.7 精确数字类型3.8 近似数字类型3.9 布尔类型3.10 日期和时间类型3.11 时间间隔类型3.12 唯一标识符3.13 其他数据类型3.14 空值 4.1 使用SELECT和FROM检索列4.2 使用AS创建列的别名4.3 使用DISTINCT消除重复的行4.4 使用ORDER BY排序行4.5 使用WHERE筛选行4.6 使用AND、OR和NOT组合及求反条件4.6.1 AND操作符4.6.2 OR操作符4.6.3 NOT操作符4.6.4 AND、OR和NOT一起使用4.7 使用LIKE匹配模式4.8 使用BETWEEN进行范围筛选4.9 使用IN进行列表筛选4.10 使用IS NULL测试空值 5.1 创建派生列5.2 执行算术运算5.3 确定计算的顺序5.4 使用||连接串5.5 使用SUBSTRING()提取子串5.6 使用UPPER()和LOWER()更改串的大小写5.7 使用TRIM()修整字符5.8 使用CHARACTER_LENGTH()得到串长度5.9 使用POSITION()查找子串5.10 执行日期及时间间隔运算5.11 获得当前日期和时间5.12 获得用户信息5.13 使用CAST()转换数据类型5.14 使用CASE计算条件值5.15 使用COALESCE()检查空值5.16 使用NULLIF()比较表达式 6.1 使用聚合函数6.2 创建聚合表达式6.3 使用MIN()查找最小值6.4 使用MAX()查找最大值6.5 使用SUM()计算总和6.6 使用AVG()计算平均值6.7 使用COUNT()统计行数6.8 使用DISTINCT聚合不重复的值6.9 使用GROUP BY分组行6.10 使用HAVING筛选分组 7.1 限定列名7.2 使用AS创建表的别名7.3 使用联结7.4 使用JOIN或WHERE创建联结7.5 使用CROSS JOIN创建交叉联结7.6 使用NATURAL JOIN创建自然联结7.7 使用INNER JOIN创建内联结7.8 使用OUTER JOIN创建外联结7.9 创建自联结 8.1 理解子查询8.2 子查询语法8.3 子查询和联结8.4 简单子查询和相关子查询8.4.1 简单子查询8.4.2 相关子查询8.5 在子查询中限定列名8.6 子查询中的空值8.7 使用子查询作为列表达式8.8 使用比较操作符比较子查询的值8.9 使用IN测试集合成员资格8.10 使用ALL比较所有子查询的值8.11 使用ANY比较某些子查询的值8.12 使用EXISTS检测存在性8.13 比较等价查询 9.1 使用UNION合并行9.2 使用INTERSECT查找相同行9.3 使用EXCEPT查找不同行 10.1 显示表结构10.2 使用INSERT插入行10.3 使用UPDATE更新行10.4 使用DELETE删除行 11.1 创建表11.2 理解约束11.3 使用CREATE TABLE创建新表11.4 使用NOT NULL禁止空值11.5 使用DEFAULT确定默认值11.6 使用PRIMARY KEY指定主键11.7 使用FOREIGN KEY指定外键11.8 使用UNIQUE确保值唯一11.9 使用CHECK创建检查约束11.10 使用CREATE TEMPORARY TABLE创建临时表11.11 使用CREATE TABLE AS利用已存在表创建新表11.12 使用ALTER TABLE修改表11.13 使用DROP TABLE删除表 12.1 使用CREATE INDEX创建索引12.2 使用DROP INDEX删除索引 13.1 使用CREATE VIEW创建视图13.2 通过视图检索数据13.3 通过视图修改数据13.3.1 通过视图插入行13.3.2 通过视图更新行13.3.3 通过视图删除行13.4 使用DROP VIEW删除视图 15.1 动态统计15.2 产生序列15.3 发现等差数列、递增数列和等值数列15.4 限定返回行的数量15.4.1 Microsoft Access15.4.2 Microsoft SQL Server15.4.3 Oracle15.4.4 IBM DB215.4.5 MySQL15.4.6 PostgreSQL15.5 分配排名15.6 计算修整均值15.7 随机选取行15.8 处理重复值15.9 创建电话列表15.10 检索元数据15.10.1 Microsoft Access15.10.2 Microsoft SQL Server15.10.3 Oracle15.10.4 IBM DB215.10.5 MySQL15.10.6 PostgreSQL15.11 处理日期15.11.1 Microsoft Access15.11.2 Microsoft SQL Server15.11.3 Oracle15.11.4 IBM DB215.11.5 MySQL15.11.6 PostgreSQL15.12 计算中值15.13 查询极值15.14 改变动态统计的中流15.15 旋转结果15.16 处理层次结构索引。
SQL全称是「结构化查询语言(Structured Query Language)」,是数据库中使用的标准数据查询语言,IBM公司最早使用在其开发的数据库系统中,1986年10月,美国ANSI对SQL进行规范后作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准化组织的支持成为国际标准。不过各种通行的数据库系统在实现过程中都对SQL规范作了某些扩充,所以实际上不同的数据库系统的SQL语言不能完全相互通用。
SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操纵对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语言可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的一个单独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。
SQL同时也是数据库文件格式的扩展名。
SQL语言包含4个部分:
* 数据查询语言(SELECT语句)
* 数据操纵语言(INSERT, UPDATE, DELETE语句)
* 数据定义语言(如CREATE, DROP等语句)
* 数据控制语言(如COMMIT, ROLLBACK等语句)
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.031秒