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(起始索引,顯示條數)

發佈了71 篇原創文章 · 獲贊 21 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章