查询基础

查询列表可以是:字段名,常量,表达式,函数

查询列表使用 `符号可以避免关键字命名冲突,不用也可

查询常量值结果为直接显示常量值

查询表达式可以理解为进行运算

逻辑运算符:<,>,<>,!=,<=>

模糊查询:like关键字:_占一位,%占多位

      between and

      in

      is null

查询函数:

单行函数:即返回值为单行

字符函数:

  length();返回字节数(注意utf-8为3字节,gbk为2字节)

  upper();转为大写

  lower();转为小写

  concat();拼接连个字符串

  substr();截取字符串,第一个参数为需要操作的字符串,第二个参数为开始截取的位置,第三个参数为截取长度

  instr();返回子字符串第一次出现的位置

  replace();替换字符串

  trim();去前后空格,也可去指定的字符,但是只能去前后的trim('字符' form '操作字符')

  lpad();左填充

  rpad();右填充

数学函数:

  round();四舍五入,round(m,n)即小数点后保留n位

  ceil();向上取整

  floor();向下取整

  truncat();截断

  mod();取余

日期函数:

  now();返回当前时间,带日期时间

  curdate();返回当前日期,不包含时间

  curtime();返回当前时间,不包含日期

  year(),month(),day(),hour,minute(),seconds()

  str_to_date();将日期格式的字符串转为指定格式的日期

  date_format();将日期转换位字符串

其它函数:

  version();版本

  database();数据库

  user();用户

流程控制函数:

  if(条件表达式,'值','值')

  case 条件表达式

  when  常量  then 语句;

  when  常量 then 语句

  ...

  else  语句;

  end

  case

  when  条件1   then  要显示的值或语句;

  when  条件2   then  要显示的值或语句;

  else   要显示的值或语句

  end

分组函数总结:(聚合函数)

  avg(),sum(),count(*),max(),min()均忽略null值

  搭配distinct实现去从。sum(distinct 字段)

  group by后的字段是分组关键

查询语句总结:

  select 查询字段

  from 表名

  where 筛选条件

  group by 分组字段

  having 分组筛选条件

  order by 排序条件

  limit (page-1)*size,size

注意事项:

1.有having语句必须含有group语句

2.desc降序,asc升序

3.筛选条件中:

  等值:=,<=>(检测空值)

  非等值:between and

  范围:in,not in

4.limit有的话必须出现在最后,第一个参数为起始,默认为0,第二个参数为个数,即从起始位置后面的多少个

多表查询时的连接

  内连接(inner join)

    等值连接(=)

    非等值连接(between and)

    自连接(本表和本表进行连接) 

    查询两个表的交叉部分,即交集   

  外连接

    左外 (left out join)

    右外(right out join)

    全外(full out join)   

    分为主表和从表,必须含有主表的所有数据,交叉部分按内连接处理,没有的部分设置从表为null,通常用来查询补集

  交叉连接

    cross join,笛卡尔集

子查询通俗总结:

  可嵌套在查询字段,表名,筛选条件中

  嵌套在查询字段时:子查询结果应该为标量子查询,通俗的数就是查询结果单行单列

  嵌套在from后时:子查询结果应为一张表的形式

  嵌套在筛选条件时:子查询结果可为单行子查询也可为表的形式

  

联合查询:Union

将多个查询条件通过union划分为多个查询语句,最后返回一个结果集

原文地址:https://www.cnblogs.com/xuhan74520/p/13881130.html