字段常量 5章 MySOL语言 【例54】创建用户变量和查询用户变量的值 et的uer1=1,工2=2,由证sex3=3; e4一uz3+2 其中 (1)创建用户变量nane并赋值为“王林” (2)创建用户变量 user并赋值为1,usen2赋值为2,user3赋值为3 (3)创建用户变量uscr4,它的值为user3的值加1 (4)查询用户变量name的值。执行结果如图57所示。 数字 图5.7执行结果 在一个用户变量被创建后,它可以以一种特殊形式的表达式用于其他SQL语句中。变量名前 必须加上符号@,以便将它和列名区分开。 【例55】使用查询给变量赋值。 se xac) set student( select姓名 from xs where学号=1081101) 【例56】查询表xs中名字等于 student值的学生信息 select学号,姓名,专业名,出生日期 于数 执行结果如图5.8所示 图5.8执行结果 在 SELECT语句中,表达式发送到客户端后才进行计算。这说明在 HAVING、GRO 期BY或 ORDER BY子句中,不能使用包含 SELECT列表中所设的变量的表达式。 对于SET语句,可以使用“=”或“=”作为分配符。分配给每个变量的值可以为整数、实 数、字符串或NULL值。 也可以用其他SQL语句代替SET语句来为用户变量分配一个值。在这种情况下,分配符必 须为“=”,而不能用“”,因为在非SET语句中“=”被视为比较操作符 例57】执行如下语句 结果口的值为
MsOL数据库教程(视频指导版)上 2.系统变量 MySQL有一些特定的设置,这些设置就是系统变量。和用户 值和一个数据类型,但不同的是,系统变量在MSOL服务器启动时就被引入并初电 【例58】获得现在使用的 MySQL版本 celect eversman 执行结果如图59所示。 大多数的系统变量应用于其他SQL语句中时,必须在名称前加两个@符号,而 与其他SOL产品保持一致,某些特定的系统变量是要省略这两个@符号的 镜明 CURRENT DATE(系日期) CURRENT TIME(系统时间) CURRENT TIMI7 (系统日期和时间)和 CURRENT USER(SQL用户的名字) 【例59】获得系统当前时间 select CURRENT TIME: 执行结果如图5.10所示 图5.10执行结果 在 MySQL中,有些系统变量的值是不可以改变的,例如 VERSION和系统日期。而有些系 统变量是可以通过SET语句来修改的,例如 SQL WARNINGS T语句的语法格式如下 9ET系统变量名=expr GLOBAL1 SESSION)系统变量名=expr 1每(q1ba1, session.1系统变量名=expr 指定了 GLOBAL或@@ global关键字的是全局系统变量。指定了 SESSION或 a@ session.关键字的则为会话系统变量。如果在使用系统变量时不指定关键字,则默认 为会话系统变量 (1)全局系统变量 当 MySQL启动的时候,全局系统变量就初始化了,并且应用于每个启动的会话。如果使用 GLOBAL(要求 SUPER权限)来设置系统变量,则该值被记住,并被用于新的连接,直到服务 器重新启动为止。 【例5.10】将全局系统变量 sort buffer size的值改为25000
统 第5章My5QL语言 始化 果在使用 SET GLOBAL时同时使用了一个只能与 SET SESSION同时使用的变 意量,或者如果在设置一个全局变量时未指定 GLOBAL(或回回),则 MySOL会产生错误 2)会话系统变量 会话系统变量只适用于当前的会话。大多数会话系统变量的名字和全局系统变量的名字相同 每个会话系统变量都和同名的全局 值是可以改变的,但是这个新的值仅适用于正在运行的会话,不适用于所有其他会话 【例511】将当前会话的 SOL WARNINGS变量设置为TRLE。 这个系统变量表示如果不正确的数据通过一条 INSERT语句添加到一个表中 小SQL是否应该返回一条警告。默认情况下,这个变量是美闭的,设为ON表示返回警 号的 IMESTAY 【例512】对于当前会话,把系统变量 SOL SELECT LIMIT的值设置为10,这个变量决定 了 SELECT语句的结果集中的最大行数。 执行结果如图5.11所示 而有些系 在这个例子中,美键字 SESSION放在系统变量的名字前面( SESSION和 LOCAL 可以通用)这明确地表示会话系统变量 SQL SELECT LIMIT和SET语句指定的值保 持一致。但是,名为 SQL SELECT LIMIT的全局系统变量的值仍然不变。同样,如果 改变了全局系统变量的值,同名的会话系统变量的值保持不变 MySQL对于大多数系统变量都有默认值。当数据库服务器启动的时候,就使用这些值 如果要将一个系统变量值设置为 MySQL默认值,可以使用 DEFAULT关键字。 【例513】把 SQL SELECT LIMIT的值恢复为默认值。 et B0LDCAL, SQL SELECT LIMIT DEFAULT 默认 用户使用 SHOW VARIABLES语句可以得到系统变量清单,使用 SHOW GLOBAL VARIABLES可以返回所有全局系统变量,使用 SHOW SESSION VARIABLES可以返回所有会话 系统变量。要获得与样式匹配的具体的变量名称或名称清单,需使用LKE子句,要得到名称与 样式匹配的变量的清单,需使用通配符“ 服务 【例5.14】得到系统变量清单 ahow show variables llke max Join sizer, show global varlables like 'max join aize'i es like.ch
MSOL数据库教程(视 指导版) 5.3运算符与表达式 sQL提供如下 算符可以连接运算量构 算符:算术运算符、位运算符、比较运算符 运 531算术运算符 算术运算符在两个表达式上执行 算符有 加)、-(减 数学运算,这两个 运算符 乘入/(除)和%(求模)5种 数字数据类数 算符用于获得 或多个值的 执行结果 5, 5.12所示 (2)“”运算符 图512执行结果 用于从一个值中减去另一个 执行结果 数符号 所示 若该操作符与BGNT同 意生 的数运算中,应当避使用号 返回值 个 这 其中,+(加 否则会出现错误 可能产 减)运算符还可用于对日期时同值(如D 1E)s 执行结果如图514所示 图5
15数教程(频指导) 比较运算符 比较运算符(又称关系运算符).用于比较两个表达式的值,其运算结果为逻辑值,可以 算符 :1(真)、0(假)及NUL(不确定)表5.5列出了在 MySQL中可以使用的各种 55 比较运算符 算符 小于等 比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写 方式进行比较(除非使用特殊的 BINARY关键字)前面已经介绍了在运算过程中 MySQL能够 自动地把数字转换为字符串,而在比较运算过程中, MySQL能够自动地把字符串转换为数字 下面这个例子说明了在不同的情况下 MySQL以不同的方式处理数字和字符串。 【例515】执行 j结果如图 5.19所示 图519执行结果 (1)“=”运算符 下 运算符用于比较 表达式的两 等,也可以 执行结果如图 较,示例如下 图520执行结 因为在默认情况下 MySQL以不区分大小写的方式比较字符串,所以表达式》一A溶 的结果为真。如果想执行区分大小写的比较,可以添加 BINARY关键字,这您味着对字 遭符串以二进制方式处理。当在字符串上执行比较运算时,MSQL将区分字符串的大 写 使用 BINARY关键字示例如