9-mysql编程
MySQL编程基础
SQL语言概述
分类 | 名称 | 用途 | 代表关键字 |
---|---|---|---|
DDL (Data Definition Language) | 数据定义语言 | 用来定义数据库、表及其它对象的结构 | CREATE、DROP、ALTER、TRUNCATE |
DML (Data Manipulation Language) | 数据操作语言 | 用来增加、修改、删除表中的数据 | INSERT、DELETE、UPDATE |
DQL (Data Query Language) | 数据查询语言 | 用来查询表中的数据 | SELECT、FROM、WHERE、ORDER BY 、GROUP BY、HAVING |
DCL (Data Control Language) | 数据控制语言 | 用来授予和收回权限 | GRANT、REVOKE |
TCL (Transaction Control Language) | 事务处理语言 | 用来对数据进行提交和回滚 | COMMIT、ROLLBACK |
标识符命名规则
标识符用来命名一些对象,如数据库、表、列、变量等,以便在脚本中的其他地方引用。MySQL标识符里的合法字符如下:
- 不加引号的标识符必须是由系统字符集中的字母和数字,再加上“_”和“$”字符组成。
- 不加引号的标识符不允许完全由数字字符构成(因为这样难以和数值进行区分)。
- 第一个字符可以是满足以上条件的任何一个字符(包括数字)。
说明:
MySQL关键词、列名、索引名、变量名、常量名、函数名、存储过程名等不区分大小写,但数据库名、表名、视图名则跟操作系统有关(Windows不区分、UNIX区分)。
以特殊字符@@、@开头的标识符一般用于系统变量和用户变量。
不符合规则的符号如果需要用于标识符,可以用反引号(``)括起来后使用。
由于MySQL标识符命名规则稍微有点繁琐,这里我们推荐使用万能命名规则:标识符由字母、数字或下划线(_)组成,且第一个字符必须是字母或下划线。
变量
变量是程序运行中可以改变值(状态)的命名存储区。变量存储数据值,并可在语句之间传递数据值。
MySQL变量分为:系统变量、用户变量、局部变量(仅在函数、存储过程、触发器等中使用)。
-
分类
-
系统变量
- 介绍
- MySQL系统变量是由MySQL系统本身创建,用于记录系统的各种设定值,可以直接使用。
- 系统变量在MySQL服务器启动时被创建并初始化为默认值。
- 用户只能使用系统预定义的系统变量,不能创建系统变量。
- 多数系统变量名称以@@开头(为了兼容其他系统,也有部分使用时需要省略@@的)。
- 输出系统变量使用SELECT语句,其语法格式如下:
SELECT <系统变量名>[, …]
- MySQL系统变量是由MySQL系统本身创建,用于记录系统的各种设定值,可以直接使用。
- MySQL常用系统变量
-
示例
- 示例一:
- 示例二:
- 示例三:
- 介绍
-
用户变量
-
介绍
MySQL用户变量是由用户创建、其作用域限制在用户连接(会话)中的变量。不同用户会话中的用户变量相互不受影响,用户变量必须以@开头。其语法格式如下:
SET <@用户变量名> = <表达式>[, …] -
说明:
- 用户变量通过SET语句以初始化的方式创建,用户变量的类型也是通过初始化自动分配(即用户变量无需使用DECLARE语句进行定义)。
- <用户变量名>必须以@开头,并符合标识符的命名规则。
- 用户变量定义并初始化或者赋值后,可以在需要时使用(引用)用户变量。
- 输出用户变量使用SELECT语句,其语法格式如下:
SELECT <@用户变量名>[, …]
-
示例
- 示例一:
- 示例二:
-
-
局部变量
- 介绍:
MySQL局部变量存在于函数、存储过程和触发器等中,由用户创建、且必须使用DECLARE语句定义后才能使用的变量。
-
定义变量:
使用DECLARE语句可以定义变量。其语法格式如下:
DECLARE <变量名> [, …] <数据类型> [DEFAULT 默认值]。
说明:可以同时定义多个变量,变量名之间用逗号隔开;也可以设置变量的默认值,如果没有设置,则默认值为
示例:
DECLARE myVar INT DEFAULT 10;
-
给变量赋值
使用SET语句可以给变量赋值。其语法格式如下:
SET <变量名1> = <赋值表达式1> [, <变量名2> = <赋值表达式2> , …]
说明:可以同时为多个变量赋值,各个变量的赋值语句之间用逗号隔开。
示例:
-- 为变量myVar赋值为30。SET myVar = 30;
-
运算符
算术运算符
-
介绍
- 算术运算符是MySQL中最常用的一类运算符。
- 算术运算符主要包括:+、-、*、/、DIV、%或MOD。
- /和DIV表示两个数相除求商,其中DIV是整除。
- %或者MOD表示两个数相除求余数。
- 算术运算符可以用于任何数字类型(整型、实数型)数的运算。
- +、- 还可以用于日期时间型数的运算。
-
示例
- 示例一:
- 示例二:
比较运算符
-
介绍
- 比较运算符是查询数据时最常用的一类运算符。SELECT语句中的条件语句经常要使用比较运算符。通过这些比较运算符,可以判断表中的哪些记录是符合条件的。
- 比较运算符主要包括:=、<=>、!=或<>、>、>=、<、<=、IS NULL、IS NOT NULL、IN、NOT IN、LIKE、NOT LIKE、BETWEEN AND。
-
示例:
- 查询成绩表(soce),显示成绩小于60分的记录。
逻辑运算符
-
介绍:
- 逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回1。如果表达式是假,结果返回0。
- 逻辑运算符是将多个逻辑量连接起来,构成更加复杂的条件。逻辑运算符主要包括:AND或&&、OR或||、NOT或!、XOR。
-
示例
- 示例一:查询学生表(student),显示“网络131”班级的所有男生信息。
位运算符
- 位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。
- 位运算符主要包括:&(按位与)、|(按位或)、~(按位取反)、^(按位异或)、<<(按位左移)、>>(按位右移)。
运算符的优先级
MySQL表达式中如果有多个运算符,则优先级高的运算符先运算;如果优先级相同,则按照从左到右的顺序进行运算。如果有小括号,则先计算括号中的内容。
练习
1)定义一个用户变量,其初始值为1000,查询商品表(product)中库存量超过该用户变量值的所有商品记录。
SET @myVar = 1000;
SELECT * FROM product WHERE stocks>@myVar
2)把订单表(orders)中“10004”订单的客户ID保存到一个用户变量中,然后查询这个客户的详细信息。
SET @myVar = (SELECT customerId FROM orders WHERE id='10004');
SELECT * FROM customer WHERE id=@myVar;
3)查询商品表(product),查询结果中需要包含一个计算字段“totalMoney”,该字段是由“商品单价”乘以“库存量”得来的。
SELECT *, price * stocks AS 'totalMoney' FROM product;