最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

MySQL數(shù)據(jù)庫:SQl語句查詢關(guān)鍵字

2022-11-25 21:32 作者:限量版范兒  | 我要投稿

SQl語句查詢關(guān)鍵字

執(zhí)行的優(yōu)先級

優(yōu)先級關(guān)鍵字作用1from指定要查詢的表信息2where規(guī)定查詢條件,然后查詢并篩選3group by根據(jù)指定字段進行分組,如果沒有指定字段,則整個表為一組4having指定查詢的條件,篩選數(shù)據(jù)(二次篩選用在where之后)5select指定要查詢的信息6distinct將數(shù)據(jù)去重7order by對查詢的結(jié)果進行排序8limit限制查詢結(jié)果展示的數(shù)量

1.select

指定要查詢的信息

select * ? 查找所有字段 select name ?查找name字段 select char_length(name) ? 支持對字段做處理

①字符串拼接—concat(str1,str2,...)concat_ws(separator,str1,str2,...)

1)concat()拼接任意字符串

# concat() select concat('姓名:',name,'|','年齡:',age) from emp; +----------------------------------------------+ | concat('姓名:',name,'|','年齡:',age) ? ? ? | +----------------------------------------------+ | 姓名:jason|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ? | | 姓名:tom|年齡:78 ? ? ? ? ? ? ? ? ? ? ? ? ? | | 姓名:kevin|年齡:81 ? ? ? ? ? ? ? ? ? ? ? ? | | 姓名:tony|年齡:73 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:owen|年齡:28 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:jack|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:jenny|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ? | | 姓名:sank|年齡:48 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:哈哈|年齡:48 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:呵呵|年齡:38 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:西西|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:樂樂|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:拉拉|年齡:28 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:僧龍|年齡:28 ? ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:程咬金|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:程咬銀|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:程咬銅|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ?| | 姓名:程咬鐵|年齡:18 ? ? ? ? ? ? ? ? ? ? ? ?| +----------------------------------------------+ 18 rows in set (0.01 sec)

2)concat_ws()指定一個連接符號拼接字符串,第一個參數(shù)separator是指定的連接符

# concat_ws() mysql> select concat('信息>>>:',name,age) from emp; +-------------------------------+ | concat('信息>>>:',name,age) ? | +-------------------------------+ | 信息>>>:jason18 ? ? ? ? ? ? ? | | 信息>>>:tom78 ? ? ? ? ? ? ? ? | | 信息>>>:kevin81 ? ? ? ? ? ? ? | | 信息>>>:tony73 ? ? ? ? ? ? ? ?| | 信息>>>:owen28 ? ? ? ? ? ? ? ?| | 信息>>>:jack18 ? ? ? ? ? ? ? ?| | 信息>>>:jenny18 ? ? ? ? ? ? ? | | 信息>>>:sank48 ? ? ? ? ? ? ? ?| | 信息>>>:哈哈48 ? ? ? ? ? ? ? ?| | 信息>>>:呵呵38 ? ? ? ? ? ? ? ?| | 信息>>>:西西18 ? ? ? ? ? ? ? ?| | 信息>>>:樂樂18 ? ? ? ? ? ? ? ?| | 信息>>>:拉拉28 ? ? ? ? ? ? ? ?| | 信息>>>:僧龍28 ? ? ? ? ? ? ? ?| | 信息>>>:程咬金18 ? ? ? ? ? ? ?| | 信息>>>:程咬銀18 ? ? ? ? ? ? ?| | 信息>>>:程咬銅18 ? ? ? ? ? ? ?| | 信息>>>:程咬鐵18 ? ? ? ? ? ? ?| +-------------------------------+ 18 rows in set (0.00 sec)

2.from

指定要查詢的表信息

from mysql.user from t1

SQL語句中關(guān)鍵字的執(zhí)行順序和編寫順序并不是一致的

比如我們編寫SQL語句查找數(shù)據(jù)的時候,select寫在from之前,但是先執(zhí)行的是from

select id from usertable; # 我們先寫的select在寫from 但是先執(zhí)行的是from

3.where篩選

where+條件可以篩選出我們想要的數(shù)據(jù)

  • 編寫SQL語句的技巧

