基础查询
“+”只有运算作用(符号转换失败时看作0)
拼接时用concat函数
concat(字段名, 字段名) AS ''
条件查询
#条件运算符
> < >= <= !=(<>也可判断不等于但is not不行) =
> <=> --安全等于,既可以判断null,也可以当=使用但可读性较低
#逻辑运算符
&& || ! or not and
#条件运算符
like between and(包含临界值) in(用于字符串范围) is null(用于判断空值)
使用下划线‘_’做占位符
例:查询第三个字符是e第五个字符是a的记录
select * from teacher where name like '__e_a%';
若查询含下划线的记录使用转义符号(加“\”)
select * from teacher where name like '_\_%';
#或使用escape关键字
select * from teacher where name like '_$_%' escape '$';
SELECT * FROM tb_hotel;
SELECT * FROM tb_hotel WHERE hotel_id LIKE '%%' AND hotel_area_id LIKE '%%';(不能判断字段为空(null)的记录,和上条语句结果不一样)
排序
#使用 order by ,默认升序 asc 降序使用desc
常见函数
- 单行函数
- 分组函数(统计函数、组函数、聚合函数)
#字符函数
length() --获取参数值的字节个数
concat() --拼接字符串
upper() lower() --字符转换成大写或小写
substr() substring() --切割字符串(索引从“1”开始)
instr('字符串', '子串') --返回子串第一次出现的索引,找不到返回0
trim() --去除字符串前后(中间不做处理)指定字符,默认为''(空格)
变量分类
系统变量:由系统提供,不是用户定义,属于服务器层面。
- 全局变量:作用于所有会话(连接),但服务器重启后会为所有全局变量赋初始值。
- 会话变量:仅作用于当前会话(连接)。
使用语法:
#使用时注意如果是全局变量需要加上global,默认为本次会话session
#查看变量
show global | session variables [条件语句];
#查看指定某个指定系统的变量
select @@global | session .系统变量名;
#为某个系统变量赋值
#方法一:
set global|session 变量名 = 值;
#方法二:
set @@global|session .变量名 = 值;
自定义变量:用户自定义的。
- 用户变量:作用于当前会话(连接)。
- 局部变量
存储过程(函数前身)
使用:
#声明并初始化
#有两种赋值符号 := 和 = 使用set两种都可以,使用select只能用 :=
set @用户变量名 = | := 值;
select @用户变量名 := 值;
## 含义
一组预先编译好的SQL语句的集合,理解为批处理语句。
## 作用
1. 提高代码的重用性;
2. 简化操作;
3. 减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。
## 语法
**创建语法**
```sql
/*参数列表包含三部分:参数模式 参数名 参数类型
eg:in stuname varchar(10)
参数模式有:
in:该参数可作为输入,即需要调用方传入值,传参时使用into;
out:可作为输出,即返回值,可用变量接收,也可不接收;
inout:既可作为输入,又可作为输出,既需要传入值,又可以返回值。
*/
create procedure 存储过程名(参数列表)
begin
储存过程体(一组合法的sql语句)
end
如果储存过程体只有一句话,begin end 可省略。储存过程体中的每句SQL语句结尾必须加上分号“;”。
储存过程的结尾可以使用delimiter重新设置语法:
delimiter 结束标志
eg:
delimiter $
...
$
调用语法
call 存储过程名(实参列表)