sql查询语句详解秋弦

Selectselect_listFromtable_nameWherecondition_expressionGroupbygroup_columnshavingcondition_expressionOrderbysort_columns二、查询实例查询所有字段查询指定字段用DISTINCT去除结果中的重复行查询指定数据带有in关键字的查询带betweenand的范围查询带like的字符匹配查询表1:学生

表2:商品表1

表3:商品表2

表4:教师

1)查询所有学生的详细信息

SELECT*from学生;2)查询学生的学生号,姓名与专业

select学生号,姓名,专业from学生;3)从商品表1中查询出每一种商品的价值

SELECT商品代号,单价,数量,单价*数量as总价from商品表1;4)查询本商品表1中商品的种类

SELECTdistinct分类名from商品表1;5)从商品表1中查询出分类名为"电视机"的所有商品

select*from商品表1where分类名='电视机';6)从商品表1中查询出单价低于2000元的每一种商品代号,分类名和单价

select商品代号,分类名,单价from`商品表1`where单价<=2000;7)从商品表2中查询出产地为北京、山西、无锡的所有商品

SELECT*from商品表2where产地in('北京','山西','无锡');8)从商品表1中查询出商品代号以字符串"dsj"开头的所有商品(考察like模糊查询及通配符%)

select*from商品表1where商品代号like'DSJ%'MySQL中的通配符;%,_(下划线),

9)从商品表1中查询单价在1000到2000之间的所有商品

select*from商品表1where单价between1000and2000;10)查询所有姓张的学生的详细信息

select*from学生where姓名like'张_';11)从商品表1中查询出单价大于1500,同时数量大于等于10的商品

select*from选课orderby课程号asc,成绩desc;14)从学生表中查询各个专业的人数

select专业,count(*)as人数from学生groupby专业15)从学生表中查询出专业的学生数多于1人的专业名及人数

select专业,count(*)as人数from学生groupby专业havingcount(*)>1select专业,count(*)as人数from学生groupby专业having人数>116)从选课表中查询成绩最高前三位

select*from选课orderby成绩desclimit317)查询各个专业男女人数各是多少

select专业,性别,count(*)as人数from学生groupby专业,性别18)从商品表1中查询出所有商品的最大数量、最小数量、平均数量及数量总和

selectmax(数量)as最大数量,min(数量)as最小数量,avg(数量)as平均数量,sum(数量)as数量总和from商品表119)从商品表1中查询出分类名为“电视机”的商品的种数、最高价、最低价及平均价

select分类名,count(分类名)as种数,max(单价)as最高价,min(单价)as最低价,avg(单价)as平均价from商品表1where分类名='电视机'20)查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌

selecta.商品代号,b.分类名,a.产地,a.品牌from商品表2ainnerjoin商品表1bona.商品代号=b.商品代号wherea.产地in('南京','无锡')或

selecta.商品代号,b.分类名,a.产地,a.品牌from商品表2a,商品表1bwherea.商品代号=b.商品代号anda.产地in('南京','无锡')21)从教学库中查询出选修了课程名为“操作系统”课程的每个学生的姓名

selectb.姓名,c.课程名from选课ainnerjoin学生bona.学生号=b.学生号innerjoin课程cona.课程号=c.课程号wherec.课程名='操作系统'orb.姓名或

select姓名,课程名from选课a,学生b,课程cwherea.学生号=b.学生号anda.课程号=c.课程号andc.课程名='操作系统'22)从教学库中查询出所有学生的选课情况,要求没选修任何课程的学生信息也要反映出来(左,右连接)

select*from学生aleftjoin选课bona.学生号=b.学生号select*from选课arightjoin学生bona.学生号=b.学生号23)从教学库中查询出选修了课程名为“操作系统”的所有学生(带in的子查询)