SQL語句的編寫需要反復(fù)修改,一次性寫完容易出錯

針對select后面的字段名可以先用填寫*占位,寫完在修改

而在實際情況中,select后面很少直接寫*,因為*表示所有,*查詢表中的字段和數(shù)據(jù)非常浪費資源、效率也很低

①比較運算 -?<、><=、>=、!=<>

通過使用比較運算符號篩選數(shù)據(jù)

# 查詢id>=3的數(shù)據(jù) select * from emp where id>=3;

② 邏輯運算 -?andor、not

通過邏輯運算符連接比較運算符

# 查詢年紀(jì) 大于40 以及 小于20的員工 select * from emp where age>40 or age<20; # 查詢id小于3大于6的數(shù)據(jù) select * from emp where id<3 or id>6; -- 可以去反not select * from emp where id not between 3 and 6;

③ 成員運算 -?innot in

在特定的值中獲?。?code>in

取反:not in

# 查詢薪資是 20000 或者18000 或者17000 select * from emp where salary=20000 or salary=18000 or salary=17000; -- 支持成員運算 in select * from emp where salary in (20000,18000,17000);

④ 區(qū)間 -?between

取出某一區(qū)間:between ... and ...

-- 支持邏輯運算符 between select * from emp where salary between 999 and 3001;

⑤ 模糊查詢 -?like

條件不夠精確的查詢 稱之為?模糊查詢

1)匹配任意多個字符%

  • %n%可以匹配 字母n,在字符的開頭/結(jié)尾/中間,且不限個數(shù)

如: %p% 可以匹配 字母p 在字符的 開頭/結(jié)尾/中間,且不限個數(shù) ? ? ? 如 p pick poop oppo loop

  • %n?只可以匹配結(jié)尾是n的字符

2)匹配任意單個字符_

  • _a___只匹配一個字母a在第2位的5位字符

# 查詢員工姓名是由四個字符組成的員工姓名和薪資 -- 一個下劃線表示一個字符 select * from emp where name like '__';

字符長度也可以通過char_length()函數(shù)去查詢

通過help 方法名來查看內(nèi)置方法,查看幫助手冊學(xué)習(xí)MySQL內(nèi)的方法

⑥身份運算符is

NULL值的判斷不能用=而需要用?is

為什么數(shù)據(jù)庫篩選空字節(jié)要用is NULL而不是=NULL

參見這個博客
https://www.cnblogs.com/zhoujinyi/archive/2012/10/17/2726462.html
總結(jié):
null不占用內(nèi)存空間,是一個標(biāo)志位判斷。

''數(shù)據(jù)雖然不需要占用任何存儲空間,但是在變長字段列表里面還是需要占用一個字節(jié)<畢竟還是一個''值>

# 查看崗位是銷售的員工 select * from emp where post_comment=NULL; -- 不可以 -- 通過is判斷 select * from emp where post_comment is NULL; -- 可以

4.group by 分組

分組行為發(fā)生在where條件之后,我們可以將查詢到的記錄按照某個相同字段進行歸類,一般分組都會配合聚合函數(shù)進行使用。

需要注意的是select語句是排在group by條件之后的,因此聚合函數(shù)也能在select語句中使用。

(1)分組的含義

根據(jù)指定字段進行分組,如果沒有指定字段,則整個表為一組

如:將班級學(xué)生按照性別分組

(2)分組的目的:

?為了更好的統(tǒng)計相關(guān)數(shù)據(jù)

(3)聚合函數(shù)

?專門用于分組之后的數(shù)據(jù)統(tǒng)計的函數(shù)

聚合函數(shù)可以在where執(zhí)行后的所有語句中使用,比如havingselect等。

函數(shù)名用途max()最大值min()最小值sum()求和avg()平均值count()計數(shù)

(4)如何分組

1)例1:將員工按照部門分組

當(dāng)我們使用SQL語句?group by分組時

select * from emp group by post;

在MySQL 5.6 版本中,不報錯

在MySQL5.7及8.0默認(rèn)都會直接報錯

報錯原因:分組之后select后面默認(rèn)只能填寫分組的依據(jù),不能再寫其他字符段

# 正確的寫法 select post from emp group by post; -- 在select后面要寫分組的字段名 select name from emp group by name;

