MySQL数据库技术(10)

2016-02-19 20:35 5 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享MySQL数据库技术(10),希望可以对大家能有小小的帮助。

【 tulaoshi.com - 编程语言 】

  2.4 表达式求值和类型转换

    MySQL 允许编写包括常量、函数调用和表列引用的表达式。这些值可利用不同类型的运算符进行组合,诸如算术运算符或比较运算符。表达式的项可用圆括号来分组。表达式在SELECT 语句的列选择列表和WHERE 子句中出现得最为频繁,如下所示:

    所选择的每列给出了一个表达式,如WHERE 子句中所示的那样。表达式也出现在DELETE 和U P D ATE 语句的WHERE 子句中,以及出现在I N S E RT 语句的VALUES( ) 子句中。

    在MySQL 遇到一个表达式时,它对其求值得出结果。例如, (4 * 3)/(4 - 2) 求值得6。表达式求值可能涉及类型转换。例如, MySQL 在数960821 用于需要日期值的环境时,将其转换为日期“ 1 9 9 6 - 0 8 - 2 1”。本节讨论怎样编写MySQL 的表达式,以及在表达式求值中MySQL 所使用的类型转换规则。每个MySQL 的运算符都介绍过了,但MySQL 有那么多的函数,我们只接触过几个。每个运算符和函数的进一步介绍可参阅附录C。

2.4.1 撰写表达式

    表达式可以只是一个简单的常量,如:

    0 数值常量

    “a b c” 串常量

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

    表达式可以进行函数调用。有的函数需要参数(圆括号中有值),而有的不需要。多个参数应该用逗号分隔。在调用一个函数时,参数旁边可以有空格,但在函数名与圆括号间不能有空格。下面是一些函数例子:

  NOW( ) 无参数函数
    STRCMP (“a b c”, “d e f”) 有两个参数的函数
    STRCMP( “a b c”, “d e f”) 参数旁边有空格是合法的
    STRCMP (“a b c”, “d e f”) 函数名后跟空格是不合法的

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

    如果函数名后有一个空格, MySQL 的分析程序可能会将函数名解释为一个列名(函数名不是保留字,如果需要的话,可将它们用作列名)。其结果是出现一个语法错误。表达式中可使用表列。最简单的情形是,当某个列所属的表在上下文中是明确的,则可简单地给出列名对该列进行引用。下面的每个SELECT 语句中惟一地出了一个表名,因此,列的引用无歧义:

    如果使用哪个表的列不明确,可在列名前加上表名。如果使用哪个数据库中的表也不明确的话,可在表名前加上数据库名。如果只是希望意思更明显,也可以在无歧义的上下文中利用这种更为具体的表示形式,如:

    总之,可以组合所有这些值以得到更为复杂的表达式。

    1. 运算符的类型

    MySQL 有几种类型的运算符,可用来连接表达式的项。算术运算符,如表2-15 所示,一般包括加、减、乘、除以及模运算符。在两个操作数都是整数时,“+”、“-”和“ *”算术运算用BIGINT(64 位)整数值来完成。而在结果预期为一个整数时,“/”和“%”也是用BIGINT(64 位)整数值来完成的。应该认识到,如果某个运算涉及更大的值,如结果超过64 位,其结果不可预料。

    MySQL 为进行运算,将“ a b c”和“d e f”转换为整数,且两者都转换为0, 0与0进行或运算,结果为0。在MySQL 中,必须用CONCAT (“a b c”, “d e f”) 来完成串的连接。

    位运算符如表2-17 所示,完成按位“与”和“或”,其中结果的每一位按两个操作数的对应位的逻辑AND 或OR 求值。还可以进行位的左移或右移。位运算用BIGINT(64 位)整数值进行。

    比较运算符如表2-18 所示,其中包括测试相对大小或数和串的顺序的运算符,以及完成模式匹配和测试NULL 值的运算符。“ = ”运算符是MySQL 特有的,在MySQL 3.23版本中引入。

  自MySQL 3.23版本起,可使用B I N A RY 运行符,此运算符可用来将一个串转换为一个二进制串,这个串在比较中是区分大小写的。下列的第一个比较是不区分大小写的,但第二个和第三个比较是区分大小写的:

来源:http://www.tulaoshi.com/n/20160219/1624035.html

延伸阅读
6.4 客户机程序3—产生连接代码模块     对于我们的第三个客户机程序,即客户机程序3,通过将它封装到函数do_connect() 和do_disconnect() 中,将使连接和断开代码更加模块化,这样可以很容易地由多个客户机程序使用。这提供一种选择,可将连接代码精确地嵌入到main() 函数中。无论如何,对在应用程序过程中套用老调的任何...
6.7 客户机程序5—交互式查询程序     让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序。它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用前面研究过的显示格式process_result_set() 显示查询结果。     客户机程序5在某些方面与mysql 类似,虽...
    3.6 检索记录     除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是SELECT 语句的用途,即帮助取出数据。SELECT 大概是SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。SELECT 语句的语法如下: &nbs...
6.8 其他主题     本节包括几个主题,这些主题不完全适合于本章从client1 到client5 的开发中的任一小节的内容:     ■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果。     ■ 如何处理很难插入到查询中的数据。     ■ 如何处理图形数...
    关系数据库的世界是一个表与集合、表与集合上的运算占统治地位的世界。数据库是一个表的集合,而表又是行和列的集合。在发布一条SELECT 查询从表中进行检索行时,得到另一个行和列的集合。这些都是一些抽象的概念,对于数据库系统用来操纵表中数据的基本表示没有多少参考价值。另一个抽象概念是,表上的运算都同时进行;查...

经验教程

144

收藏

15
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部