配色: 字号:
《MySQL 8.0数据库管理与应用》第5章 MySQL语言
2023-05-25 | 阅:  转:  |  分享 
  
第5章 MySQL语言5.1.1 常量1. 字符串常量字符串是用单引号“''”或双引号“"”引起来的字节或字符的序列。例如:''This i
s a string.'' "This is a string.“ 转义字符是反斜线(\)开头的字符序列。MySQL可识别的字符串
转义序列在表5.1中列出。5.1 常量和变量5.1.1 常量2. 数值常量数值常量分为整数常量和浮点数常量。整数常量用一系列阿
拉伯数字表示。浮点数常量使用“.”作为小数点。两种类型的数值均可以在前面加一个“-”符号来表示负值。例如:12213,+3911,
0,-32,+123456789,-21474836483. 十六进制常量十六进制常量可以表示为X''val''或0xval形式,其中
val包含十六进制数字(0~9,A~F)。数字中的字母和前导字符X都不区分大小写。但前导字符0x区分大小写,不能写为0X。例如:X
''01AF'',X''01af'',x''01AF'',x''01af'',0x01AF,0x01af4. 日期时间常量日期型常量的数据类型为D
ATE,其中包括年、月、日3个部分,可以用''2019-07-01''之类的日期字符串来表示。时间型常量的数据类型为TIME,其中包括
小时数、分钟数、秒数以及微秒数4个部分,可以用''21:01:16.00026''之类的时间字符串来表示。日期时间型常量的类型为DAT
ETIME或TIMESTAMP,其中包括日期和时间两个部分,可以用''2019-07-01 21:07:36''之类的日期时间字符串来
表示。DATETIME与TIMESTAMP的区别在于:DATETIME的年份范围为1000~9999,TIMESTAMP的年份范围
则为1970~2037;此外,TIMESTAMP还支持时区,并且会忽略时间中的微秒部分。5.1 常量和变量5.1.1 常量5.
位值常量位值常量使用b''val''或0bval形式表示,其中val是使用0和1表示的二进制值。前导字符0b是区分大小写的,不能写成
0B。例如:b''01'',B''01'',0b016. 布尔常量布尔常量有两个可能值:TRUE和FALSE,其中TRUE的数字值等于1,
FALSE的数字值等于0。这两个常量的名称不区分大小写,写成大写、小写或首字符大写都可以。7. NULL值NULL值表示“没有数据
”。NULL值不区分大小写,可以写成NULL、Null或null。NULL值与数值类型的值(如0)或字符串类型的空字符串("")不
同。当使用ORDER BY查询结果进行排序时,升序排序中NULL值位于其他值之前,降序排序中NULL值位于其他值之后。5.1 常
量和变量5.1.2 变量1. 用户变量使用SET语句对一个或多个用户变量进行初始化:SET @var_name = 表达式 [,
@var_name = 表达式] ...也可以使用SELECT语句来为用户变量分配一个值。此时赋值运算符必须使用“:=”,而不能
使用“=”。2. 系统变量MySQL服务器维护两种系统变量,即全局变量和会话变量,其中全局变量影响服务器整体操作,会话变量则影响具
体客户端连接的操作。设置全局变量的值时应使用GLOBAL关键字或@@global.前缀设置会话变量的值时应使用SESSION关键字
或@@session.前缀,也可以什么都不添加检索所有全局变量的清单:SHOW GLOBAL VARIABLES;检索所有会话变量
的清单:SHOW SESSION VARIABLES;5.1 常量和变量5.2.1 算术运算符算术运算符用于对两个表达式进行数
学运算,这两个表达式的值可以是任何数字数据类型。MySQL提供的算术运算符,包括:+(加法)、-(减法)、(乘法)、/(除法)、
DIV(整除)以及%(求余),其中求余运算符%用于计算两个相除得到的余数,也可以写成MOD。加法运算符“+”:用于计算两个或多个值
相加得到的和,也可以用于对日期时间值进行算术运算。减法运算符“-”:用于计算两个值相减得到的差。与加法运算符一样,减法运算符也可以
用于对日期时间值进行运算。乘法运算符“”:用于计算两个或多个值相乘得到的积。除法运算符:包括“/”和DIV。其中“/”用于计算两
个数相除得到的商,包括小数部分在内;DIV也用于计算两个数相除得到的商,但只取整数部分。在除法运算中,不允许以0作为除数,如果以0
作为除数,则返回NULL。求余运算符:包括“%”和MOD,它们的作用完全相同。与除法运算一样,在求余运算中也不允许以0作为除数,如
果以0作为除数,则返回NULL。5.2 运算符和表达式5.2.2 比较运算符等于运算符“=”:用于比较两个表达式的值是否相等,
如果相等则返回1,否则返回0,如果两个表达式中有一个为NULL,则返回NULL。等于运算符可以用于比较两个数字表达式,也可以用于比
较两个字符串表达式。比较字符串时是不区分大小的,如果要区分大小写,则需要使用BINARY关键字。不等于运算符:包括“<>”和“!=
”,它们的作用完全相同。不等于运算符用于比较两个表达式是否不相等,如果不相等则返回1,否则返回0,如果两个表达式中有一个为NULL
,则返回NULL。 其他比较运算符:“>”、“>=”、“<”、“<=”运算符用于比较左边表达式的值是否大于、大于或等于、小于、小于
或等于右边表达式的值,如果关系成立则返回1,否则返回0,如果两个表达式中有一个为NULL,则返回NULL。这些运算符可以用于比较数
字和字符串。5.2 运算符和表达式5.2.3 逻辑运算符逻辑非运算符:包括“NOT”和“!”两种形式,它们的作用完全相同。逻辑
非运算符是一个单目运算符,即只有一个操作数。如果操作数为0,则结果为1;如果操作数不为0,则结果为0,NOT NULL返回NULL
。 逻辑与运算符:包括“AND”和“&&”两种形式,它们的作用完全相同。逻辑与运算符用于测试两个或多个操作数的有效性,如果所有操作
数都不为零且不为NULL,则结果为1,如果一个或多个操作数为0,则结果为0;如果任一操作数为NULL,则返回NULL。逻辑或运算符
:包括“OR”和“||”两种形式,它们的作用完全相同。当两个操作数都不是NULL时,如果任何操作数非零,则结果为1,否则为0。使用
NULL操作数时,如果另一个操作数非零,则结果为1,否则为NULL。如果两个操作数均为NULL,结果为NULL。逻辑异或运算符“X
OR”:用于测试两个操作数的值。其运算规则如下:如果任一操作数为NULL,则返回NULL。对于非NULL操作数,如果奇数个操作数非
零,则结果为1;否则结果为0。5.2 运算符和表达式5.2.4 位运算符位取反运算符“~”:是一个一元运算符,其功能是对运算对
象按二进制位逐位执行取反操作,即1变0,0变1,并返回一个64位整型数。位与运算符“&”:用于对两个操作数按二进制位执行逐位执行与
运算,即两个对应位同时为1则结果为1,两个对应位只要一个为0则结果为0。位与运算符“|”:用于对两个操作数按二进制位执行逐位执行或
运算,即两个对应位只要有一个为1则结果为1,两个对应位同时为0则结果为0。位与运算符“^”:用于对两个操作数按二进制位执行逐位执行
异或运算,即两个对应位上的数字相等时结果为0,两个对应位上的数字不相等时结果为1。位右移运算符“>>”:将左操作数的各个二进制位向
右移动,移动的位数由右操作指定,向右移动一位相当于除以2,移动后左边的空位补0,一个数向右移动n位相当于对这个数除以2n。位右移运
算符“<<”:将左操作数的各个二进制位向左移动,移动的位数由右操作指定,向左移动一位相当于乘以2,移动后左边的空位补0,一个数向左
移动n位相当于对这个数乘以2n。5.2 运算符和表达式5.2.5 运算符优先级当一个表达式包含多个运算符时,运算的先后顺序取决
于运算符的优先级,运算的顺序将对运算结果产生影响。下面由低到高的顺序列出了运算符的优先级,排列在同一行的运算符具有相同的优先级。B
INARY,COLLATE!-(一元运算符,负号),~(一元运算符,位取反)^,/,DIV,%,MOD-,+<<,>>&|=(比
较运算符,相等),<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,INBETWEEN,CASE,WHEN,T
HEN,ELSENOTAND,&&XOROR,||=(赋值运算符),:=5.2 运算符和表达式5.2.6 表达式表达式是由常量
、变量、列名、函数和运算符组合而成的式子。一个表达式通常可以计算出一个值,该值称为表达式的值。与常量和变量一样,表达式也具有某种数
据类型,可能的数据类型包括字符串型、数值型以及日期时间型。根据表达式的值的数据类型,可以将表达式分为字符串表达式、数值表达式和日期
时间表达式。表达式的值有各种形式,可以一个值,也可以是一组值。如果表达式的值可以是一个值,例如一个字符串、一个数值或一个日期,则这
种表达式称为标量表达式。例如,1+23、''MySQL'' 以及 ''A''>=''B'' 等都是标量表达式。如果表达式的值是由不同数据类型
组成的一行值,则这种表达式称为行表达式。例如,下面的数据表示一条学生记录,这就是一个行表达式:''18161001'', ''张三'',
''男'', ''1999-09-09'', ''数学'', 800.4+920.6如果表达式是由0个、1个或多个行表达式构成的集合,则这
种表达式称为表表达式。在MySQL中,表达式一般用于SELECT语句的输出列表和WHERE子句中。5.2 运算符和表达式5.3.
1 数学函数数学函数用于执行各种数学运算,例如计算三角函数、指数函数以及对数函数的值等等。如果在调用数学函数的过程中出现错误,则
所有数学函数将返回NULL值。5.3 系统内置函数5.3.2 字符串函数字符串函数主要用于处理数据库中的字符串数据,例如计算字
符串长度、合并字符串、替换字符串以及提取子字符串等。5.3 系统内置函数5.3.3 日期时间函数日期和时间函数主要用于处理日期
和时间数据。用于处理日期值的函数通常会接受日期时间值而忽略时间部分,而用于时间值的函数通常接受日期时间值而忽略日期部分。此外,许多
日期函数还可以接受数值和字符串类型的参数。5.3 系统内置函数5.3.5 系统信息函数MySQL提供了一些系统信息函数,可以用
来获取MySQL服务器的版本号、当前连接的用户和数据库以及字符串的字符集和排序方式等信息。5.3 系统内置函数5.3.4 流程
控制函数1. IF()函数IF(表达式1, 表达式2, 表达式3)2. IFNULL()函数IFNULL(表达式1, 表达式2)3
. NULLIF()函数NULLIF(表达式1, 表达式2)4. CASE()函数将某个表达式与一组表达式进行比较以确定结果:CA
SE 输入表达式 WHEN [匹配表达式] THEN 结果表达式 [WHEN [匹配表达式] THEN 结果表达式
...] ... [ELSE 结果表达式]END计算一组表达式的值以确定结果:CASE WHEN [条件] TH
EN 结果 [WHEN [条件] THEN 结果 ...] ... [ELSE 结果]END5.3 系统内置函
数5.3.6 加密函数1. MD5()函数MD5()函数用于计算字符串的128位MD5校验和:MD5(str)2. SHA1()
和SHA2()函数SHA1()函数用于计算字符串的160位SHA-1校验和:SHA1(str)SHA2()函数用于计算SHA-2系
列散列函数(SHA-224、SHA-256、SHA-384和SHA-512):SHA2(str, hash_length)3. A
ES_ENCRYPT()和AES_DECRYPT()函数AES_ENCRYPT()函数使用密钥字符串key_str对字符串str进
行加密,并返回包含加密输出的二进制字符串:AES_ENCRYPT(str, key_str[, init_vector])AES_
DECRYPT()函数使用密钥字符串key_str对已加密字符串crypt_str进行解密并返回原始的明文字符串:AES_DECR
YPT(crypt_str, key_str[, init_vector])5.3 系统内置函数5.3.7 类型转换函数1.
CAST()函数CAST()函数用于将一个表达式的值转换为另一种数据类型:CAST(expr AS type)其中参数expr给出
要转换的表达式;type指定要转换的目标数据类型。也可以使用CAST()函数将一个字符串转换到一个不同的字符集:CAST(char
acter_string AS character_data_type CHARACTER SET charset_name)2.
CONVERT()函数CONVERT()函数用于转换表达式的数据类型或字符串的字符集,有以下两种语法格式。CONVERT(exp
r, type)CONVERT(expr USING transcoding_name)5.3 系统内置函数5.3.8 杂项函
数1. 处理IPv4网址(1)INET_ATON()函数用于返回IPv4网址的数值:INET_ATON(expr)(2)INET_
NTOA()函数用于从数值返回IPv4地址:INET_NTOA(expr)(3)IS_IPV4()函数用于判断传入的参数是否为有效
的IPv4网址:IS_IPV4(expr)2. 处理IPv6网址(1)INET6_ATON()用于返回IPv6网址的数值:INET
6_ATON(expr)(2)INET6_NTOA()函数用于从数值返回IPv6地址:INET6_NTOA(expr)(3)IS_
IPV6()用于判断传入的参数是否为有效的IPv6网址:IS_IPV6(expr)5.3 系统内置函数5.3.8 杂项函数3. 处理UUID(1)UUID()函数用于生成一个通用唯一标识码(UUID):UUID()(2)UUID_TO_BIN()函数将字符串形式的UUID转换为二进制UUID并返回结果:UUID_TO_BIN(string_uuid[, swap_flag])(3)BIN_TO_UUID()函数将二进制UUID转换为字符串并返回结果:BIN_TO_UUID(binary_uuid[, swap_flag])(4)IS_UUID()函数用于测试传入的参数是否是有效的UUID:IS_UUID(string_uuid)4. 暂停函数SLEEP()函数用于休眠几秒钟:SLEEP(duration)5.3 系统内置函数
献花(0)
+1
(本文系大高老师首藏)