數據庫的單表查詢


數據庫查詢(單表查詢)

  • 關鍵字執行的優先級(重點)

    重點中的重點:關鍵字的執行優先級
    1:from #找到表
    2:where #使用where指定的條件,去表中取出一條條記錄
    3:group by #將取出的數據進行分組,如果沒有指定,則整體作為一組
    4:having #將分組的結果按照having指定的條件進行過濾
    5:select #指定select查詢
    6:distinct #去重
    7:order by #將查詢的結果按照order by指定的字段進行排序
    8:limit #限制結果的顯示數量
    
  • select查詢操作(篩選列)

    1:#select 查詢操作
    	'''
    	注意所有select 查詢后面右加括號的方法,比如,select user()這種帶括號的都是Mysql的	 內置方法,select本身就是查詢操作,from只是說明從哪查,
    	'''
    	select * from 表名; #查詢表中所有的數據  *代表所有
    	select 字段名 from 表名;#查詢表中某一個字段的數據
    	select 字段名,字段名,字段名 from 表名;#查詢表中多個字段的數據
    	select database();#查詢返回當前操作的數據庫
    	select user();#查詢當前登陸的用戶
    	select now;#查詢返回當前的時間
    ===========================================================
    2:#distinct 去重操作
    	'''
    	當使用select查詢表某些字段數據的時候,這個字段中可能出現多個重復的數據,就可以使用	distinct對查詢出來的數據進行去重操作,distinct也可以對多個字段的數據進行聯合去重
    	'''
    	select dictinct 字段名 from 表名;#對查出來的字段數據進行去重
    	select distinct 字段名,字段名 from 表名;#對多個字段查詢的數據進行聯合去重
    ===========================================================
    3:#四則運算
    	'''
    	使用select 查詢某個字段的數據的時候,對數值類型的字段數據,可以進行四則運算,四則運	 算包括加減乘除等操作
    	'''
    	select 字段名*12 from 表名;#對查詢出來的數據乘以12,返回結果,>>字段名要是數值類		型
    ===========================================================
    4:#concat字符串拼接和concat_ws指定分割符進行拼接(自定義顯示的格式)
    	'''
    	concat內置函數可以對查詢出來的字段數據進行字符串拼接
    	'''
    	select concat('姓名:',name) from 表名;#對查詢出來的姓名字段的數據前面都加上一	  個字符串姓名,能夠友好的顯示查詢出來的數據的意思,其實就是字符串拼接
    	select concat(name,':',salary)as info from 表名;#concat還可以將兩個字段的數		據拼接,,產生一個新的字段數據顯示出來,as是個這個字段重命名
    	'''
    	concat_ws()函數也只是字符串拼接,不過concat_ws的憑借方式是類似與python join拼接	    的方式,就是以某個元素對多個字段的數據進行拼接
    	'''
    	
        select concat_ws('_','姓名:',name,'性別:',sex)as info from 表名;
    ==========================================================
    5:#case end 語句 對查詢出來的每一個數據進行加工和顯示
    	'''
    	case語句的作用是,對表中數據進行查詢時,對於查詢出來的語句進行進一步的加工,並且顯示	出來,case end語句有點像python里的if語句,不過sql的case語句需要表明開始和結		束,case代表開始,end代表結束.when代表的就是if條件,else就是其他,當有多個when的時	候,從第二個when開始就代表的類似於elif的意思,,,,,知道了解就好>>>>>>
    	'''
    select(
    	case
        when name='田少崗' concat(name,'逗比')
        when name='田彩' concat(name,'女神')
        else 
        	concat(name,'邊玩去')
       	end
    )as now_name from 表名;
    ==========================================================
    6:#select的相關總結;
        可以查一個,多個,*所有
        調用函數:now(),database(),concat(),concat_ws()
        可以四則運算
        可以去重 distinct
        可以使用case end 條件判斷語句
    
  • where 篩選行語句

    1:#范圍查詢
        #< > >= <= !=  <>代表不等於和!=是一個意思 
        select age from 表名 where age <100 and age>20;(多條件查詢)
        #between 1 and 10 找尋1到10之間的
        select age from 表名 where between 1 and 100; >>注意包含1和100
        #in (1,2,3,4) 多選一
        select age from 表名 where age in (10,20,30,40);
        #將age=10和age=20的都能取出來
        select age from 表名 where age=10 or age=20;
    2:#模糊查詢
        #like
        like的表現形式是,'%a'查詢以a結尾的,'a%'查詢以a開始的,'%a%'查詢包含a的
        select name from 表名 where name like '田%';>>>查詢出姓田的所有人
        like還有一種形式,'_a','a_','a__'一個划線代表一個字符,%代表的是任意長度
        select name from 表名 where name 'like '田_';>>>查詢出以田開頭的兩個字的姓名
        #regexp 可以使用正則匹配(記一下正則表達式)
    3:#is is not 
        is null is not null 一般用來判斷是不是空,
    4:#邏輯運算
        and or not	
    
  • group by(分組)

    '''group by可以對某個字段的值進行分組,這個字段有多少種值就分多少組,group by還有一個特性就是去重,一旦使用group by對數據分組了,就不能對某一條數據進行操作,永遠都是這一組數據'''
    group_concat()函數(只用來做最終的顯示,不做中間數據的操作)可以顯示當前這一組的所有信息,拼在一起顯示
    select post,group_concat(name),count(id) from employee group by post having count(id) < 2;
    '''
    mysql> set global sql_mode='STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY';
    ONLY_FULL_GROUP_BY的語義就是確定select target list中的所有列的值都是明確語義,簡單的說來,在ONLY_FULL_GROUP_BY模式下,target list中的值要么是來自於聚集函數的結果,要么是來自於group by list中的表達式的值。(了解就好)
    '''
    
  • 聚合函數

    1:#count 計數
    2:#max  求最大值
    3:#avg  求平均值
    4:#min  求最小值
    5:#sum  求和
    
  • having 過濾條件

    '''
    having是針對一個組做的過濾條件,是放在group by 后面執行的,他的意思和where是一樣的
    where group 和 having的執行順序是,where>group by>having,所以having一般都是和having一起用的
    '''
    select post,group_concat(name),count(id) from employee group by post having count(id) < 2;
    
  • order by 排序

    '''
    對查詢出來的數據進行排序,可以升序或者降序(desc),可以使用多個條件一起排序,執行順序按照從左到右執行排序
    '''
    SELECT * FROM employee ORDER BY salary; #默認是升序排列
    SELECT * FROM employee ORDER BY salary ASC; #升序
    SELECT * FROM employee ORDER BY salary DESC; #降序
    
  • limit 分頁

    '''
    可以和order by一起使用,先排序再分頁取幾個,還可以指定刪選的范圍,limit m,n這個意思是從m+1開始取n條數據,不如limit 0,6,就是從1開始取六條數據,然是limit分頁時,只適合做小數據的分頁,當數據量過大時,效率就會非常慢,limit還有一種語法是:limit n offset m,這個意思也是從m+1開始,取n條,這個語法知道就行,
    '''
    #默認初始位置為0,從第一條開始順序取出三條 
    	SELECT * FROM employee ORDER BY salary DESC LIMIT 3;
    #從第0開始,即先查詢出第一條,然后包含這一條在內往后查5條
        SELECT * FROM employee ORDER BY salary DESC
            LIMIT 0,5;  
    ##從第5開始,即先查詢出第6條,然后包含這一條在內往后查5條
        SELECT * FROM employee ORDER BY salary DESC
            LIMIT 5,5; 
    

多表查詢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM