【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條數據,不看姑娘

 

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