WEB数据库应用

WEB数据库应用
WEB数据库应用

任务引入2分钟]

任务分析[10分钟]

MySQL语言结构

在深入学习MySQL之前,我们要了解MySQL的语言结构。

MySQL支持SQL数据库语言的关系数据库服务器。在MySQL数据库中存储、查询及更新数据的语言是遵守SQL标准的,但MySQL也对它进行了相应的扩展。

在MySQL数据库中,SQL语言由以下几部分组成。

(1)数据定义语言(DDL)。用于执行数据库的任务,对数据库及数据库中的各种对象进行创建、删除、修改等操作。如前所述,数据库对象主要包括:表、默认约束、规则、视图、触发器、存储过程等。DDL包括的主要语句及功能如表6.1所示。

表6.1 DDL主要语句及功能

(2)数据操纵语言(DML)。用于操纵数据库中各种对象,检索和修改数据。DML包括的主要语句及功能如表6.2所示。

表6.2 DML主要语句及功能

讲解相关知识[25分钟]

(3)数据控制语言(DCL)。用于安全管理,确定哪些用户可以查看或修改数据库中的数据,DCL包括的主要语句及功能如表6.3所示。

表6.3 DCL主要语句及功能

(4)MySQL增加的语言元素。这部分不是SQL标准所包含的内容,而是为了用户编程的方便增加的语言元素。这些语言元素包括常量、变量、运算符、函数、流程控制语句和注解等。本章将具体讨论使用MySQL这部分增加的语言元素。

每个SQL语句都以分号结束,并且SQL处理器忽略空格、制表符和回车符。

一、常量和变量

(一)常量

1. 字符串常量

字符串是指用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode 字符串常量。

ASCII字符串常量是用单引号括起来的,由ASCII字符构成的符号串。

举例:‘hello’‘How are you!’

Unicode 字符串常量与ASCII字符串常量相似,但它前面有一个N 标志符(N代表SQL-92标准中的国际语言(National Language))。N前缀必须为大写。只能用单引号括起字符串。

举例:N‘hello’N‘How are you!’

Unicode 数据中的每个字符用两个字节存储,而每个ASCII字符用一个字节存储。

在字符串中不仅可以使用普通的字符,也可使用几个转义序列,它们用来表示特殊的字符,见表 6.4。每个转义序列以一个反斜杠(“\”)开始,指出后面的字符使用转义字符来解释,而不是普通字符。注意NUL 字节与NULL 值不同,NUL 为一个零值字节,而NULL 代表没有值。

【例6.1】执行如下语句:

SELECT 'This\nIs\nFour\nLines';

结果为:

(二)变量

1.用户变量

用户可以在表达式中使用自己定义的变量,这样的变量叫做用户变量。

用户可以先在用户变量中保存值,然后在以后引用它,这样可以将值从一个语句传递到另一个语句。在使用用户变量前必须定义和初始化。如果使用没有初始化的变量,它的值为NULL。

用户变量与连接有关。也就是说,一个客户端定义的变量不能被其他客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。

定义和初始化一个变量可以使用SET语句,语法格式为:

SET @user_variable1=expression1 [,user_variable2= expression2 , …]

其中,user_variable1、user_variable2为用户变量名,变量名可以由当前字符集的文字数字字符、“.”、“_”和“$”组成。当变量名中需要包含了一些特殊符号(如空格、#等)时,可以使用双引号或单引号将整个变量括起来。

expression1、expression2为要给变量赋的值,可以是常量、变量或表达式。

【例6.7】创建用户变量name并赋值为“王林”。

SET @name='王林';

2.系统变量

MySQL有一些特定的设置,当MySQL数据库服务器启动的时候,这些设置被读取来决定下一步骤。例如,有些设置定义了数据如何被存储,

有些设置则影响到处理速度,还有些与日期有关,这些设置就是系统变量。和用户变量一样,系统变量也是一个值和一个数据类型,但不同的是,系统变量在MySQL服务器启动时就被引入并初始化为默认值。附录G中列出了绝大多数的系统变量。

【例6.14】获得现在使用的MySQL版本。

SELECT @@VERSION ;

结果为:

二、运算符与表达式

1.算术运算符

算术运算符在两个表达式上执行数学运算,这两个表达式可以是任何数字数据类型。算术运算符有:+(加)、 (减)、*(乘)、/(除)和%(求模)5种运算。

2.比较运算符

比较运算符(关系运算符),用于比较两个表达式的值,其运算结果为逻辑值,可以为三种之一:1(真)、0(假)、NULL(不能确定)。

表6.5 比较运算符

3.逻辑运算符

逻辑运算符用于对某个条件进行测试,运算结果为TRUE(1)或FALSE(0)。MySQL提供的逻辑运算符如表6.6所示。

表6.6 逻辑运算符

任务实施[40分钟]

4.位运算符

位运算符在两个表达式之间执行二进制位操作,这两个表达式的类型可为整型或与整型兼容的数据类型(如字符型,但不能为image类型),位运算符如表6.7所示。

表6.7 位运算符

5.运算符优先等级

表6.8 运算符优先级

6.表达式

表达式就是常量、变量、列名、复杂计算、运算符和函数的组合。一个表达式通常可以得到一个值。与常量和变量一样,表达式的值也具有某种数据类型,可能的数据类型有字符类型、数值类型、日期时间类型。这样,根据表达式的值的类型,表达式可分为字符型表达式、数值型表达式和日期表达式。

【例6.2】执行下面的语句:

展示评价(10分钟)小结作业[3分钟]

SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';

【例6.3】执行如下语句:

SELECT 0x41, CAST(0x41 AS UNSIGNED);

【例6.4】将字符串CAT转换为16进制。

SELECT HEX('CAT');

【例6.5】执行下列语句:

SELECT BIN(b'111101'+0), OCT(b'111101'+0);

【例6.6】获取TRUE和FALSE的值。

SELECT TRUE, FALSE;

【例6.8】创建用户变量user1并赋值为1,user2赋值为2,user3赋值为3。

SET @user1=1, @user2=2, @user3=3;

定义用户变量时变量值可以是一个表达式。

【例6.9】创建用户变量user4,它的值为user3的值加1。

SET @user4=@user3+1;

在一个用户变量被创建后,它可以以一种特殊形式的表达式用于其他SQL语句中。变量名前面也必须加上符号@。

【例6.10】查询例6.7中创建的变量name的值。

SELECT @name;

【例6.11】使用查询给变量赋值。

USE XSCJ

SET @student=(SELECT 姓名FROM XS WHERE 学号='081101');

【例6.12】查询表XS中名字等于例6.11中student值的学生信息。

SELECT 学号, 姓名, 专业名, 出生日期

FROM XS

WHERE 姓名=@student;

各组派代表展示结果,各小组互评结果。

本次课我们熟悉了MySQL的语言结构,对常量、变量、运算符、表达式有了一定了解,为后面的学习奠定了基础。

作业:熟悉常用的运算符

相关主题
相关文档
最新文档