select*from学生where选修了课程名为“操作系统”的所有学生进一步分析:select*from学生where学生号in(所有选修了操作系统的学生号名单)所有选修了操作系统的学生号名单?selecta.学生号from选课a,课程bwherea.课程号=b.课程号and课程名='操作系统'最终的代码:select*from学生where学生号in(selecta.学生号from选课a,课程bwherea.课程号=b.课程号and课程名='操作系统')24)查询出比所有商品单价的平均值要高的全部商品(比较运算符)

select*from商品表1where单价>(selectavg(单价)from商品表1)25)从教学库中查询出选修至少一门课程的所有学生(带exists(的子查询)

select*from学生whereexists(select*from选课where选课.学生号=学生.学生号)或

select*from学生where学生号in(selectdistinct学生号from选课)26)从教学库中查询出选修了课程名为“C++语言“的所有学生的姓名和成绩(any子查询)

selectb.姓名,c.课程名,a.成绩from选课ainnerjoin学生bona.学生号=b.学生号innerjoin课程cona.课程号=c.课程号wherec.课程名='C++语言'select姓名,成绩from学生join选课on学生.学生号=选课.学生号where课程号=any(select课程号from课程where课程名='C++语言')27)从商品表1中查询出单价比分类名为“洗衣机”的所有商品单价都高的商品

select*from商品表1where单价>all(select单价from商品表1where分类名='洗衣机')select*from商品表1where单价>(selectmax(单价)from商品表1where分类名='洗衣机')28)从商品表1中查询出单价比分类名为“洗衣机”的所有商品的单价其中一种高的商品

select*from商品表1where单价>any(select单价from商品表1where分类名='洗衣机')and分类名<>'洗衣机'29)查询出每种商品的总价值,并按降序排列

select分类名,sum(单价*数量)as总价from商品表1groupby分类名orderby总价desc30)查询至少选修了王明所选修的所有课程的学生

--王明选修的课程selecta.姓名,b.课程号from学生a,选课bwherea.学生号=b.学生号and姓名='王明'--终极答案select*from学生where姓名!='王明'and学生号in(select学生号from选课where课程号in(select课程号from选课,学生where选课.学生号=学生.学生号and姓名='王明')groupby学生号havingcount(*)=(selectcount(*)from选课,学生where选课.学生号=学生.学生号and姓名='王明'))--终极答案2select*from学生where姓名!='王明'and学生号=any(select学生号from选课where课程号in(select课程号from选课,学生where选课.学生号=学生.学生号and姓名='王明')groupby学生号havingcount(*)=(selectcount(*)from选课,学生where选课.学生号=学生.学生号and姓名='王明'))31)查找选择了课程编号为101和102的学生,把其学号显示出来

select*from选课成绩where课程编号in(101,102)select*from选课成绩where课程编号='101'unionselect*from选课成绩where课程编号='102'unionselect*from选课成绩where课程编号='103'如果希望上述结果中显示课程名称,sql语句如下:

selecta.*,b.课程名称from选课成绩a,课程2bwherea.课程编号=b.课程编号anda.课程编号='101'unionselecta.*,b.课程名称from选课成绩a,课程2bwherea.课程编号=b.课程编号anda.课程编号='102'32)把test1和test2表的数据合并在一起

三、其他补充

33)创建如下表并插入测试数据

要求对此表查询,显示如下结果:

显示结果:姓名语文高数英语李勇907080刘晨607796

34)在SQL中使用正则示例

查询以DS开头的产品select*from商品表1where商品代号regexp'^DS'查询以冰箱结尾的select*from商品表1where分类名regexp'冰箱$'查询商品代号中包含B字符的产品select*from商品表1where商品代号regexp'B.'查询商品代号中包含XTselect*from商品表1where商品代号REGEXP'[XT]'查询商品代号中不包含XT的select*from商品表1where商品代号REGEXP'[^XT]'查询test表中id不包含a-h之间任意一个字符的学员select*fromtestwhereidREGEXP'[^a-h]'查询出商品表1中商品代号包含DB,XY,AHselect*from商品表1where商品代号REGEXP'DB|XY|AH'查询商品表中至少有1个X的商品select*from商品表1where商品代号REGEXP'X{1}'查询商品表1中商品代号中,XY最少出现1次,XY最多出现3次select*from商品表1where商品代号REGEXP'XY{1,3}'35)高级插入语句

