基础查询

“+”只有运算作用(符号转换失败时看作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

常见函数

  1. 单行函数
  2. 分组函数(统计函数、组函数、聚合函数)
#字符函数
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 存储过程名(实参列表)