mysql---DQL

DQL:数据库查询语言(查询出来的都是虚拟结果集,存在内存里)
    
    条件查询where,后面可跟
         =,!=,<>,<,>,<=,>=
         between.. and..(在范围内)
         in(集合)
         is null,is not null
         and,or,not
         
         alter table student add stu_gender varchar(2);
         update student set stu_gender = '男';
         select * from student where stu_age = 10 or stu_gender = '男';
         select * from student WHERE stu_age BETWEEN 1 and 100;
         select * from student WHERE stu_age in(11,41);
         select * from student WHERE stu_name is not NULL;
         select * from student WHERE stu_name != 'name1';
        
    模糊查询,根据关键字查询like ...(_单个字符,%任意个字符)
        select * from student WHERE stu_name like '%1';
        select stu_name from student WHERE stu_name like '%a%';
        
    结果去重,只能对单列去重:
        select distinct stu_name from student;
    新增一个虚拟列,as起别名
        select *,stu_age+stu_score from student;
        select *,stu_age+stu_score as  stu_age_score from student;
        设置默认值,ifnull(列名,默认值):
        select *,ifnull(stu_age,0)+ifnull(stu_score,0) as  stu_age_score from student;
    排序:
        升序,order by 列名 asc   select stu_id from student ORDER BY stu_id asc;
        降序,order by 列名 desc  select stu_id from student ORDER BY stu_id desc;
    聚合函数:
        count(),sum(),avg(),max(),min()
        select count(*) from student;
        select sum(stu_score) from student;
        select avg(stu_score) from student;
        select max(stu_score) from student;
        select min(stu_score) from student;
    分组: 将查询结果按1个或者多个字段分组,字段值相同的为一组
        group by(列名)
        如:select stu_gender from student GROUP BY stu_gender;
            女
            男
        当group by单独使用时,只能显示出每组的第一条记录,因此单独使用group by的意义不大
        多用于以下使用场景:
            (一)GROUP_CONCAT,分组后输出字段
                select stu_gender,GROUP_CONCAT(stu_id) from student GROUP BY stu_gender;
                女    1,22,33,77
                男    4,3,7,11,44,99
                select stu_gender,GROUP_CONCAT(stu_name),GROUP_CONCAT(stu_score) from student GROUP BY stu_gender;
                女    name1,Abc,aaa,aaa                99,110,110,110
                男    name4,name3,name7,tomA,bbb,bbb    90,90,90,110,110,110
           (二)GROUP by 后使用聚合函数        
                select stu_gender,sum(stu_id) from student GROUP BY stu_gender;
    
           (三)group by + having:对GROUP by 后结果作筛选
                select stu_gender, count(stu_age) from student group by stu_gender  having count(stu_age) > 3;
                where对分组前的数据筛选,having对分组后的结果作筛选
                where后不能使用聚合函数,having对分组后的结果使用聚合函数作筛选
                where和having后都能使用order by 排序
                
    select 书写顺序:
        select -->from -->where--> group by--->order by-->limit(起始索引,显示条数)

发布了76 篇原创文章 · 获赞 21 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shen_chengfeng/article/details/103552774