insertintotest1(id,name,age)selectid,name,agefromtest2whereid=10636)replace语句用replace插入一条记录时,如果不重复,replace就和insert的功能一样,如果有重复记录,replace就使用新记录的值来替换原来的记录值。语法:

replacetablename(列名...)VALUES(列值);或replacetablenameSETcolumn_namel=value1,column_name2=value2,..;示例:

replacetest1(id,name,age)values(104,'陈阳',22)37)将电子专业的所有学生各门课成绩加5分(techdb成绩表)

update选课set成绩=成绩+5where学生号in(select学生号from学生where专业='电子')13、将员工表中工龄大于30年的工资全部上调20%(northwind)

select姓名,部门,year(now())-year(雇佣日期)as工龄from员工whereyear(now())-year(雇佣日期)>30update员工set目前薪资=目前薪资*1.2whereyear(now())-year(雇佣日期)>3014、将比生产制造部员工最高工资还要高的员工工资下调20%以下这种写法是错误的:

以下代码是错误的:select姓名,部门,目前薪资from员工where目前薪资>(selectmax(目前薪资)from员工where部门='生产制造部')正确的写法是:update员工set目前薪资=目前薪资*0.8where目前薪资>(selectt.最高工资from(selectmax(目前薪资)as最高工资from员工where部门='生产制造部')t)14、将比生产制部中工资排名前三的员工工资任意一个高的员工工资下调10%

select姓名,部门,目前薪资from员工where目前薪资>any(select目前薪资from员工where部门='生产制造部'orderby目前薪资desclimit3)and部门<>'生产制造部'正确的代码是:update员工set目前薪资=目前薪资*0.9where目前薪资>any(selectt.目前薪资from(select目前薪资from员工where部门='生产制造部'orderby目前薪资desclimit3)t)and部门<>'生产制造部'