分組之后默認(rèn)的最小單位,應(yīng)該是組篩選出來的范圍也就是組,而不應(yīng)該在是組內(nèi)單個數(shù)據(jù)單個字段

# 正確的查詢 mysql> select post from emp group by post; +-----------------------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| +-----------------------------+ | operation ? ? ? ? ? ? ? ? ? | | sale ? ? ? ? ? ? ? ? ? ? ? ?| | teacher ? ? ? ? ? ? ? ? ? ? | | 浦東第一帥形象代言 ? ? ? ? ?| +-----------------------------+ 4 rows in set (0.00 sec) # 報錯 mysql> select * from emp group by post; ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'empdb.emp.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

2)例2:獲取每個部門的最高工資

需求中出現(xiàn)?關(guān)鍵字?比如最高、平均...

==>使用聚合函數(shù)

# max獲取得最高工資 select post,max(salary) from emp group by post;mysql> select post,max(salary) from emp group by post; +-----------------------------+-------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| max(salary) | +-----------------------------+-------------+ | operation ? ? ? ? ? ? ? ? ? | ? ?20000.00 | | sale ? ? ? ? ? ? ? ? ? ? ? ?| ? ? 4000.33 | | teacher ? ? ? ? ? ? ? ? ? ? | ?1000000.31 | | 浦東第一帥形象代言 ? ? ? ? ?| ? ? 7300.33 | +-----------------------------+-------------+ 4 rows in set (0.01 sec)# 獲取每個部門最小的年齡 select post,min(age) from emp group by post;

*as起別名

針對sql語句執(zhí)行后的結(jié)果,我們可以通過as來起別名修改名稱字段

select post as '部門',max(salary) as '最高薪資' from emp group by post;mysql> select post as '部門',max(salary) as '最高薪資' from emp group by post; +-----------------------------+--------------+ | 部門 ? ? ? ? ? ? ? ? ? ? ? ?| 最高薪資 ? ? | +-----------------------------+--------------+ | operation ? ? ? ? ? ? ? ? ? | ? ? 20000.00 | | sale ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ?4000.33 | | teacher ? ? ? ? ? ? ? ? ? ? | ? 1000000.31 | | 浦東第一帥形象代言 ? ? ? ? ?| ? ? ?7300.33 | +-----------------------------+--------------+ 4 rows in set (0.00 sec)# 起別名 mysql> select age as '年齡',min(salary) as '最低薪' from emp group by age; +--------+------------+ | 年齡 ? | 最低薪 ? ? | +--------+------------+ | ? ? 18 | ? ?1000.37 | | ? ? 28 | ? ?2100.00 | | ? ? 38 | ? ?2000.35 | | ? ? 48 | ? ?3000.13 | | ? ? 73 | ? ?3500.00 | | ? ? 78 | 1000000.31 | | ? ? 81 | ? ?8300.00 | +--------+------------+ 7 rows in set (0.00 sec)

3)例3:一次性獲取部門薪資統(tǒng)計

連續(xù)跟多個聚合函數(shù)并用as起別名

  • 用職位分組

select post,max(salary) as '最高薪水',min(salary) as '最少薪水',avg(salary) as '平均薪水',sum(salary) as '月支出' from emp group by post;mysql> select post,max(salary) as '最高薪水',min(salary) as '最少薪水',avg(salary) as '平均薪水',sum(salary) as '月支出' from emp group by post; +-----------------------------+--------------+--------------+---------------+------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| 最高薪水 ? ? | 最少薪水 ? ? | 平均薪水 ? ? ?| 月支出 ? ? | +-----------------------------+--------------+--------------+---------------+------------+ | operation ? ? ? ? ? ? ? ? ? | ? ? 20000.00 | ? ? 10000.13 | ?16800.026000 | ? 84000.13 | | sale ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ?4000.33 | ? ? ?1000.37 | ? 2600.294000 | ? 13001.47 | | teacher ? ? ? ? ? ? ? ? ? ? | ? 1000000.31 | ? ? ?2100.00 | 151842.901429 | 1062900.31 | | 浦東第一帥形象代言 ? ? ? ? ?| ? ? ?7300.33 | ? ? ?7300.33 | ? 7300.330000 | ? ?7300.33 | +-----------------------------+--------------+--------------+---------------+------------+ 4 rows in set (0.01 sec)

  • 用年齡分組

