日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL單表查詢實例詳解

瀏覽:391日期:2023-10-12 09:22:51

1、準(zhǔn)備數(shù)據(jù)

以下操作將在該表中進(jìn)行

create table student ( id int unsigned primary key auto_increment, name char(12) not null, gender enum('male','famale') default 'male', age tinyint unsigned not null, hoc_group char(12) not null, html tinyint unsigned not null, css tinyint unsigned not null, js tinyint unsigned not null, sanction enum('大處分','小處分','無'));insert into student(name,gender,age,hoc_group,html,css,js,sanction) values ('Yunya','male',18,'first',88,93,76,'無'), ('Jack','male',17,'second',92,81,88,'無'), ('Bella','famale',17,'first',72,68,91,'小處分'), ('Dairis','famale',18,'third',89,54,43,'大處分'), ('Kyle','famale',19,'fifth',31,24,60,'大處分'), ('Alice','famale',16,'second',49,23,58,'無'), ('Ken','male',16,'third',33,62,17,'大處分'), ('Jason','male',21,'fourth',91,92,90,'無'), ('Tom','male',20,'fifth',88,72,91,'無'), ('Fiona','famale',19,'fourth',60,71,45,'無');

2、查詢語法

SELECT DISTINCT(字段名1,字段名2...) FROM 表名 WHERE 條件 GROUP BY 字段名 HAVING 篩選 ORDER BY 字段名 asc/desc LIMIT 限制條數(shù);

3、執(zhí)行順序

雖然查詢的書寫語法是上面那樣的,但是其內(nèi)部執(zhí)行順序卻有些不太一樣。

1.通過from找到將要查詢的表

2.where規(guī)定查詢條件,在表記錄中逐行進(jìn)行查詢并篩選出符合規(guī)則的記錄

3.將查到的記錄進(jìn)行字段分組group by,如果沒有進(jìn)行分組,則默認(rèn)為一組

4.將分組得到的結(jié)果進(jìn)行having篩選,可使用聚和函數(shù)(where時不可使用聚合函數(shù))

5.執(zhí)行select準(zhǔn)備打印

6.執(zhí)行distinct對打印結(jié)果進(jìn)行去重

7.執(zhí)行ordery by對結(jié)果進(jìn)行排序

8.執(zhí)行l(wèi)imit對打印結(jié)果的條數(shù)進(jìn)行限制

4、select

select主要復(fù)負(fù)責(zé)打印相關(guān)的工作

4.1 全部查詢

使用select * from 表名可拿到該表下全部的數(shù)據(jù)

以下示例將展示使用全部查詢拿到student表中所有記錄

select * from student; +----+--------+--------+-----+-----------+------+-----+----+-----------+| id | name | gender | age | hoc_group | html | css | js | sanction |+----+--------+--------+-----+-----------+------+-----+----+-----------+| 1 | Yunya | male | 18 | first | 88 | 93 | 76 | 無 || 2 | Jack | male | 17 | second | 92 | 81 | 88 | 無 || 3 | Bella | famale | 17 | first | 72 | 68 | 91 | 小處分 || 4 | Dairis | famale | 18 | third | 89 | 54 | 43 | 大處分 || 5 | Kyle | famale | 19 | fifth | 31 | 24 | 60 | 大處分 || 6 | Alice | famale | 16 | second | 49 | 23 | 58 | 無 || 7 | Ken | male | 16 | third | 33 | 62 | 17 | 大處分 || 8 | Jason | male | 21 | fourth | 91 | 92 | 90 | 無 || 9 | Tom | male | 20 | fifth | 88 | 72 | 91 | 無 || 10 | Fiona | famale | 19 | fourth | 60 | 71 | 45 | 無 |+----+--------+--------+-----+-----------+------+-----+----+-----------+

4.2 字段查詢

使用select 字段名1,字段名2 from 表名可拿到特定字段下相應(yīng)的數(shù)據(jù)

