一、常量与变量
1.常量
- 字符串常量: 字符串常量指用单引号或双引号括起来的字符序列。在MySQL中推荐使用单引号
- 数值常量:数值常量可以分为整数常量和小数常量。
- 日期和时间常量:日期和时间常量使用特定格式的字符日期值表示,用单引号括起来。
- 布尔值常量:布尔值只有true和false两个值,SQL命令运行结果用1代表true,用0代表false。
- NULL值:适用于各种字段类型,通常表示“不确定的值”,NULL值参与的运算,结果仍为NULL值。
【例3-1】查询表emp中ename值为SCOTT的雇员信息。
SELECT * FROM emp WHERE ename='SCOTT';
【例3-2】将表emp中,SCOTT雇员的comm值改为1250(要求用科学记数法表示)。
UPDATE emp SET COMM=1.25E+3 WHERE ename='SCOTT';
【例3-3】查询表emp中1981年以后雇用员工的ename和hiredate信息。
SELECT ename,hiredate FROM emp WHERE hiredate>'1981/12/31';
【例3-4】查询表emp中所有雇员的姓名ename和工资sal是否大于等于2000的判断结果。
SELECT ename,sal>2000 FROM emp;
2.变量
1.局部变量
(1)局部变量的定义与赋值
SET @局部变量名=表达式1
[,@局部变量名=表达式2,……]
(2)局部变量的显示
SELECT @局部变量名[,@局部变量名,……]
【例3-7】查询表emp中雇员'SMITH'的job和hiredate值赋给变量job_v、hiredate_v,并显示两个变量的值
-
SELECT job,hiredate
INTO @job_v,@hiredate_v
-
-
FROM emp
WHERE ename=
'SMITH';
-
-
#查看变量
-
SELECT @job_v,@hiredate_v;
-
【例3-8】根据name变量所给的值查询指定员工的信息。
-
#定义变量并赋值
-
-
SET @
name=
'SCOTT';
-
-
#变量@name的调用
-
-
SELECT *
FROM emp
WHERE ename=@
name;
2.全局变量
全局变量是MySQL系统提供并赋值的变量。用户不能定义全局变量,只能使用。
二、常用系统函数
1.字符串函数
1)计算字符串字符数的函数和字符串长度的函数
CHAR_LENGTH(str)返回字符串str所包含的字符个数。
LENGTH(str)返回值为字符串的字节长度。一个汉字是3个字节,一个数字或字母是1个字节。
SELECT CHAR_LENGTH('中国') 字符数,LENGTH('中国') 字符串长度;
结果:
2)合并字符串函数
CONCAT(s1,s2,……)返回结果为连接参数产生的字符串,如果任何一个参数为NULL,则返回值为NULL。
【例3-11】示例。
SELECT CONCAT('MySQL版本:',@@version) 版本号;
结果:
3)字符串大小写转换函数
LOWER(str)是将字符串str中的字母字符全部转换成小写字母。
UPPER(str)是将字符串str中的字母字符全部转换成大写字母。
-
SET @
name=
'alice';
-
SELECT *
FROM emp
WHERE
UPPER(ename)=
UPPER(@
name);
结果:
4)删除空格函数
LTRIM(str)返回删除前导空格的字符串str;
RTRIM(str)返回删除尾部空格的字符串str;
TRIM(str)返回删除两侧空格的字符串str。
-
SET @
name=
' alice ';
-
SELECT *
FROM emp
WHERE
UPPER(ename)=
TRIM(
UPPER(@
name));
结果:
5)取子串函数
SUBSTRING(str,start,length)返回字符串str从start开始长度为length的子串。
【例3-14】返回emp中ename值以'A'开头的雇员信息。
-
#第一种写法
-
SELECT *
FROM emp
WHERE
SUBSTRING(ename,
1,
1)=
'A';
-
#第二种写法
-
SELECT *
FROM emp
WHERE ename
LIKE
'A%';
结果:
2. 数学函数
ABS(x)返回x的绝对值。
PI()返回圆周率π的值。
SQRT()返回非负数的二次方根。
MOD (m,n)返回m被n除后的余数。
ROUND(x,y)把x四舍五入到y指定的精度返回。如果y为负数,则将保留x值到小数点左边y位。
3. 日期和时间函数
1)获取当前系统的日期及取日期的年、月、日函数
CURDATE()返回当前系统日期,格式为'YYYY-MM-DD'。
YEAR(d)、MONTH(d)、DAY(d)分别返回日期或日期时间d的年、月、日的值。
SELECT CURDATE() 当前日期,YEAR(CURDATE()) 年,MONTH(CURDATE()月,DAY(CURDATE()) 日;
结果:
2)获取当前系统日期时间函数
CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE()4个函数作用相同,均返回当前系统的日期时间,格式 为'YYYY-MM-DD HH:MM:SS'。
4.系统信息函数
USER()返回当前登录的用户名。
DATABASE()返回当前使用数据库名。
VERSION()返回MySQL服务器版本号。
SELECT CONCAT('当前数据库:',DATABASE(),';用户:',USER()) AS 登录信息;
结果:
5. 条件控制函数
1)IF()函数
IF(条件表达式,v1,v2) 如果条件表达式是真则函数返回v1值,否则返回v2的值。
2)CASE()函数
CASE 表达式
WHEN v1 THEN r1
WHEN v2 THEN r2
……
[ELSE rn]
END
-
SELECT ename 姓名,
-
CASE deptno
-
WHEN
10
THEN
'ACCOUNTING'
-
WHEN
20
THEN
'RESEARCH'
-
WHEN
30
THEN
'SALES'
-
WHEN
40
THEN
'OPERATIONS'
-
ELSE
'DESIGN'
-
END 部门名称
-
FROM emp
-
WHERE ename=
'Alice';
6. 数据类型转换函数
CAST(x AS 新类型 )、CONVERT(x 新类型)2个函数作用相同,将一个类型的值转换为另一种类型的值。
-
SELECT ename,sal
INTO @empname,@salary
FROM emp
WHERE ename=
'Alice';
-
SELECT
CONCAT(@empname,
'的工资是',
-
CAST(@salary
AS
CHAR(
7))) 信息;
结果:
转载:https://blog.csdn.net/qq_41679818/article/details/105628658