久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解

瀏覽:158日期:2023-10-15 16:20:18

本文實(shí)例講述了mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法。分享給大家供大家參考,具體如下:

本文內(nèi)容: 完整語(yǔ)法 去重選項(xiàng) 字段別名 數(shù)據(jù)源 where group by having order by limit

首發(fā)日期:2018-04-11

完整語(yǔ)法:

先給一下完整的語(yǔ)法,后面將逐一來(lái)講解。

基礎(chǔ)語(yǔ)法:select 字段列表 from 數(shù)據(jù)源;

完整語(yǔ)法:select 去重選項(xiàng) 字段列表 [as 字段別名] from 數(shù)據(jù)源 [where子句] [group by 子句] [having子句] [order by 子句] [limit子句];

去重選項(xiàng):: 去重選項(xiàng)就是是否對(duì)結(jié)果中完全相同的記錄(所有字段數(shù)據(jù)都相同)進(jìn)行去重: all:不去重 distinct:去重 語(yǔ)法:select 去重選項(xiàng) 字段列表 from 表名;

示例:

去重前:mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解 ,去重后mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解

create table student(name varchar(15),gender varchar(15));insert into student(name,gender) values('lilei','male');insert into student(name,gender) values('lilei','male');select * from student;select distinct * from student;補(bǔ)充: 注意:去重針對(duì)的是查詢(xún)出來(lái)的記錄,而不是存儲(chǔ)在表中的記錄。如果說(shuō)僅僅查詢(xún)的是某些字段,那么去重針對(duì)的是這些字段。字段別名: 字段別名是給查詢(xún)結(jié)果中的字段另起一個(gè)名字 字段別名只會(huì)在當(dāng)次查詢(xún)結(jié)果中生效。 字段別名一般都是輔助了解字段意義(比如我們定義的名字是name,我們希望返回給用戶(hù)的結(jié)果顯示成姓名)、簡(jiǎn)寫(xiě)字段名 語(yǔ)法:select 字段 as 字段別名 from 表名;

示例:

使用前:mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解,使用后mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解

create table student(name varchar(15),gender varchar(15));insert into student(name,gender) values('lilei','male');insert into student(name,gender) values('lilei','male');select * from student;select name as '姓名',gender as '性別' from student;數(shù)據(jù)源: 事實(shí)上,查詢(xún)的來(lái)源可以不是“表名”,只需是一個(gè)二維表即可。那么數(shù)據(jù)來(lái)源可以是一個(gè)select結(jié)果。 數(shù)據(jù)源可以是單表數(shù)據(jù)源,多表數(shù)據(jù)源,以及查詢(xún)語(yǔ)句單表:select 字段列表 from 表名; 多表: select 字段列表 from 表名1,表名2,…; 【多表查詢(xún)時(shí)是將每個(gè)表中的x條記錄與另一個(gè)表y條記錄組成結(jié)果,組成的結(jié)果的記錄條數(shù)為x*y】【可以稱(chēng)為笛卡爾積】 mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解 查詢(xún)語(yǔ)句:select 字段列表 fromr (select語(yǔ)句) as 表別名;【這是將一個(gè)查詢(xún)結(jié)果作為一個(gè)查詢(xún)的目標(biāo)二維表,需要將查詢(xún)結(jié)果定義成一個(gè)表別名才能作為數(shù)據(jù)源】

-- 示例select name from (select * from student) as d; where子句: where子句是用于篩選符合條件的結(jié)果的。

where幾種語(yǔ)法:

基于值: = : where 字段 =值 ;查找出對(duì)應(yīng)字段等于對(duì)應(yīng)值的記錄。(相似的,<是小于對(duì)應(yīng)值,<=是小于等于對(duì)應(yīng)值,>是大于對(duì)應(yīng)值,>=是大于等于對(duì)應(yīng)值,!=是不等于),例如:where name = ’lilei’ like:where 字段 like 值 ;功能與 = 相似 ,但可以使用模糊匹配來(lái)查找結(jié)果。例如:where name like ’li%’ 基于值的范圍: in: where 字段 in 范圍;查找出對(duì)應(yīng)字段的值在所指定范圍的記錄。例如:where age in (18,19,20) not in : where 字段 not in 范圍;查找出對(duì)應(yīng)字段的值不在所指定范圍的記錄。例如:where age not in (18,19,20) between x and y :where 字段 between x and y;查找出對(duì)應(yīng)字段的值在閉區(qū)間[x,y]范圍的記錄。例如:where age between 18 and 20。 條件復(fù)合: or : where 條件1 or 條件2… ; 查找出符合條件1或符合條件2的記錄。 and: where 條件1 and 條件2… ; 查找出符合條件1并且符合條件2的記錄。 not : where not 條件1 ;查找出不符合條件的所有記錄。 &&的功能與and相同;||與or功能類(lèi)似,!與not 功能類(lèi)似。 補(bǔ)充: where是從磁盤(pán)中獲取數(shù)據(jù)的時(shí)候就進(jìn)行篩選的。所以某些在內(nèi)存是才有的東西where無(wú)法使用。(字段別名什么的是本來(lái)不是“磁盤(pán)中的數(shù)據(jù)”(是在內(nèi)存這中運(yùn)行時(shí)才定義的),所以where無(wú)法使用,一般都依靠having來(lái)篩選).