以下示例將展示使用字段查詢拿到每個學(xué)生的HTMLCSSJS成績

select name,html,css,js from student;+--------+------+-----+----+| name | html | css | js |+--------+------+-----+----+| Yunya | 88 | 93 | 76 || Jack | 92 | 81 | 88 || Bella | 72 | 68 | 91 || Dairis | 89 | 54 | 43 || Kyle | 31 | 24 | 60 || Alice | 49 | 23 | 58 || Ken | 33 | 62 | 17 || Jason | 91 | 92 | 90 || Tom | 88 | 72 | 91 || Fiona | 60 | 71 | 45 |+--------+------+-----+----+

4.3 as 別名

使用select 字段名1 as 別名1, 字段名2 as 別名2 from 表名可將查詢到的記錄字段修改一個別名

以下示例將展示修改name字段為姓名,修改gender字段為性別,修改age字段為年齡的操作

select name as '姓名', gender as '性別', age as '年齡' from student;+--------+--------+--------+| 姓名 | 性別 | 年齡 |+--------+--------+--------+| Yunya | male | 18 || Jack | male | 17 || Bella | famale | 17 || Dairis | famale | 18 || Kyle | famale | 19 || Alice | famale | 16 || Ken | male | 16 || Jason | male | 21 || Tom | male | 20 || Fiona | famale | 19 |+--------+--------+--------+

4.4 distinct

使用select distinct(字段名1, 字段名2) from 表名可將查詢到的記錄做一個取消重復(fù)的操作

以下示例將展示使用去重功能來看有多少個小組

select distinct(hoc_group) from student;+-----------+| hoc_group |+-----------+| first || second || third || fifth || fourth |+-----------+

4.5 四則運算

查詢結(jié)果可進(jìn)行四則運算,以下示例將展示拿到每個同學(xué)三科總分的操作

select name, html+css+js as 總成績 from student;+--------+-----------+| name | 總成績 |+--------+-----------+| Yunya | 257 || Jack | 261 || Bella | 231 || Dairis | 186 || Kyle | 115 || Alice | 130 || Ken | 112 || Jason | 273 || Tom | 251 || Fiona | 176 |+--------+-----------+

4.6 顯示格式

使用concat()可將查詢結(jié)果與任意字符串進(jìn)行拼接

使用concat_ws()可指定連接符進(jìn)行拼接,第一個參數(shù)是連接符

select concat('姓名->',name,' ','性別->',gender) from student; # 合并成了一個字符串,注意用的空格分隔開的,不然會黏在一起+--------------------------------------------------+| concat('姓名->',name,' ','性別->',gender) |+--------------------------------------------------+| 姓名->Yunya 性別->male || 姓名->Jack 性別->male || 姓名->Bella 性別->famale || 姓名->Dairis 性別->famale || 姓名->Kyle 性別->famale || 姓名->Alice 性別->famale || 姓名->Ken 性別->male || 姓名->Jason 性別->male || 姓名->Tom 性別->male || 姓名->Fiona 性別->famale |+--------------------------------------------------+

select concat_ws('|||',name,gender,age) from student; # 使用|||為每個字段進(jìn)行分割+----------------------------------+| concat_ws('|||',name,gender,age) |+----------------------------------+| Yunya|||male|||18 || Jack|||male|||17 || Bella|||famale|||17 || Dairis|||famale|||18 || Kyle|||famale|||19 || Alice|||famale|||16 || Ken|||male|||16 || Jason|||male|||21 || Tom|||male|||20 || Fiona|||famale|||19 |+----------------------------------+

5、where

where條件是查詢的第一道坎,能有效過濾出我們想要的任意數(shù)據(jù)

5.1、比較運算

使用比較運算符> < >= <= !=進(jìn)行查詢

以下示例將展示使用where過濾出js成績大于80分的同學(xué)

