溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql數據庫實現單表查詢的方法

發布時間:2020-06-29 13:33:04 來源:億速云 閱讀:296 作者:Leah 欄目:MySQL數據庫

這期內容當中小編將會給大家帶來有關mysql數據庫實現單表查詢的方法,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

數據庫單表查詢的方法:1、select查詢操作,篩選列;2、where語句,篩選行;3、group by分組;4、having過濾條件,是針對組做過濾條件,是放在group by后面執行的;5、order by排序,對查詢出來的數據排序。

數據庫單表查詢的方法:

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

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

2、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 條件判斷語句

3、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

4、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中的表達式的值。(了解就好)
'''

5、聚合函數

1:#count 計數
2:#max  求最大值
3:#avg  求平均值
4:#min  求最小值
5:#sum  求和

6、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;

7、order by 排序

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

8limit 分頁

'''
可以和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;

上述就是小編為大家分享的mysql數據庫實現單表查詢的方法了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女