mysql> select age,min(salary) as '最低工資',max(salary) as '最高工資',avg(salary) as '平均工資' from emp group by age; +-----+--------------+--------------+----------------+ | age | 最低工資 ? ? | 最高工資 ? ? | 平均工資 ? ? ? | +-----+--------------+--------------+----------------+ | ?18 | ? ? ?1000.37 | ? ? 30000.00 | ? 13811.221111 | | ?28 | ? ? ?2100.00 | ? ? 10000.13 | ? ?5366.820000 | | ?38 | ? ? ?2000.35 | ? ? ?2000.35 | ? ?2000.350000 | | ?48 | ? ? ?3000.13 | ? ? 10000.00 | ? ?6500.065000 | | ?73 | ? ? ?3500.00 | ? ? ?3500.00 | ? ?3500.000000 | | ?78 | ? 1000000.31 | ? 1000000.31 | 1000000.310000 | | ?81 | ? ? ?8300.00 | ? ? ?8300.00 | ? ?8300.000000 | +-----+--------------+--------------+----------------+

4)例4:統(tǒng)計每個部門的人數(shù)count()

count()統(tǒng)計的時候通常用唯一標(biāo)識字段作為統(tǒng)計的依據(jù)

select post,count(id) from emp group by post;mysql> select post,count(id) from emp group by post; +-----------------------------+-----------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| count(id) | +-----------------------------+-----------+ | operation ? ? ? ? ? ? ? ? ? | ? ? ? ? 5 | | sale ? ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? 5 | | teacher ? ? ? ? ? ? ? ? ? ? | ? ? ? ? 7 | | 浦東第一帥形象代言 ? ? ? ? ?| ? ? ? ? 1 | +-----------------------------+-----------+ 4 rows in set (0.00 sec)

5)例5:統(tǒng)計每個部門的部門名稱以及部門下的員工姓名group_concat()

group_concat()分組之后其他字段的篩選與拼接

# 錯誤 不符合SQL語句的語法 select post,name from emp group by post; # 正確寫法,用group_concat()來拼接篩選后的結(jié)果 select post,group_concat(name) from emp group by post;mysql> select post,group_concat(name) from emp group by post; +-----------------------------+------------------------------------------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| group_concat(name) ? ? ? ? ? ? ? ? ? ? ? ? ? ? | +-----------------------------+------------------------------------------------+ | operation ? ? ? ? ? ? ? ? ? | 僧龍,程咬金,程咬銀,程咬銅,程咬鐵 ? ? ? ? ? ? ? | | sale ? ? ? ? ? ? ? ? ? ? ? ?| 哈哈,呵呵,西西,樂樂,拉拉 ? ? ? ? ? ? ? ? ? ? ? | | teacher ? ? ? ? ? ? ? ? ? ? | tom,kevin,tony,owen,jack,jenny,sank ? ? ? ? ? ?| | 浦東第一帥形象代言 ? ? ? ? ?| jason ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| +-----------------------------+------------------------------------------------+ 4 rows in set (0.00 sec)

  • 統(tǒng)計各個性別的人名

# 用 group_concat() 與 group by select gender,group_concat(name) from emp group by gender; +--------+-----------------------------------------------------------------+ | gender | group_concat(name) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| +--------+-----------------------------------------------------------------+ | male ? | jason,tom,kevin,tony,owen,jenny,sank,僧龍,程咬金,程咬銅 ? ? ? ? | | female | jack,哈哈,呵呵,西西,樂樂,拉拉,程咬銀,程咬鐵 ? ? ? ? ? ? ? ? ? ? | +--------+-----------------------------------------------------------------+ 2 rows in set (0.00 sec)

  • group_concat()拼接字段與字符串

