【mysql 数据库】07 数据库【查】花式操作!强烈安利!配套资源可以下载!

1、基本语法

  • 格式:select * from 表名
  • 说明:
    from 关键字后面是表名,表示数据来源于这张表
    select后面写表中的列名,如果 * 表示在结果集中显示表中的所有列
    在select后面的列名部分,可以使用as 为 列名 起 别名,这个别名显示在结果集中
    如果要查询多个列,之间使用逗号分隔
  • 示例:

    select name,age from student;(查取特定的字段)


    select name as n,age from student;(起别名)


     

2、消除重复行

  • 在 select 后面 列前面使用 distinct 可以消除重复的行
  • 示例:

    select gender from student;
    select distinct gender from student;



     

3、条件查询

  • 语法:select * from 表名 where 条件
     
  • 比较运算符

    等于 =

    大于 >

    小于 <

    大于等于 >=

    小于等于 <=

    不等于 != 或 <>(这个基本不使用)

    eg: 查询 id 值 大于 8 的 所有的数据

    select * from student where id>8;



     
  • 逻辑运算符

    and 并且

    or 或者

    not 非

    eg:查询 id 值大于 7 的女同学

    select * from student where id>7 and gender=0;



     
  • 模糊查询

    like

    % 表示任意多个字符
    eg:查询 姓冯的同学
    select * from student where name like '冯%';



    _  表示一个任意字符
    eg:查询 姓冯的同学
    select * from student where name like ' 冯_ ' ;


     
  • 范围查询

    in 表示在一个非连续的范围内
    eg:查询编号为 8 ,10 ,12 的学生
    select * from student where id in (8,10,12);



    between ... and ... 表示在一个连续的范围内
    eg:查询编号为 6~8 的学生
    select * from student where id between 6 and 8;



     
  • 空判断

    注意: null 与 ‘ ’ 是不同的
    判断空:is null
    判断非空:is not null

    eg:查询没有地址的同学
    示例:select * from student where address is null;



    eg:查询有地址的同学
    示例:select * from student where address is not null;



     
  • 优先级

    小括号,not,比较运算符,逻辑运算符

    and 比 or 的优先级高,如果同时出现并希望先选择 or ,需要使用小括号

     

4、聚合

    为了快速得到统计数据,提供了 5 个聚合函数

  1. count(*) 表示计算总行数,括号中可以写*和列名

    需求:查询学生总数
    示例: select count(*) from student;  ==  select count(id) from student;

     
  2. max(列)表示求此列的最大值

    需求:查询女生编号的最大值
    示例: select max(id) from student where gender=0;

     
  3. min(列)表示求此列的最小值

    需求:查询女生编号的最小值
    示例: select min(id) from student where gender=0;

     
  4. sum(列)表示求此列的和

    需求:查询所有女生的年龄之和
    示例: select sum(age) from student where gender=0;

     
  5. avg(列) 表示求此列的平均值

    需求:查询所有女生的年龄的平均值
    示例: select avg(age) from student where gender=0;


     

5、分组

  • 按照字段分组,表示此字段相同的数据会被放到一个集合中。
  • 分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集里
  • 可以对分组后的数据进行统计,做聚合运算
  • 语法:select 列1,列2,聚合... from 表名 group by 列1,列2,列3
  • 需求:查询男女生的总数
  • 示例:

    select gender,count(*) from student group by gender;



    select name,gender,count(*) from student group by gender,age;


     
  • 分组后的数据筛选:select 列 1 ,列 2 ,聚合 ...... from 表名 group by 列 1 ,列 2 ,列 3 ,...... having 列 1 ,......聚合......

    示例: select gender, count(*) from student group by gender having gender;
    (找出有 gender 的 数据 因为 女生默认为 0 所以只筛选了男生 1 True)



    select gender, count(*) from student group by gender having gender=0;

  • where 与 having 的区别

    where 是对 from 后面指定的表进行筛选,属于对原始数据的筛选

    having 是对 group by 的结果进行筛选
     

6、排序
 

  • 语法:select * from 表名 order by 列 1 asc|desc , 列2 asc | desc ,......
     
  • 说明:

    将数据按照列1进行排序,如果某些列1的值相同,则按照列2进行排序

    默认按照从小到大的顺序排序

    asc 降序

    desc 升序

     
  • 示例:

    按年龄排序

    select * from student order by age;



    将没有删除的数据按年龄排序

    select * from student where isDelete=0 order by age;



    上表中年龄相同的按照 id 值 大小 升序排序,接下来我们改为降序排列

 

7、分页
 

  • 语法:select * from 表名 limit start ,count;
     
  • 说明:若表中数据很多,可分页浏览

    start 索引从 0 开始
     
  • 示例:

    select * from student limit 0,3;



    select * from student limit 3,3;



    select * from student where gender=1 limit 3,3;     此条看了性别为男的第3,4,5条数据,不看姑娘

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章