版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE2 5基础查询 例2:SELECT商品编码,店号FROM`销售表`; #顺序可以改变例3:SELECT*FROM`销售表`; 语法:select原名as别名from表名; #可以用AS,建议用AS,方便你自己阅读语法:select原名别名from表名; #可以用空格 8 SELECTCONCAT(字段1,字段2,…)AS别名FROM表名;SELECTCONCAT(字段1,'_',字段2ASFROM表名;SELECTCONCAT(店号,店名)ASFROM`表SELECTCONCAT(商品编码,'、',IFNULL(销售数量,0))AS别名FROM`销售表9 selectfromwhere=与或!非<与is或>非SELECT*FROM`销售表`WHERESELECT日期,商品编码FROM`销售表`WHERE销售数量<> and:左右两边都为True才为True,否则为or左右两边有一个为True就为True,两边都为False才为Falsenot:取反SELECT*FROM`销售表`WHERE150and10 SELECT*FROM`销售表`WHERE商品编码LIKE #不区分大小SELECT*FROM`销售表`WHERE商品编码LIKE #第一个字SELECT*FROM`销售表`WHERE商品编码LIKE' SELECT*FROM`销售表`WHERELIKESELECT*FROM`销售表`WHERE商品编码LIKE'_$_%'ESCAPE SELECT*FROM`销售表`WHERELIKESELECT*FROM`销售表`WHERE商品编码LIKE'_$%%'ESCAPE 11 例如:销量在150至250之间的【与之前学过的ANDSELECT*FROM`销售表`WHEREBETWEEN150ANDSELECT*FROM`销售表`WHERE150andSELECT*FROM`销售表`WHERENOTBETWEEN150AND121.5.3in SELECT*FROM`销售表`WHERE店号=1or店号=3or店号= SELECT*FROM`销售表`WHERE131.5.4isnull SELECT*FROM`销售表`WHERE销售数量==号运算符不能判断NULL值,必需使用isSELECT*FROM`销售表`WHERE销售数量ISSELECT*FROM`销售表`WHERE销售数量ISNOT条件运算符的=或<>是不能判断NULL值的,必须用ISNULL ISNOTSELECT*FROM`销售表`WHERE14 SELECT字段名FROM表名ORDEYBY字段名ASC(ASC可以省略默认升序SELECTFROMORDEYBY注意2:只有limit子句放在ORDERBY后面,其它情况下,ORDERBY放最后SELECT*FROM`销售表`WHERE店号in(1,3,7)ORDERBY注意2:ORDERBY后面可以是字段,也可以是表达式,也可以是别名SELECT*,销售数量*售价AS销售金额FROM表名ORDEYBY销售数量*售价 SELECT*,销售数量*售价AS销售金额FROM表名ORDEYBY销售金额 #此案例不要去做,我们还没讲跨表操16 SELECTFROMORDEYBY例如:SELECT*FROM`销售表`ORDERBY销售数量 SELECTFROMORDEYBY例如:SELECT*FROM`销售表`ORDERBY销售数量SELECT*FROM`销售表`WHEREin(1,3,7)ORDERBY2.3 SELECT字段名FROMORDERBY字段名1DESC,字段名2ORDERBY语句中,优先排序的字段放面,不同字段可以指定不同的排序规则,如果没有指定排序规则,则默认为升序(ASC)排列。例如:SELECT*FROM`销售表`ORDERBY销售数量DESC,日期ASC;182.4LENGTH SELECT*FROM商品表ORDERBYLENGTH(商品名称 #升SELECT*FROM商品表ORDERBYLENGTH(商品名称) #降192.5中文列排序INSTR( 错误值。INSTR(str,substr),返回substr在str中的位置,若不存在,则返回0。 SELECT进价,FROM`商品表`ORDERBY21PAGE22 SELECT函数名(实参列表)FROM表 在8字符集中,一个英文字母点1个字节,一个汉字占3个字节。在GK字符集中,一个英文字母点1个字节,一个汉字占2个字节。函数是可以嵌套的,函数的返回值可以充当另一个函数的参数SELECTLEFT(SELECTLEFT(商品名称,1)FROM`商品表 SELECTLENGTH('SELECTLENGTH(商品名称)FROM`商品表SELECTCONCAT(字段1,'_',字段2,…)AS别名FROM表名语法:LOWER(字段)#转小写 #转大SELECTLOWER(`商品编码`)FROM`销售表`SELECTUPPER(`商品编码`)FROM`销售表` #左右两边 #左语法:RTRIM(字段名或字符串)#右SELECTTRIM('孙兴华')SELECTTRIM('a'FROMaa孙aa')SELECTLTRIM(`商品编码`)FROM`销售表SELECTRTRIM(`商品编码`)FROM`销售表6、字符截取SELECTSUBSTR('跟着孙兴华学习Python进阶',3,3)ASSELECTSUBSTR('跟着孙兴华学习Python进阶',5)AS 语法:LPAD(字符串,字符位数,‘占位’)#左填充语法:RPAD(字符串,字符位数,‘占位’)#右填充SELECTLPAD('孙兴华',8,'*')SELECTRPAD('孙兴华SELECTLPAD('孙兴华',2,'*')#返回:孙兴SELECTRPAD('孙兴华',2,'*')语法 SELECT PAGE25 1round #返回8ceil(-7.30673、向下取整,返回小于等于该参数的最大整数 #返回7floor(-7.31)845 1now(或#返回 日秒PAGE28
1then要显示的值1或语句
then1或语句条件条件then条件条件
then要显示的值2或语句2; else要显示的值n或语句n;SELECT`商品名称`,`进价`,`售价`,CASE大类编码WHEN01THEN售价*1.1WHEN02THEN售价*1.2WHEN03THEN售价ELSEFROM`商品表
SELECT`店号`,`商品编码`,`销售数量`,WHEN`销售数量`>250THENWHEN`销售数量`>150THENWHEN`销售数量`>100THENELSE'差'ENDASFROM`销售表 注意1:SUM、AVG参数支持的类型:数值和'数值'注意2:以下聚合函数都是忽略NULLSELECTSUM(销售数量)FROM`销售表`;SELECTAVG(销售数量)FROM`销售表`;SELECTMAX(销售数量)FROM`销售表`;SELECTMIN(销售数量)FROM`销售表`;SELECTCOUNTFROM`销售表`;SELECTSUMAS,AVG(ASMAX(ASMIN(ASCOUNT(ASFROM`销售表较多时候,Count(distinct字段名)配合使用,计算字段非重复值的个数与*搭配【推荐使用】以后提到个数,你就优先想到Count(*Count(distinct1次数,所有列这一行全为与常量值(例如1)Count(1重点:以上函数查出来都是一个值,所以注意和以上函数一同查询的字段要求是groupby后的字段(后面会详细讲GROUP 可以使用groupgy子句将表中的数据分成若干组SELECT字段名,聚合函数(字段名FROMWHEREGROUPBYORDERBY字段名切记:SELECT后面的字段,必须是groupby31 SELECT店号,MINAS最小销售量FROM`销售表`GROUPBY店号SELECT大类名,count(*)AS商品数FROM`商品表`GROUPBY大类名32 作用对象不同,WHERE只作用于表,而HAVING作用于GROUPBY子句的分组结果,如果不存在GROUPBY子句,则作用于WHERE子句的搜索结SELECT店号,MINAS最小销售量FROM`销售表`WHERE2020-01-01'GROUPBY count(*)>2但是他不能做where子句条件,因为哪家表里都没有count(*)这个字段,详见SELECT小类名,COUNT(*)ASFROM`商品表`GROUPBYHAVINGSELECTMAX(ASWHEREBETWEEN'2020-01-01AND'2020-01-03'GROUPBY店号3334 SELECT字段名,聚合函数(字段名ASGROUPBY(字段名)#sum(销售数量)ORDERBY字段名;354.2.4 SELECTFROM`销售表GROUPBYORDERBY总结1:按多个字段分组,只需要把多个字段放在GROUPBY后面用逗号隔开总结2:按多个字段分组,只需要把多个字段放在 MySQL中的TopN 目前的版本中MySQL中没有这个关键字,但是SQLServer在SQLServer中,查询前几名,是这样的语法:SELECTTOPn字段名FROM表名WHERE…ORDER在MySQL中,查询前几名使用LIMIT名次一定要放在最后面使用,LIMIT不只这一个功能,其它功能以后再讲SELECT店号,SUM(销售数量)AS销售总量FROM销售表GROUPBY店号ORDERBY销售总量DESCLIMIT36 分页的作用:节省内存空间,但是一般使用瀑布流 SELECT*FROM销售表limit查询起始下标,显示几条数据limitlimitlimit第N SELECT[DISTINCT]字段名FROM[WHERE][GROUPBY]分组[HAVING]分组筛选[ORDERBY]排序[LIMIT]如果存在 执行SELECT子句,删除不包含在SELECT字段名,所指定的字段。如果SELECT子句中包含关键字DISTINCT如果有 如果需要找前几名,用LIMIT(4)[HAVING]分组筛选38 39 合并(不去重复SELECT*FROM`1班`UNIONALLSELECT*FROM`2班 合并(去重复SELECT*FROM`1班`UNIONSELECT*FROM`2班UNIONALLUNION 2、如果两张原始表的顺序不一致,你需要手动在SELECT后面写字段强行把他顺序变成一致。例如:SELECT,语文FROM`1班`UNIONALLSELECT,语文FROM`2班4、ORDERBY子句,必需放在最后一个SelectSELECT,语文,数学,英语FROM`1班`UNIONALLSELECT,语文,NULL,英语FROM`2班SELECT,语文,数学,英语FROM`1班`UNIONALLSELECT,语文,'未考',英语FROM`2班40 SELECT*FROM`1班`UNIONALLSELECT*FROM`2班`UNIONALLSELECT*FROM`3班`UNIONALL(selectfrom表1orderby字段名unionallselectfrom表2orderby字段名没有排序效果(select字段名from表1)unionall(select字段名from表2)orderby字段名;//有排序效果41日表 内部连接 SELECTFROM表a,表bWHERE表a.师傅编号=表b.序号;INNERJOIN+ON1999 SELECT徒弟,师傅FROM表aINNERJOIN表bselect*from表1innerjoin表2on表12select*from表1innerjoin表2on表12FROMSELECTa.店号,店名,SUM(ASFROM销售表aINNERJOIN表 FROM销售表aINNERJOIN表bONb.店号=a.店SELECT日期,a.店号,店名,商品编码,销售数量FROM销售表aINNERJOIN表bONb.店号=a.店 SELECTa.ASbASFROMaWHEREab47PAGE48LEFTJOINON 1122华34FROM表LEFTJOIN表SELECTa.*,商品名称,大类编码,大类名,小类编码,小类名,进价,售价FROM`销售表`aLEFTJOIN`商品表`bONa.b.商品编码FROM`销售表`aLEFTJOIN`商品表`bONab售价FROM`销售表`aLEFTJOIN`商品表`bONab根据以上基础,设置日期为202001-01至2020-01-售价FROM`销售表`aLEFTJOIN`商品表`bONab''SELECT,a.`商品编码`,商品名称,大类编码,大类名,小类编码,小类名,进价,售价,销售数量,销售数量*AS*售价)-(销售数量*进价)AS毛利额FROM`销售表`aLEFTJOIN`商品表`bONa.b.商品编码WHERE日期BETWEEN'2020-01-01'AND'2020-01-03'GROUPBYORDERBYRIGHTJOIN FROM表aRIGHTJOIN表b50 SELECT*FROM表aLEFTJOIN表bON表a.b.SELECT*FROM表aRIGHTJOIN表bON表a.b.序号;CROSSJOIN SELECT徒弟,师傅FROM表acrossJOIN表crossjoinSELECT徒弟,师傅FROM表a,表SELECT徒弟,师傅FROM表acrossJOIN表bWHERE表a.师傅编号=表bSELECTFROMa,表bWHEREa.师傅编号=表b52PAGE53 内连接:innrjoin如果表中至少有一个匹配,就返回行左连接:会从左表中返回所有的值,即使右表中没有匹配右连接:会从右表中返回所有的值,即使左表中没有匹配我要查询哪些数据?Select字段名1,字段名FromXXXjoinON SELECT日期,aFROM销售表aLEFTJOIN表bONa.店号=bSELECT日期,a.店号,店名,a.商品编码,商品名称,销售数量,销售数量*进价AS销售成本,销售数量*售价AS销售金额,销售数量*(售价-进价)AS毛利额FROM销售表aLEFTJOIN表bONa.店号=bLEFTJOIN商品表ONa.商品编码=c.例:在例的基础上,筛选时间为2020.01.01至3SELECT日期,a.店号,店名,a.商品编码,商品名称,销售数量,销售数量*进价AS销售成本,销售数量*售价AS销售金额,销售数量*(售价-进价)AS毛利额FROM销售表aLEFTJOIN表ONa.店号=b.店号LEFTJOINONa.商品编码=c.WHERE日期BETWEEN'2020-01-01'AND'2020-01-SELECT日期,a.店号,店名,a.商品编码,商品名称,销售数量,销售数量*进价AS销售成本,销售数量*售价AS销售金额,销售数量*(售价-进价)AS毛利额FROM销售表aLEFTJOIN表ONa.店号=b.店号LEFTJOINONa.商品编码=c. SELECTa.店号,店名,sum(销售数量)AS总销售,sum(销售数量*进价)AS总成本,sum(销售数量*售价)AS总金额,sum(销售数量*(售价-进价))AS毛利额FROMLEFTJOIN表ONa.店号=b.店号ONa.商品编码=c.GROUPBYa.店号 PAGE56 SELECTAVG(ASFROM`销售表`WHERESELECT店号,AVGAS平均销量FROM`销售表`GROUPBYHAVINGAVG(销售数量)>(上一段代码SELECTAVG(ASFROM`销售表SELECT店号,AVGASFROM`销售表`GROUPBY店号SELECTAVG(ASFROM`销售表`WHERESELECTAVG(ASFROM`销售表`WHERE大于2店又小于7店平均销售量的SELECT店号,AVG(销售数量)AS平均销量FROM`销售表`GROUPBYHAVINGAVG(销售数量)>(2店代码)ANDAVG(销售数量)<(7店代码SELECT店号,AVGASFROM`销售表`GROUPBY店号HAVINGAVG(销售数量)BETWEEN(2店代码)AND(7店代码PAGE58 IN/NOTin/not wherewhere notin 条件> #用min替换 小于其中任何一个值就可以,那么,他与使用Max有什么区别 条件<max(10,20,30) #使用max替换ALL where(Having)条件>all(10,20,30)where(Having)条件all(10,20,30) 在查询条件where或Having=条件1and=条件62Select 例如:查询每个经营的品种数(当然条件上你肯定要锁定一个时间段我就不加了 selectcount(*)from商品表bwhereb.商品编码=a.)ASFrom销售表63PAGE64 EXISTS(子查询) #就是判断两者明显不同的是,EISTS常用于判断查询集是否为空,只要子查询中至少返回一个值,EISTS判断结果即为TRUE;子查询
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 捐资助学倡议书模板6篇
- 店铺使用权和代理权转让合同书(3篇)
- 第二十六章 二次函数(64道压轴题专练)
- 代词-2023年中考英语知识清单(原卷版)
- 天津市五区县重点校联考2024-2025学年高二上学期11月期中化学试题(含答案)
- 黑龙江省大庆市肇源县联盟学校2024-2025学年七年级上学期期中地理试题(含答案)
- 上海地区高考语文五年高考真题汇编-作文
- 2024年湖南省公务员考试《行测》真题及答案解析
- 企业间合作战略合同模板集
- 不动产投资合作协议书应注意问题
- 三菱培训教程手册合集l快速入门篇
- 定语从句讲解公开课(22张ppt)
- 幼儿园大班主题《有用的植物》个别学习
- 一对一学生课时签到表
- 木材材积速算表
- 如何培养学生良好的双姿习惯(精)
- 计算机及外部设备装配调试员国家职业技能标准(2019年版)
- GB18613-2012中小型异步三相电动机能效限定值及能效等级
- 《临床决策分析》课件.ppt
- 家风家训PPT课件
- 泪道冲洗PPT学习教案
评论
0/150
提交评论