select post,group_concat(name,'|',age) from emp group by post;mysql> select post,group_concat(name,'|',age) from emp group by post; +-----------------------------+---------------------------------------------------------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| group_concat(name,'|',age) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| +-----------------------------+---------------------------------------------------------------+ | operation ? ? ? ? ? ? ? ? ? | 僧龍|28,程咬金|18,程咬銀|18,程咬銅|18,程咬鐵|18 ? ? ? ? ? ? ? | | sale ? ? ? ? ? ? ? ? ? ? ? ?| 哈哈|48,呵呵|38,西西|18,樂樂|18,拉拉|28 ? ? ? ? ? ? ? ? ? ? ? | | teacher ? ? ? ? ? ? ? ? ? ? | tom|78,kevin|81,tony|73,owen|28,jack|18,jenny|18,sank|48 ? ? ?| | 浦東第一帥形象代言 ? ? ? ? ?| jason|18 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| +-----------------------------+---------------------------------------------------------------+ 4 rows in set (0.00 sec)

5.having過濾

指定查詢的條件,篩選數(shù)據(jù)(二次篩選用在where之后)

(1)having和where的區(qū)別

相同having 與 where 本質(zhì)是一樣的,都是用來對數(shù)據(jù)做篩選

不同:?where用在分組之前(首次篩選)

?having用在分組之后(二次篩選)

1)統(tǒng)計各部門年齡在30以上的員工工資,并且保留平均工資大于10000的部門

對于復(fù)雜的SQL語句,我們可以先分解成幾步,然后將每條SQL的結(jié)果可以看成一張表,并基于這個結(jié)果再去進行復(fù)雜的操作

比如:我們可以分布編寫,復(fù)雜度從簡入難

編寫順序:1) where 條件 2) group by 分組 3)having 條件

# 1 先篩選出所有年齡大于30歲的員工數(shù)據(jù) select * from emp where age >30; # 2 在對篩選出來的數(shù)據(jù)按照部門分組并統(tǒng)計平均薪資 select post,avg(salary) from emp where age >30 group by post; # 3 針對分組統(tǒng)計之后的結(jié)果做二次篩選 select post,avg(salary) from emp where age >30 group by post having avg(salary) > 10000; ----結(jié)果 +---------+---------------+ | post ? ?| avg(salary) ? | +---------+---------------+ | teacher | 255450.077500 | +---------+---------------+ 1 row in set (0.00 sec)

  • 按年齡分組

select age,avg(salary) as avg_salary -- 起別名 from emp where id>15 -- 第一次篩選 group by age having avg_salary >10000; -- 二次篩選 mysql> select age,avg(salary) as avg_salary from emp where id>15 ? ?-> group by age having avg_salary >10000; +-----+--------------+ | age | avg_salary ? | +-----+--------------+ | ?18 | 18000.000000 | +-----+--------------+ 1 row in set (0.00 sec)

6.distinct去重

distinct用于數(shù)據(jù)去重

去重的條件是存在數(shù)據(jù)必須一模一樣才可以去重

當(dāng)distinct后面有多個關(guān)鍵字的時候,針對的是多個字段組合后的結(jié)果去重

# age和id的組合不重復(fù) select distinct age,id from emp; mysql> select distinct age,id from emp; +-----+----+ | age | id | +-----+----+ | ?18 | ?1 | | ?78 | ?2 | | ?81 | ?3 | | ?73 | ?4 | | ?28 | ?5 | | ?18 | ?6 | | ?18 | ?7 | | ?48 | ?8 | | ?48 | ?9 | | ?38 | 10 | | ?18 | 11 | | ?18 | 12 | | ?28 | 13 | | ?28 | 14 | | ?18 | 15 | | ?18 | 16 | | ?18 | 17 | | ?18 | 18 | +-----+----+ 18 rows in set (0.00 sec)# 去重 age和salary的組合 select distinct age,salary from emp; +-----+------------+ | age | salary ? ? | +-----+------------+ | ?18 | ? ?7300.33 | | ?78 | 1000000.31 | | ?81 | ? ?8300.00 | | ?73 | ? ?3500.00 | | ?28 | ? ?2100.00 | | ?18 | ? ?9000.00 | | ?18 | ? 30000.00 | | ?48 | ? 10000.00 | | ?48 | ? ?3000.13 | | ?38 | ? ?2000.35 | | ?18 | ? ?1000.37 | | ?18 | ? ?3000.29 | | ?28 | ? ?4000.33 | | ?28 | ? 10000.13 | | ?18 | ? 20000.00 | | ?18 | ? 19000.00 | | ?18 | ? 18000.00 | | ?18 | ? 17000.00 | +-----+------------+ 18 rows in set (0.00 sec)

