数据库04

基本的查询语句

  select (* | 字段名 | 四则运算 | 聚合函数) from 表名称;

  取别名 当字段名显示较长时可以添加别名

    select 字段名 as 别名 from 表名称;

    as 可以省略

    select 字段名 别名 from 表名称;

  insert into 表名称(字段,.....)

  values(值....),(值....);

    values中的值的个数和类型必须与前方声明的字段一致

  insert into 表名称 values(值....);

    values中的值的个数和类型必须与表的字段完全一致

  into 可以省略

  delete from 表名 where 条件;

  delete form 表名;

  truncate table 表名;

  update 表名 set 字段名称 = 新值 where 条件;

  update 表名 set 字段名称 = 新值[字段1 = 值1,]

select语句的完整语法:

  select [distinct] (* | 字段 | 四则运算 | 聚合函数) from 表名

    where 查询条件

    group by 分组

    having 分组后的过滤

    order by 排序

    limit 限制获取的条数

  强调:书写顺序必须按照上面的来,执行顺序与书写顺序不一致

where 自查询

  = > < >= <= !=(<>)

  in  数据在不在一个范围内

  between and  数据在不在指定的范围内

  like  模糊匹配  % 任意个任意字符 _ 一个任意字符

  and or not

group by 分组查询

  把一个整体按照某个标识分成不同的部分,通常分支为了统计数据

  语法:select * from 表名 group by 字段;

  强调:用于分组的字段应该时重复度高的

  一旦分组后,组内的详细数据就被隐藏了,无法直接查看但是要知道分组不是为了查看而是为了统计,分组后就只能看到分组的那个字段

聚合函数(统计函数)

  给他一段数据,他统计完成后放回一个数据

  sum  求和

  avg  平均值

  max  最大值

  min  最小值

  count  计数

  group_concat()    字符串拼接

  聚合函数不能用在where后面

  如果要对分组数据进行过滤,必须使用having

  因为where在执行时,数据还没有读完,必须等到数据读完之后再进行过滤

  where 与 having 的区别就在于执行的时间不同

  group by总结:

    where 后不能有聚合函数

    select 后面的字段必须出现再group by的后面

    通常聚合函数会与group by 连用

    如果要对分组数据进行过滤必须使用having

    having与where都是过滤但是执行时间不同

order by 

  排序 默认(asc)为升序

  select * from 表名 order by 字段 (asc);

  用desc来指定为降序

  select * from 表名 order by 字段 desc;

limit 控制要查询的记录数量

  select * from 表名 limit a,b;

  a 表示起始位置

  b 要获取的条数

  如果只有a表示获取的条数

  分页显示

    总条数/每一页条数 = 页数 有余数 页数+1

    ( 页数 - 1 )* 每页条数 = 起始位置

正则表达式匹配(用于模糊匹配)

  语法:select * from 表名 where 字段  regexp "表达式";

  like 只有 % 和 _ 没有regexp灵活

多表查询

 1 笛卡尔积查询

  积表示乘积的意思

  把两个表中的所有数据,全部建立关联关系

  总数据量为两个表数据量的乘积

  可以保证肯定有一条关联关系是正确的,但是会产生大量错误数据

  需要过滤处理

  select * from 表名1,表名2 where 对应关系;

  

 2 内连接查询

  inner(可以忽略) join on

  语法:select * from 表名1 join 表名2 on 对应关系;

  on == where 只能用于连接查询

  如果是用来筛选匹配关系建议使用on,在连接查询中必须使用on

  左外连接查询

    使用 left join

    左表无论是否匹配,都全部显示,右表仅显示匹配成功的

  右外连接查询

    使用 right join

    右表无论是否匹配,都全部显示,左表仅显示匹配成功的

  全外连接查询

    左右两边,无论是否匹配都要显示

    mysql 中不支持全外连接,oracle中为full join

    mysql可以通过union合并查询来合并左外连接和右外连接的查询结果

    union默认取出重复 加上all 去除重复

    在使用union语句,必须使两个字段数量相同的情况下

三表查询

  语法:select * from 表1 join 表2 join 表3 on 对应关系;

  1 先把三个表全部连接在一起

  2 用on来筛选正确关系

  3 通过where添加额外的条件

原文地址:https://www.cnblogs.com/LinChengcheng/p/10553950.html