THE END
1.《Excel数据获取与处理实战》课件第5章排序筛选和分类汇.pptx...排序、筛选与分类汇总学习目标1、掌握排序的基本操作2、掌握筛选的基本操作3、掌握分类汇总的基本操作1筛选目录排序2分类汇总数据3在Excel中,编辑的数据一般会有特定的顺序,当查看这些数据的角度发生变化时,为了方便查看,常常会对编辑的数据进行排序。在【订单信息】工作表中,为了方便查看每个会员的订单数据,需要对会员...https://www.renrendoc.com/paper/361382932.html
2.MySQL基础操作你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。 你可以添加 WHERE...LIKE 子句来设置条件。ORDER BY 子句以下将在 SQL SELECT 语句中使用 ORDER BY 子句来读取MySQL 数据表 runoob_tbl 中的数据:实例尝试以下实例,结果将按升序及降序排列。SQL 排序mysql...https://www.jianshu.com/p/6fef5cbaacc8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes
1.小白练习Mysql——leecode题库(二)(1)解题思路:根据sales的表中进行id 的筛选,条件就是日期的范围,再把通过sales表筛选出来的id到product表中进行匹配。 (2)代码: selectproduct_id, product_name fromproduct whereproduct_idnotin( selects.product_id fromsales s wheresale_date<'2019-01-01'orsale_date>'2019-03-31') ...https://blog.csdn.net/Morven_dai/article/details/143945840
2.根据商品名称求和(物品名称单价数量总价)根据商品名称求和(物品名称单价数量总价) js数组排序处理 如何根据给定的物品数量,对带有价格和物品名称的数组进行排序,使其以物品名称和价格为准进行竖向排列? 问题详述: 给定数组: let arr = [ {price: 5, useruid: 0, item_name: '测试3'}, {price: 20, useruid: 0, item_name: '测试2'},...https://www.iotsj.com/kuaixun/7582.html
3.2021年10月自考管理系统中计算机应用00051模拟题自考5.企业中信息提供的主要形式除各种计划、统计报表外,还有 A .报告文件 B .图形分析 C .数理统计表 D .表格分析 6.在电子数据处理阶段,应用计算机的主要目的是 A .支持决策 B .提高工作效率 C .信息共享 D .数据综合作用 7.当计算机在管理中的应用主要在于日常业务与事务的处理、定期提供系统的业务信息时,...https://www.educity.cn/zikao/305769.html
4.GitHubA 数组中比 A[k/2] 小的数有 k/2-1 个,B 数组中,B[k/2] 比 A[k/2] 小,假设 B[k/2] 前边的数字都比 A[k/2] 小,也只有 k/2-1 个,所以比 A[k/2] 小的数字最多有 k/1-1+k/2-1=k-2 个,所以 A[k/2] 最多是第 k-1 小的数。而比 A[k/2] 小的数更不可能是第 k ...https://github.com/sunmiaozju/leetcode
5.10个美国比价网站推荐!美国最省钱的购物网!(综合类旅游酒店...会过日子的人,买东西都喜欢货比三家,希望用最低价格买到同样质量的商品。但是如果要自己去逐个对比各个平台上的信息难免有点劳心劳力,为了解决这个问题,比价网便应运而生了!通过比价网站或app的服务,我们可以很直接的对比出商品的实时价格、查看历史价格,并且付款时https://www.extrabux.cn/chs/guide/4661598
6.数据分析总结(精选16篇)今年以来,我校加大信息化基础建设,严格落实信息系统安全及保护,从源头做起,不断提升了信息基础安全理念,强化信息技术安全管理和保障,加强对包括设备安全,数据安全,信息安全等信息化建设保障,以信息化促进学院业务管理的精简化和标准化。 一、信息等级化分类,安全分类化保护。 https://www.rajj122.com/gongzuozongjie/qitazongjie/789560.html
7.Excel中的10种排序方法,总有一种适合你!Excel中的10种排序方法,总有一种适合你! 表格制作好了,需要根据某些内容进行排序,可以把数据按一定顺序分类,方便查看。今天小编分享几种排序的操作方法,总有一种方法适合你。 一、按数值大小排序 这应该是排序中最常见的一种操作吧,比如我们想要按1月的销量升序排列,只需选中D列中的任意一单元格,点击【开始】选...https://weibo.com/ttarticle/p/show?id=2309404954220892914016
8.TSQL查询语句大总结5. 将products表中所有水果的名称、种类和出厂日期信息插入到新表products_new中 语句:select 名称,种类,出厂日期 into products_new from products where 种类='水果' 案例二:表如下图所示 实验需求: 1、 在products表和sales表中查询产品的名称、种类、成本、销售地点和销售价格。 https://www.w3cschool.cn/aunhj/aunhj-tsdk24xl.html
9.excel中vlookup函数的使用方法1.Lookup_value为“需在数据表第一列中查找的数据”,可以是数值、文本字符串或引用。 2.Table_array 为“需要在其中查找数据的数据表”,可以使用单元格区域或区域名称等。 ⑴如果 range_lookup 为 TRUE或省略,则 table_array 的第一列中的数值必须按升序排列,否则,函数 VLOOKUP 不能返回正确的数值。 http://edu.yjbys.com/office/457410.html
10.山东协和学院34. 写出sql语句,查询家庭地址不在沈阳且性别是男的人的信息。 35. 写出sql语句,查询出生日期在1982年以后的人,查询结果按年龄升序排列。 36. 一条sql语句是否可以查询出多个表的结果集? 37. 多表查询分为多少种,分别是什么? 38. 多表查询中是否可以给表起别名? https://www.sdxiehe.edu.cn/m/view.php?id=31442