7.查詢關(guān)鍵字之order by 排序

ordery by用于對查詢結(jié)果進行排序

默認(rèn)的排序是按照主鍵進行排序的

(1)單個字段排序

# 默認(rèn)升序 select * from emp order by age; -- asc可以升序

# desc可以改成降序 select * from emp order by age desc;

(2)多個字段排序

先按照一個條件升序排列,相同的情況下再按照薪資降序排列

select * from emp order by age,salary desc; -- desc 修改為倒敘

1)例1:統(tǒng)計各部門年齡在10歲以上的員工平均工資,并且保留平均工資大于1000的部門,然后對平均工資進行排序

1# 先篩選出所有年齡大于10歲的員工 select * from emp where age >10; 2# 再按照部門分組 select post,avg(salary) from emp where age >10 group by post; 3# 針對分組的結(jié)果做二次篩選 select post,avg(salary) from emp where age >10 group by post having avg(salary)>1000; 4# 最后按照指定字段排序 select post,avg(salary) from emp where age >10 group by post having avg(salary)>1000 order by avg(salary);mysql> select post,avg(salary) from emp where age >10 group by post having avg(salary)>1000 order by avg(salary); +-----------------------------+---------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| avg(salary) ? | +-----------------------------+---------------+ | sale ? ? ? ? ? ? ? ? ? ? ? ?| ? 2600.294000 | | 浦東第一帥形象代言 ? ? ? ? ?| ? 7300.330000 | | operation ? ? ? ? ? ? ? ? ? | ?16800.026000 | | teacher ? ? ? ? ? ? ? ? ? ? | 151842.901429 | +-----------------------------+---------------+ 4 rows in set (0.00 sec)

當(dāng)一條sql語句中重復(fù)使用聚合函數(shù)計算的結(jié)果的時候,我們可以通過as起別名節(jié)省操作

用as 起別名,可以節(jié)省調(diào)用次數(shù),也就是節(jié)省了底層運行效率

# 用as 起別名,節(jié)省調(diào)用次數(shù),也就是節(jié)省了底層運行效率 select post,avg(salary) as asg from emp where age >10 group by post having asg>1000 order by asg;mysql> select post,avg(salary) as asg from emp where age >10 group by post having asg>1000 order by asg; +-----------------------------+---------------+ | post ? ? ? ? ? ? ? ? ? ? ? ?| asg ? ? ? ? ? | +-----------------------------+---------------+ | sale ? ? ? ? ? ? ? ? ? ? ? ?| ? 2600.294000 | | 浦東第一帥形象代言 ? ? ? ? ?| ? 7300.330000 | | operation ? ? ? ? ? ? ? ? ? | ?16800.026000 | | teacher ? ? ? ? ? ? ? ? ? ? | 151842.901429 | +-----------------------------+---------------+ 4 rows in set (0.01 sec)

8.limit分頁

limit用于控制顯示的條數(shù)

當(dāng)表中數(shù)據(jù)特別多的情況下,不會一次性展示所有的數(shù)據(jù)

比如:網(wǎng)站的分頁出來,一次只展示固定數(shù)量的數(shù)據(jù)

(1)limit num 直接限制展示的條數(shù)

limit num

mysql> select * from emp limit 3; +----+-------+--------+-----+------------+-----------------------------+--------------+------------+--------+-----------+ | id | name ?| gender | age | hire_date ?| post ? ? ? ? ? ? ? ? ? ? ? ?| post_comment | salary ? ? | office | depart_id | +----+-------+--------+-----+------------+-----------------------------+--------------+------------+--------+-----------+ | ?1 | jason | male ? | ?18 | 2017-03-01 | 浦東第一帥形象代言 ? ? ? ? ?| NULL ? ? ? ? | ? ?7300.33 | ? ?401 | ? ? ? ? 1 | | ?2 | tom ? | male ? | ?78 | 2015-03-02 | teacher ? ? ? ? ? ? ? ? ? ? | NULL ? ? ? ? | 1000000.31 | ? ?401 | ? ? ? ? 1 | | ?3 | kevin | male ? | ?81 | 2013-03-05 | teacher ? ? ? ? ? ? ? ? ? ? | NULL ? ? ? ? | ? ?8300.00 | ? ?401 | ? ? ? ? 1 | +----+-------+--------+-----+------------+-----------------------------+--------------+------------+--------+-----------+ 3 rows in set (0.00 sec)

