第5 章 ySQL语 作为目 用最 的DBMS ySQL支持众 的 付SQL进行了相应的扩展。本 SOL(结构 化 进一步具 5.1 MySQL语言简介 在 MySQL数据库中,SQL语言由以下几部分组成 (1)数据定义语言(DDL)用于执行数据库的任务,对数据库及数据库中的各种对象进 创建、删 多改等操 器和存储过程等。D 数据库对象 要语句及功能如 要包括:表、默认约束 5.1所示 规则、视图 r量 句 语句及功能 CREATE 其 ALTER (2)数据操纵语言(DML)用于操纵数据库中各种对象,检索和修改数据。DM包括的主时4所 其D 要语句及功能如表52 表52 DML主要语包及功能 是使用最 据插 TE修 ELETE 既可修 从表或视图中除数据 的一行数 可根据条件 也可修 的数据 制语言(DL)用于安全管理 DCL包括的主要语句及功能如表53所示 确定哪些用户 查看或修改数据 数据
⊥第5章MsOL语言上 第5 DCL主要语句及功棵 图53 投子权果可把语句许可成对象许可的权限投子其他用户和角色 L语 kE数权限与 GRANT的功能相反。但不影响读用户或角色从其他角色中作为成员承许可权限 为了用户编程的方便, MySQL增加了语言元素。这些语言元素包括常量、变量,运算符、 函数,流程控制语句和注解等。本章将具体讨论使用 MySQL这部分增加的语言元素 (结构化查询语 每个SQL语句都以分号结束,并且SQL处理器忽略空格、制表符和回车符。 步具体介绍 52常量和变量 5.2.1常量 常量指在程序运行过程中值不变的量。常量又称为字面值或标量值。常量的使用格式取决于 的数据类型,可分为字符串常量、数值常量十六进制常量、时间日期常量、位字段值、布尔 的各种对象进 和NUL值 则、视图 1.字符串常量 字符串是指用单引号或双引号括起来的字符序列,分为ASCⅡ字符串常量和 Unicode字符串 ASCⅡ字符串常量是用单引号括起来的,由ASC字符构成的符号串,例如 " How are you! Unicode字符串常量与ASCⅡ字符串常量相似,但它前面有一个N标志符(N代表SQL-92 9式不同 标准中的国际语言( National Language)。N前缀必须为大写。只能用单引号括起字符串,例如 代不同 Unicode数据中的每个字符用两个字节存储,而每个 ASCII字符用一个字节存储 在字符串中不仅可以使用普通的字符,也可使用几个转义序列,它们用来表示特殊的字符 包括的如表54所示。每个转义序列以一个反斜杠(“”)开始,指出后面的字符使用转义字符来解释 而不是普通字符。注意NUL字节与NULL值不同,NUL为一个零值字节,而NUL代表没有值 表5.4 字符串转义序列 一个ASCⅡ0(NUL)字符 一个换行符 一个同车符( Windows中使用rn作为新行标志) 个定位符 一个退格符 的数据, 一个ASC26字符(CTRL+2) 个单引号(“”) 个双引(
Ms数库教程(视频指导)下 %”符,它用于在正文中搜索“”的文字实例,否则这里“”将解释为 ”符。它用于在正文中搜索“”的文字实例,否则这里“”将解释为 5.1】执行如 行结果如图51所 其中,“n” 有以下几种方式可以在字符串中包括引号 (1)在字符串内用单引号“引用的单引号“”可以写成“”(两个单引号) (2)在字符串内用双引号“”引用的双引号“”可以写成 (两个双引号) (3)可以在引号前加转义字符(“”) (4)在字符串内用双引号“”引用的单引号“不需要特殊处理,不需要用双字符或转 同样,在字符串内用单引号“”引用的双引号“”也不需要特殊处理 执行下面的语句 select hel1',t"he110“,'"“he11 语句中第4个“hel”中间是两个单引号而不是一个双引号 执行结果如图52所示 5.2执 2.数值常量 数值常量可以分为整数常量和浮点数常量 整数常量即不带小数点的十进制数,例如:1894,2,+145345234,-2147483648 浮点数常量是使用小数点的数值常量,例如:526.-139,1015E5,05E2
第6章My5OL语 3十六进制常量 释为 MySQL支持十六进制值,一个十六进制值通常指定为一个字符串常量,每对十六进制数字 被转换为一个字符,其最前面有一个大写字母“X”或小写字”x”在引号中只可以使用数字“0 到"9“及字母“”到“或“A到F”,例如:x4表示大写字母A.x4D7053514C表示字 符串 MySQL 人六进制数值不区分大小写,其前X或“”可以被0取代面且不用引号,即X 替换为0x41,注意,“0x”中x一定要 4、十六进制值的默认类型是字符串。如果想要确保该值作为数字处理,可以使用CAST(A 执行如下语句 select ox4, cast (0x41 as unsigned) 执行结果如图5.3所示。 图53执行结果 如果要将一个字符串或数字转换为十六进制格式的字符串,可以用HEXO函数 【例52】将字符串CAT转换为16进制。 lect hex['CAT): 执行结果如图54所示。 符或转文 图54执行结果 十六进制值通常用来存储图像(如JPG)和电影(如AV1)等格式的数据 4.日期时间常量 日期时间常量:由用单引号将表示日期时间的字符串括起来的形式构成。 日期型常量包括年、月、日,数据类型为DATE,按年月-日的顺序表示,中间的间隔符“ 也可以使用如“”“@”或“%”等特殊符号。例如:“201406-17”。 时间型常量包括小时、分钟、秒及微秒数,数据类型为TME,按“时分-秒.微秒”的格式 表示。例如:“12:30:43.00013”。 日期时间的组合数据类型为 DATETIME或 TIMESTAMP,如“201406-17123043 DATETIME的年份在1000-999之间,而 TIMESTAMP的年份在1970~2037之间,还有就是 MESTAMP在插入带微秒的日期时间时将微秒忽略。 TIMESTAMP还支持时区,即在不同时区 转换为相应时间。 5.位字段值 可以使用 b'value符号写位字段值。vale是一个用0和1写成的二进制值。直接显示 b'value' 79
显示为一个笑脸图标 使用 系列特殊的符 以将位字段常量显示为 使用OCT函数可以将位 型格式 执行 执行 6.布尔值 布尔值只包含两个可能的值:TRUE和 FALSE: FALSE的数字值为“0”,TRUE的数字值 【例53】获取 FALSE的值。 执行结果如 7.NUL值 NULL值可适用于各种列类型,它通常用来表示“没有值”“无数据”等意义,并且不同于数 字类型的 或字符串类 空字符串 52.2变量 变量用于临时存放数据,变量中的数据随着程序的运行而变化,变量有名字及其数据类型两 个属性。变量名用于标识该变量,变量的数据类型确定了该变量存放值的格式及允许的运算 0中,变量可分为用户变量和 用户变量 系统变量 用户可以在表达式中使用自己定义的变量,这样的变量叫作用户变量 在使用用户变量前必须定义和初始化。如果使用没有初始化的变量,它的值为NUL 用户变量与连接有关。也就是说,一个客户端定义的变量不能被其他客户端看到或使 客户端退出时,该客户端连接的所有变量将自动释放。 定义和初始化一个变量可以使用SET语句,语法格式为 用 s?用户变量=exP11,用户变量2=xpx2, 其中,用户变量名可以由当前字符集的文字数字字符、“”“”和“S”组成。当变量名中雷 要包含了一些特殊符号(如空格、#等)时,可以使用双引号或单引号将整个变量括起来 expr要给变量赋的值,可以是常量、变量或表达式