select name as n ,gender from student where name ='lilei';-- select name as n ,gender from student where n ='lilei'; --報(bào)錯(cuò)select name as n ,gender from student having n ='lilei';group by 子句: group by 可以將查詢(xún)結(jié)果依據(jù)字段來(lái)將結(jié)果分組。 語(yǔ)法:select 字段列表 from 表名 group by 字段; 【字段可以有多個(gè),實(shí)際就是二次分組】mysql學(xué)習(xí)筆記之完整的select語(yǔ)句用法實(shí)例詳解

-- 示例select name,gender,count(name) as '組員' from student as d group by name;select name,gender,count(name) as '組員' from student as d group by name,gender;補(bǔ)充: 實(shí)際上,group by 的作用主要是統(tǒng)計(jì)(使用情景很多,比如說(shuō)統(tǒng)計(jì)某人的總分?jǐn)?shù),學(xué)生中女性的數(shù)量。。),所以一般會(huì)配合一些統(tǒng)計(jì)函數(shù)來(lái)使用: count(x):統(tǒng)計(jì)每組的記錄數(shù),x是*時(shí)代表記錄數(shù),為字段名時(shí)代表統(tǒng)計(jì)字段數(shù)據(jù)數(shù)(除去NULL) max(x):統(tǒng)計(jì)最大值,x是字段名 min(x):統(tǒng)計(jì)最小值,x是字段名 avg(x):統(tǒng)計(jì)平均值,x是字段名 sum(x):統(tǒng)計(jì)總和,x是字段名 group by 字段 后面還可以跟上asc或desc,代表分組后是否根據(jù)字段排序。having子句: having功能與where類(lèi)似,不過(guò)having的條件判斷發(fā)生在數(shù)據(jù)在內(nèi)存中時(shí),所以可以使用在內(nèi)存中才發(fā)生的數(shù)據(jù),如“分組”,“字段別名”等。 語(yǔ)法:select 字段列表 from 表名 having 條件;【操作符之類(lèi)的可以參考where的,增加的只是一些“內(nèi)存”中的篩選條件】

-- 示例select name as n ,gender from student having n ='lilei';select name,gender,count(*) as '組員' from student as d group by name,gender having count(*) >2 ;-- 這里只顯示記錄數(shù)>2的分組order by 子句: order by 可以使查詢(xún)結(jié)果按照某個(gè)字段來(lái)排序 語(yǔ)法:select 字段列表 from 表名 order by 字段 [asc|desc]; 字段可以有多個(gè),從左到右,后面的排序基于前面的,(比如:先按name排序,再按gender排序,后面的gender排序是針對(duì)前面name排序時(shí)name相同的數(shù)據(jù)) asc代表排序是遞增的 desc代表是遞減的 也可以指定某個(gè)字段的排序方法,比如第一個(gè)字段遞增,第二個(gè)遞減。只需要在每個(gè)字段后面加asc或desc即可(雖然默認(rèn)不加是遞增,但還是加上更清晰明確)。

-- 示例select * from student order by name;select * from student order by name,gender;select * from student order by name asc,gender desc;limit子句: limit是用來(lái)限制結(jié)果數(shù)量的。與wherehaving等配合使用時(shí),可以限制匹配出的結(jié)果。但凡是涉及數(shù)量的時(shí)候都可以使用limit(這里只是強(qiáng)調(diào)limit的作用,不要過(guò)度理解) 語(yǔ)法:select 字段列表 from 表名 limit [offset,] count; count是數(shù)量 offset是起始位置,offset從0開(kāi)始,可以說(shuō)是每條記錄的索引號(hào)

-- 示例select * from student limit 1;select * from student limit 3,1;select * from student where name ='lilei' limit 1;select * from student where name ='lilei' limit 3,1;

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《MySQL查詢(xún)技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過(guò)程技巧大全》、《MySQL數(shù)據(jù)庫(kù)鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總》

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫(kù)計(jì)有所幫助。

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 台安县| 桦川县| 沙洋县| 韶山市| 玛曲县| 宁晋县| 秦皇岛市| 凤城市| 茂名市| 定陶县| 乌审旗| 奉节县| 黄梅县| 新河县| 郁南县| 涿鹿县| 新建县| 琼中| 阿拉善盟| 上蔡县| 天全县| 长治市| 当涂县| 涟源市| 揭东县| 苏尼特右旗| 金坛市| 腾冲县| 泸西县| 汉寿县| 凤庆县| 临沧市| 汕尾市| 汤阴县| 城市| 奉贤区| 武山县| 措勤县| 葫芦岛市| 安图县| 西乡县|