(2)limit num1,num2?限制展示范圍

limit num1,num2?表示至展示結(jié)果中的 排序為num1-num2的數(shù)據(jù)

mysql> select * from emp limit 3,6; +----+--------+--------+-----+------------+---------+--------------+----------+--------+-----------+ | id | name ? | gender | age | hire_date ?| post ? ?| post_comment | salary ? | office | depart_id | +----+--------+--------+-----+------------+---------+--------------+----------+--------+-----------+ | ?4 | tony ? | male ? | ?73 | 2014-07-01 | teacher | NULL ? ? ? ? | ?3500.00 | ? ?401 | ? ? ? ? 1 | | ?5 | owen ? | male ? | ?28 | 2012-11-01 | teacher | NULL ? ? ? ? | ?2100.00 | ? ?401 | ? ? ? ? 1 | | ?6 | jack ? | female | ?18 | 2011-02-11 | teacher | NULL ? ? ? ? | ?9000.00 | ? ?401 | ? ? ? ? 1 | | ?7 | jenny ?| male ? | ?18 | 1900-03-01 | teacher | NULL ? ? ? ? | 30000.00 | ? ?401 | ? ? ? ? 1 | | ?8 | sank ? | male ? | ?48 | 2010-11-11 | teacher | NULL ? ? ? ? | 10000.00 | ? ?401 | ? ? ? ? 1 | | ?9 | 哈哈 ? | female | ?48 | 2015-03-11 | sale ? ?| NULL ? ? ? ? | ?3000.13 | ? ?402 | ? ? ? ? 2 | +----+--------+--------+-----+------------+---------+--------------+----------+--------+-----------+ 6 rows in set (0.01 sec)

(3)limit展示的結(jié)果與篩選結(jié)果的順序有關(guān)

比如:where篩選的結(jié)果,按照主鍵的順序來排列的

# 表示查詢 id name age 信息,并篩選出其中age>40的數(shù)據(jù),并只展示其中的第3條到第6條消息 select id,name,age from emp where age > 40 limit 3,6; +----+--------+-----+ | id | name ? | age | +----+--------+-----+ | ?8 | sank ? | ?48 | | ?9 | 哈哈 ? | ?48 | +----+--------+-----+ 2 rows in set (0.01 sec)

(4)通過limit來限制查詢的信息

查詢工資最高的人的詳細(xì)信息

# 錯誤sql語句,比如用了聚合函數(shù)后不能對其他字段進行操作 select max(salary) from emp; # 正確 select * from emp order by salary desc limit 1;

# 查詢年齡分組中最高的工資,并打印 拼接每組的name和ID,且限制展示兩條 select age,group_concat(name,id),max(salary) from emp group by age limit 2;

9.regexp正則表達式

SQL語句的模糊匹配如果用不習(xí)慣 也可以自己寫正則批量查詢

select * from emp where name regexp '^j.';

  • 正則表達式報錯

select * from emp where name regexp '^j.*?(n|y)$';

在MySQL中并非所有的正則表達式都可以使用,所以我們需要看是否編寫的正則表達式符合MySQL的正則要求

鏈接:https://www.dianjilingqu.com/622336.html

MySQL數(shù)據(jù)庫:SQl語句查詢關(guān)鍵字的評論 (共 條)

分享到微博請遵守國家法律
宁德市| 正宁县| 库车县| 阿荣旗| 龙泉市| 阿拉善右旗| 怀化市| 黎城县| 西城区| 定州市| 麻城市| 乌恰县| 新乡市| 洛扎县| 泗洪县| 庆城县| 山阴县| 建宁县| 黑山县| 洛扎县| 会宁县| 拜城县| 长海县| 尚义县| 乳源| 白城市| 金门县| 玉山县| 永定县| 吴川市| 萝北县| 卓尼县| 长寿区| 德化县| 望都县| 息烽县| 高安市| 锦屏县| 叶城县| 治县。| 敦化市|