select name, js from student where js > 80;+-------+----+| name | js |+-------+----+| Jack | 88 || Bella | 91 || Jason | 90 || Tom | 91 |+-------+----+

5.2、邏輯運算

使用and or not可進(jìn)行邏輯運算與多條件查詢

以下示例將展示使用where多條件查詢過濾出各科成績都大于80分的同學(xué)

select name, html, css, js from student where html > 80 and css > 80 and js > 80;+-------+------+-----+----+| name | html | css | js |+-------+------+-----+----+| Jack | 92 | 81 | 88 || Jason | 91 | 92 | 90 |+-------+------+-----+----+

5.3、成員運算

in可以在特定的值中進(jìn)行獲取,如in(80,90,100)則代表只取80或者90或者100的這幾條記錄。

以下示例將展示只取第一組first以及第二組second學(xué)生的個人信息

select name, gender, age, hoc_group from student where hoc_group in ('first','second');+-------+--------+-----+-----------+| name | gender | age | hoc_group |+-------+--------+-----+-----------+| Yunya | male | 18 | first || Jack | male | 17 | second || Bella | famale | 17 | first || Alice | famale | 16 | second |+-------+--------+-----+-----------+

5.4、between and

between and也是取區(qū)間的意思,

以下示例將展示使用between and過濾出Js成績大于等于60并且小于80的同學(xué)

select name, js from student where js between 60 and 80;+-------+----+| name | js |+-------+----+| Yunya | 76 || Kyle | 60 |+-------+----+

5.5、like

like是模糊查詢,其中%代表任意多個字符(類似于貪婪匹配的通配符.*),_代表任意一個字符(類似于非貪婪匹配的通配符.*?)。

以下示例將展示使用like/%匹配出姓名以k開頭的所有同學(xué)的名字

select name from student where name like 'k%';+------+| name |+------+| Kyle || Ken |+------+

以下示例將展示使用like/_匹配出姓名以k開頭并整體長度為3的同學(xué)的名字

select name from student where name like 'k__';+------+| name |+------+| Ken |+------+

5.6、正則匹配

使用RegExp可進(jìn)行正則匹配,以下示例將展示使用正則匹配出名字中帶有k的所有同學(xué)姓名

select name from student where name REGEXP 'k+';+------+| name |+------+| Jack || Kyle || Ken |+------+

6、group by

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

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

6.1、基本使用

以下示例將展示對hoc_group字段進(jìn)行分組。

我們按照hoc_group字段進(jìn)行分組,那么select查詢的字段只能是hoc_group字段,想要獲取組內(nèi)的其他字段相關(guān)信息,需要借助函數(shù)來完成

select hoc_group from student group by hoc_group;+-----------+| hoc_group |+-----------+| fifth || first || fourth || second || third |+-----------+

如果不使用分組,則會產(chǎn)生重復(fù)的信息

mysql> select hoc_group from student;+-----------+| hoc_group |+-----------+| first || second || first || third || fifth || second || third || fourth || fifth || fourth |+-----------+

6.2、group_concat

用什么字段名進(jìn)行分組,在select查詢時就只能查那個用于分組的字段,查詢別的字段會拋出異常,會提示sql_mode異常。

我們將Js成績大于80分的同學(xué)篩選出來并且按照gender字段進(jìn)行分組,此外我們還想查看其所有滿足條件同學(xué)的名字。

以下這樣操作會拋出異常。

mysql> select gender,name from student where js > 80 group by gender;ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ’school.student.name’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

必須借助group_concat()函數(shù)來進(jìn)行操作才能使我們的需求圓滿完成。

select gender, group_concat(name) from student where js > 80 group by gender;+--------+--------------------+| gender | group_concat(name) |+--------+--------------------+| male | Jack,Jason,Tom || famale | Bella |+--------+--------------------+

6.3、分組模式

ONLY_FULL_GROUP_BY要求select中的字段是在與group by中使用的字段

如果group by是主鍵或unique not null時可以在select中列出其他字段

