您的位置:首页 > 数据库 > MySQL

mysql学习(二)——基础:查询相关内容

2020-05-12 10:47 81 查看

数据库90%的工作都在做查询,所以需要重点掌握。
查询
select 字段名 from 表名 as 别名;
如select name from student as n;
select * from student;

  • distinct去重复
    如select distinct gender from student;
    上例结果只有两个。
    但如果是 select distinct id,gender from student;
    结果的个数则为 id的个数,因为两个字段都一样才算同一条记录。

  • where 满足条件的行显示,不满足的行不显示
    如查询id大于3的学生姓名
    select name from student where id>3;

  • and or 逻辑运算符
    如查询id大于3且未被删除的学生姓名
    select name from student where id>3 and is_delete=0;

  • like 模糊查询
    %表示任意多个字符
    -表示任意一个字符
    如查询姓李的学生姓名
    select name from student where name like ‘李%’;
    查询姓李且名为一个字的学生
    select * from student where name like ‘李_’;

  • in 或 between…and…范围查询
    in查询在一个非连续范围内的记录
    如查询id为1,3,4的学生
    select * from student where id in(1,3,4)
    between…and…查询在一个范围内的记录
    如查询id在3到8的记录
    select * from student where id between 3 and 8

  • 聚合函数
    原始结果得不到,只能得到对查询结果的聚合结果。常用的有5个。
    count(*)
    max(列)和min(列)
    sum(列)
    avg(列) 默认保留5位小数

  • group by 分组
    按照字段分组,表示此字段相同的数据会被放到同一个组中
    分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中
    可以对分组后的数据进行统计,做聚合运算

  • having 筛选
    与where有点相似,但面向的数据集不同。
    原始集->where->一次结果集->分组->二次结果集->having->最终结果
    即where面向最原始的数据,而having必须要在使用group by 的情况下才能使用。

  • order by 排序
    asc 升序,即从小到大,desc 降序,从大到小,默认是升序
    select * from student order by score desc;
    按某一字段排序时,可能出现值相同的情况,可以再指定多个字段排序
    select * from student order by score , id desc;

  • limit 分页
    当数据量过大时,一次性获得所有数据对数据库本身造成较大的负荷,对数据获得者来说也不一定有利
    select 字段名 from 表名 limit start,count
    其中 start表示从第几个开始,count表示获得几个。

  • join 连接查询
    当要查询的内容来源于多张表时,需要利用join将多个表连接成一张大表,常用的有inner join、left join 、right join。
    inner join 相当于取两张表的交集,显示两张表都有的记录。
    left join 取join 关键字按左边的表有的全部显示,右表中如果没有的话显示NULL。
    right join 取join关键字右边的表有的全部显示,左表中如果没有的话显示NULL。
    例scores表中的学生stu_id字段外键为students表中的id,现查询学生姓名、科目和对应成绩
    SELECT students.name, scores.subject, scores.score
    FROM student
    INNER JOIN score ON score.id = student.stu_id

  • 子查询
    查询语句的嵌套,将一条查询语句的结果作为条件给另一条查询语句。

一条查询语句各关键字顺序如下:
select <distinct> 字段1,字段2
from 表1
inner join 表2 on 表1某字段=表2某字段
where 条件
group by 字段名 having 条件
order by 字段名 asc/desc
limit 起始序号,每页个数
;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: