排序 :order by
select 查询列表
from 表
whrer 条件
order by 排序列表(asc升序默认|desc降序)
可以支持单个字段,多个字段,表达式,函数,别名
一般放在语句最后
常见函数
SELECT 函数表(实参列表) <br /> FROM 表
字符函数
- length(‘实参’) 读取实参的长度 一个汉字3个字节(utf-8)
- concat(实参,实参) 拼接字符串
- upper(实参),lower(实参) 变成大写,和小写
- substr(实参,开始索引),
- subString(实参,开始索引,截取的长度) 截取字符 长度从一开始
- instr(实参,查找字符串) 查找字符串出现的索引
- trim(实参) 去除字符两端的空格
- trim(‘指定字符’ from 实参 ) 去除前后的指定字符
- lpad(参数,长度,’字符’) 用指定的字符去左填充参数到指定长度
rpad(参数,长度,’字符’) 用指定的字符去右填充参数到指定长度
- replace(实参,被替换的字符,替换字符) 替换字符
数字函数
1. round(参数) 四舍五入 round(参数,保留小数点几位) 四舍五入<br /> 2. ceil(实参) 向上取整返回最小整数<br /> 3. floor(实参) 向下取整返回最大整数<br /> 4. truncate(实参) 截断<br /> 5. mod(a,b) 取余
日期函数
1. now() 返回当前时间 日期+时间<br /> 2. curdate() 返回不包含时间<br /> 3. curtime() 时间宝不含日期<br /> 4. year() month() day() 等可以获取指定的<br /> 5. str_to_date( ) 指定格式转换<br /> 6. date_format(时间,'%y年%m月%d日') 日期转换成字符<br /> 7. datediff('日期','日期') : 取他们相差的天数
其他函数
1. version() 版本号<br /> 2. database() 查看当前的库<br /> 3. user() 当前的用户
流程控制函数
1. if(条件表达式,返回值1,返回值2) <br /> 2. 第一种<br /> case 判断的表达式和字段<br /> when 常量 then 结果<br /> when 常量 then 结果<br /> else 结果<br /> end
第二种<br /> case<br /> when 条件 then 结果 <br /> when 条件 then 结果<br /> else 结果<br /> end
分组函数
- sum(实参) 求和
- avg(实参) 平均值
- max(实参) 最大值
- min(实参) 最小值
- count(实参) 计算个数
- 和分组函数一起使用的一般是group by后的字段
分组查询 group by
select 查询列表 (要求出现在group by的后面)<br /> from 表<br /> whrer 条件(分组前筛选)<br /> group by 子句语法<br /> order by 排序列表<br /> having 分组后的筛选
分组函数做筛选肯定在having后面
多表查询
select 表一 ,表二
from 表一,表二,表三
where 表一.列 = 表二.列
and 筛选条件
可以在from给表起别名,都可以使用别名表示,起了别名就要使用别名要不然报错
非等值连接
select 列名,列名<br /> from 表一,表二<br /> where 列名 between 列名条件一 and 列名条件二
常用语句 :
select 查询列表
from 表一
[连接类型] join 表二 on 连接条件
[连接类型] join 表三 on 连接条件
where 筛选条件
group by 分组
having 排序后筛选条件
order by 排序列表
自连接
select 列名<br /> from 表一 ,表一<br /> where 表一列名 = 表一列名
内连接 inner (inner可以省略)
外连接 (一个有,另一个表没有的,外连接有匹配的显示匹配的值,没有则null )
左外 left outer可以省略不写<br /> 右外 right<br /> 全外 full (mysql不支持)
交叉连接 cross
联合查询
查询语句 union 查询语句 ;
多条查询语句的查询列数一致的,类型和顺序一致,默认去重,union all 不去重