#查看MySQL 5.7默認(rèn)的sql_mode如下:mysql> select @@global.sql_mode;ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION#設(shè)置sql_mole如下操作(我們可以去掉ONLY_FULL_GROUP_BY模式):mysql> set global sql_mode=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;

6.4、聚合函數(shù)

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

聚合函數(shù)一般是同分組進(jìn)行配套使用,以下是常用的聚合函數(shù)。

函數(shù)名 作用 COUNT() 對組內(nèi)成員某一字段求個數(shù) MAX() 對組內(nèi)成員某一字段求最大值 MIN() 對組內(nèi)成員某一字段求最小值 AVG() 對組內(nèi)成員某一字段求平均值 SUM() 對組內(nèi)成員某一字段求和 注意:不使用分組,則默認(rèn)為一組

以下示例將展示求每組的成績總和

select hoc_group, sum(js+html+css) from student group by hoc_group;+-----------+-------------------+| hoc_group | sum(js+html+css) |+-----------+-------------------+| fifth | 366 || first | 488 || fourth | 449 || second | 391 || third | 298 |+-----------+-------------------+

以下示例將展示整個班級的平均成績及總成績(round()用于四舍五入操作)

select round(avg(html+js+css)) as 平均分 ,sum(html+js+css) as 總分 from student;+-----------+--------+| 平均分 | 總分 |+-----------+--------+| 199 | 1992 |+-----------+--------+

以下示例將展示打印出總科成績最高分?jǐn)?shù)

select max(js+css+html) from student;+------------------+| max(js+css+html) |+------------------+| 273 |+------------------+

以下示例將展示查看本班有多少男生,多少女生

select gender, count(id) from student group by gender;+--------+-----------+| gender | count(id) |+--------+-----------+| male | 5 || famale | 5 |+--------+-----------+

7、having

having也可用于過濾操作

7.1、區(qū)別差異

執(zhí)行優(yōu)先級從高到低:where> group by > having

where發(fā)生在分組group by之前,因而where中可以有任意字段,但是絕對不能使用聚合函數(shù)。

having發(fā)生在分組group by之后,因而having中可以使用分組的字段,無法直接取到其他字段,可以使用聚合函數(shù)

7.2、示例演示

以下示例將展示使用having過濾取出每組總分?jǐn)?shù)大于400的小組

select hoc_group, sum(html+css+js) from student group by hoc_group having sum(html+css+js) > 400;+-----------+------------------+| hoc_group | sum(html+css+js) |+-----------+------------------+| first | 488 || fourth | 449 |+-----------+------------------+

以下示例將展示使用having過濾取出有處分的同學(xué)。(可以使用分組的字段,但不能使用其他字段)

select sanction, group_concat(name) from student group by sanction having sanction != '無';+-----------+--------------------+| sanction | group_concat(name) |+-----------+--------------------+| 大處分 | Dairis,Kyle,Ken || 小處分 | Bella |+-----------+--------------------+

8、ordery by

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

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

8.1 asc

asc用于升序排列,以下示例將展示按照每位同學(xué)的年齡進(jìn)行升序排列,如果年齡相同則依照總成績進(jìn)行升序排列。

select id, name, age, html+css+js as 總成績 from student order by age, html+css+js asc;+----+--------+-----+-----------+| id | name | age | 總成績 |+----+--------+-----+-----------+| 7 | Ken | 16 | 112 || 6 | Alice | 16 | 130 || 3 | Bella | 17 | 231 || 2 | Jack | 17 | 261 || 4 | Dairis | 18 | 186 || 1 | Yunya | 18 | 257 || 5 | Kyle | 19 | 115 || 10 | Fiona | 19 | 176 || 9 | Tom | 20 | 251 || 8 | Jason | 21 | 273 |+----+--------+-----+-----------+

8.2、desc

desc用于降序排列,以下示例將展示按照每位同學(xué)的年齡進(jìn)行降序排列。

select id, name, age, html+css+js as 總成績 from student order by age desc;+----+--------+-----+-----------+| id | name | age | 總成績 |+----+--------+-----+-----------+| 8 | Jason | 21 | 273 || 9 | Tom | 20 | 251 || 5 | Kyle | 19 | 115 || 10 | Fiona | 19 | 176 || 1 | Yunya | 18 | 257 || 4 | Dairis | 18 | 186 || 2 | Jack | 17 | 261 || 3 | Bella | 17 | 231 || 6 | Alice | 16 | 130 || 7 | Ken | 16 | 112 |+----+--------+-----+-----------+

9、limit

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

9.1、示例演示

按照總成績進(jìn)行降序排序,只打印1-5名。

select id, name, age, html+css+js as 總成績 from student order by html+css+js desc limit 5; +----+-------+-----+-----------+| id | name | age | 總成績 |+----+-------+-----+-----------+| 8 | Jason | 21 | 273 || 2 | Jack | 17 | 261 || 1 | Yunya | 18 | 257 || 9 | Tom | 20 | 251 || 3 | Bella | 17 | 231 |+----+-------+-----+-----------+

按照總成績進(jìn)行降序排序,只打印6-8名。

select id, name, age, html+css+js as 總成績 from student order by html+css+js desc limit 5,3; # 從第五名開始,打印三條。 6,7,8+----+--------+-----+-----------+| id | name | age | 總成績 |+----+--------+-----+-----------+| 4 | Dairis | 18 | 186 || 10 | Fiona | 19 | 176 || 6 | Alice | 16 | 130 |+----+--------+-----+-----------+

總結(jié)

到此這篇關(guān)于MySQL單表查詢的文章就介紹到這了,更多相關(guān)MySQL單表查詢內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品视频91| 日韩在线短视频| 91亚洲成人| 久久久精品国产**网站| 日韩精品一区二区三区av| 亚洲免费中文| 婷婷成人综合| 久久久水蜜桃av免费网站| 久久人人99| 亚洲国产日韩欧美在线| 婷婷中文字幕一区| 国产视频一区欧美| 亚洲精品大全| 国产精品久一| 日韩视频一二区| 精品国产精品国产偷麻豆| 日韩电影免费网址| 欧美日韩精品在线一区| 好吊视频一区二区三区四区| 亚洲深爱激情| 日本麻豆一区二区三区视频| 日韩av一二三| 国产精品观看| 麻豆精品蜜桃| 国产精品日韩| 国产精品一线天粉嫩av| 日韩成人一级| 精品久久免费| 国产精品社区| 老牛影视一区二区三区| 国产精品手机在线播放| 日本综合字幕| 日韩欧美高清一区二区三区| 91综合网人人| 亚洲精品伊人| 欧美日韩精品免费观看视欧美高清免费大片 | 欧美天堂亚洲电影院在线观看| 亚洲免费毛片| 粉嫩av一区二区三区四区五区| 久久久久久婷| 亚洲字幕久久| 日韩欧美一区二区三区在线视频| 亚洲视频国产精品| 国产精品99一区二区三区| 99精品美女| 亚州av日韩av| 精品欠久久久中文字幕加勒比| 中国女人久久久| 精品99久久| 一区二区精彩视频| 日韩精品不卡一区二区| 日韩国产91| 免费精品国产的网站免费观看| 久久国产乱子精品免费女| 另类欧美日韩国产在线| 亚洲婷婷丁香| 黄色成人精品网站| 中文在线а√天堂| 欧美日韩一区二区国产| 日韩一区二区三区免费播放| 日韩av电影一区| 91精品成人| 精品视频一区二区三区在线观看 | 国产精品一站二站| 亚洲欧洲一区二区天堂久久| 免费一区二区三区在线视频| 亚洲不卡系列| 久久麻豆视频| 日本中文字幕不卡| 欧美va天堂| 精品视频一区二区三区在线观看| 免费人成黄页网站在线一区二区| 色偷偷偷在线视频播放| 日韩1区2区日韩1区2区| 亚洲欧美综合| 成人在线黄色| 日韩av一区二区三区四区| 狠狠爱成人网| 亚洲一级影院| 午夜精品久久久久久久久久蜜桃| 国产精品99久久免费| 午夜久久免费观看| 视频福利一区| 国产欧美一区二区三区精品酒店| 国产黄色精品| 国产探花在线精品| 日韩激情精品| 88久久精品| 日韩1区2区日韩1区2区| 亚洲欧美一级| 亚洲日产av中文字幕| 亚洲一区二区日韩| 亚洲精选91| 免费看日韩精品| 香蕉精品999视频一区二区| 亚洲精品一区二区在线看| 秋霞影视一区二区三区| 日韩综合精品| 国产综合色区在线观看| 国产v综合v| 久久中文字幕二区| 91精品高清| 亚洲综合三区| 亚洲综合婷婷| 欧美日韩一区二区三区不卡视频| 久久国产欧美日韩精品| 久久av超碰| 九九99久久精品在免费线bt| 国产一区二区三区四区五区传媒| 国产成人精品一区二区免费看京| 美女福利一区二区三区| 日韩免费久久| 欧美成人久久| 在线观看视频免费一区二区三区| 亚洲精品进入| 国产精一区二区| 欧美成a人片免费观看久久五月天| 久久99国产精品视频| 水蜜桃久久夜色精品一区| 欧洲一区二区三区精品| 影音先锋久久| 亚洲精品婷婷| 国产精品第十页| 日韩欧美综合| 影音先锋国产精品| 日韩精品免费视频一区二区三区| 欧美影院视频| 欧美日本不卡高清| 精品中国亚洲| 欧美日韩水蜜桃| 在线精品一区二区| 免费一级欧美在线观看视频| 国产suv精品一区| 免费久久精品| 日本成人手机在线| 福利视频一区| 国产精品日韩| 国产精品1区在线| 国产99久久久国产精品成人免费| 久久国产精品99国产| 日韩国产一区二| 日韩视频网站在线观看| 亚洲国产一区二区三区在线播放| 日本国产欧美| 日韩在线观看一区| 日韩中文欧美在线| 国产aa精品| 免费精品视频| 老司机免费视频一区二区| 欧美一区二区三区激情视频| 日韩av午夜在线观看| 色婷婷狠狠五月综合天色拍| 日韩三级一区| 亚洲91视频| 香蕉久久一区| 香蕉视频亚洲一级| 日韩av午夜在线观看| 精品国产精品国产偷麻豆 | 国产一区二区三区久久| 激情久久五月| 欧美日韩一区二区三区不卡视频 | 欧美精品一线| 欧美交a欧美精品喷水| 久久先锋影音| 荡女精品导航| 日韩欧美在线精品| 久久伦理在线| 欧美国产中文高清| 免费观看在线综合色| 欧美13videosex性极品| 国产日韩视频| 午夜亚洲精品| 亚洲成av人片一区二区密柚| 国产精品乱战久久久| 九九久久婷婷| 高清av一区| 国产精品久久久久久av公交车| 久久高清一区| 激情婷婷欧美| 在线人成日本视频| 欧美国产日韩电影| 国产精品mv在线观看| 日韩精品午夜| 精品久久久久久久| 国产欧美一区二区色老头| 五月天久久久| 在线看片国产福利你懂的| 国产精品亚洲四区在线观看| 一本一道久久a久久| 亚洲欧美日韩高清在线| 成人午夜亚洲| 欧美黄色一区| 国产欧美日韩在线观看视频| 国产色综合网| 久久国产成人午夜av影院宅| 中文字幕在线高清| 精品三级国产| 久久亚洲道色| 精品一区二区三区的国产在线观看| 日本aⅴ亚洲精品中文乱码|