《2022年SQL高级查询 .pdf》由会员分享,可在线阅读,更多相关《2022年SQL高级查询 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、N10TH 陈松 2010.9.5usemarketgoselect*fromgoods-基于条件的查询。usejwglgoselect*fromstudentwhereage=18-查询 student表中的年龄等于的所有学生。select*fromstudentwhereage=18andsex=0-查询 student表中年龄等于的所有女生的信息。-以上两个语句中还可以将where 语句中的=号更换为其他符号,如=select*fromstudentwhereage 18andsex=0select*fromstudentwhereage 18andsex=0-查询 students表中
2、年龄不等于18 的女生信息。-基于范围的查询。select*fromstudentwhereagebetween18and22-查询 student表中年龄在岁和岁之间的学生信息,其中包括18 岁和 22 岁。select*fromstudentwhereage=18andage=22-此命令等同于以上命令。select*fromstudentwhere(age=18orage=22)andsex=0-查询年龄是 18 岁或者 22 岁的女生信息。-基于 in 的关键字select*fromstudentwhereclass_idin(g9901,g9902)-查看 class_id等于 g9
3、901 和 g9902 的学生信息。select*fromsutdentwhereclass_id=g9901orclass_id=g9902-此命令等同于以上命令。select*fromstudentwhereclass_idin(g9901,g9902)andsex=0-查看 class_id等于 g9901 和 g9902 的女生信息。-基于 like关键字select*fromstudentwherestudent_namelike 张%-查看姓名为张的所有学生信息。select*fromstudentwheretellike_8%-查看电话号码第三位是的学生信息。select*fro
4、mstudentwherestudent_namelike张,李%-查看性别为张和李的所有学生信息。select*fromstudentwherestudent_namelike 张%orstudent_namelike 李%-查看性别为张或者李的所有学生信息。select*fromstudentwherestudent_namenotlike张,李%-查看性别不是张和李的所有学生信息。select*fromstudentwherestudent_namelike张,李%-此命令等同于上一命令。selecttop3*fromstudentorderbyagedesc-将student表中年龄按
5、降序排列,只显示前三行。selecttop30percent*fromstudentorderbyagedesc名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 5 页 -将student表中年龄按降序排列,只显示全表中的30%selecttop3*fromstudentorderbyageasc-将student表中年龄按升序排列,只显示前三行。默认是按照升序排列的,可以不写。select*fromstudentorderbyagedesc,sexasc-将年龄按降序排列显示之后再按照性别进行升序排列,第二个排列是在第一个排列相等的基础上进行的。usemarketgoselect
6、distinctgoodsnamefromorders-查看 orders表中有订单的商品名,并且消除重复。selectgetdate()-查看系统日期。selectstudent_id,student_name,birth,datediff(yy,birth,getdate()asagefromstudent-计算出学生从出生到现在的年龄,并且输出结果。selectdatename(dw,getdate()-查看当前状态是星期几。其中d表示天,w表示星期。selectdatepart(yy,getdate()-查看当前状态是那一年。selectfirstname+lastnamefromcu
7、stomer-将customer表中姓名的第一个字和最后一个字组合显示。useemployeegoselectbase_salary+datediff(yy,start_time,getdate()*50fromemp-计算当前时间于员工入职以来的工作年限,并且根据工作年限乘以50 然后加上月底薪,再显示。selectemp_name,base_salary+datediff(yy,start_time,getdate()*50as 基本工资 fromemp-对以上命令进行补充,显示出每个人的工资标准。select员工+emp_name+的基本工资是+convert(varchar(20),b
8、ase_salary+datediff(yy,start_time,getdate()*50)as 工资单 fromemp-此命令中的 convert命令是将后面输出的数字转换成字符串,然后显示。-2010-5-612:28:32开始到-5-1012:28:32select 您的通话时长是+convert(varchar(20),ceiling(datediff(ss,2010-5-612:28:32,2010-5-1012:28:32)/60.0)+分钟 as 通话时间-计算以上时间间隔一共通话的总时间,ceiling表示取计算出的数值的上限,其中后面的60.0是精确到秒。selectsys
9、tem_user-查看现在拥有数据库的系统用户。selectcurrent_user-查看现在使用此数据库的用户。selectdatalength(祝龙博 zlb)-统计此字符串总数,按照字节统计。selectdateadd(dd,10,getdate()-查看当前时间加天之后的日期。selectlen(祝龙博 zlb)-统计此字符串总数,按照长度统计。-聚合函数也叫集合函数-maxminavgcountsumuseemployee名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 5 页 -goselectmax(base_salary),min(base_salary),coun
10、t(*),avg(base_salary),sum(base_salary)fromemp whereposition=高级讲师-显示 高级讲师 的最高工资以及最低工资和人数总和以及工资总和。selectcount(home_addr)fromstudent-显示 student表中家庭地址不为空的所有学生总和。selectcount(*)fromstudent-显示 student表中的所有学生总和。selectpositionas 职位 ,avg(base_salary)as 平均 工资 fromempgroupbyposition-Select后的列表如有聚合函数,除聚合函数外,其他列必
11、须出现在groupby后,否则出错。-显示雇员表中各职位的平均工资。selectsex,sum(age)fromstudentgroupbysexhavingsum(age)=500-将student表中的所有学生的成绩按照学号总和统计然后在输出结果中筛选出总成绩大于分的学生。selectdatepart(dd,orderdate)as 第 天 ,sum(ordersum)as金 额 fromorderswheredatepart(mm,orderdate)=4groupbydatepart(dd,orderdate)-查询 orders表中所有商品的出售情况,只显示月份每一天商品的出售金额总
12、和统计的结果。selectdatepart(mm,orderdate)as 月 份 ,sum(ordersum)as金 额 fromorderswheredatepart(yy,orderdate)=2007groupbydatepart(mm,orderdate)-查询 orders表中所有商品的出售情况,只显示年每月商品的出售金额总和统计的结果。selectdatepart(yy,orderdate)as 年 份 ,sum(ordersum)as金 额 fromordersgroupbydatepart(yy,orderdate)-查询 orders表中所有商品的出售情况,显示年出售商品金
13、额总和的统计结果。selectstudent_name,casewhensex=1then 男 whensex=0then 女else 不分男女 endas 性别 fromstudent-显示 student表中所有学生的性别,别且将表中所定义的1 装换成男,女显示出来。selectemp_name,position,casewhenposition=初级讲师thenbase_salary+1000whenposition=中 级 讲 师 thenbase_salary+2000whenposition=高级讲师 thenbase_salary+3000elsebase_salaryendfr
14、omemp-显示如果职位是初级讲师则底薪加,中级讲师底薪加高级讲师底薪加其他不加,最后显示计算后的统计结果。-compute子句selectorderid,goodsname,customerid,ordersumfromorderswhereorderdate2007/4/18computesum(ordersum)-查询在年月日之后的订单的金额,并统计总金额。selectemp_id,emp_name,base_salary,pricefromemp wherestart_time1999/01/01computesum(base_salary)-查询在年月日入职员工的基本工资,并且对这些
15、员工的基本工资进行统计。selectorderid,goodsname,customerid,ordersumfromorderswhereorderdate2007/4/18orderbygoodsnamecomputesum(ordersum)bygoodsname-查询在年月日之后的订单的金额,并统计每种货品的订单总金额。若使用COMPUTE BY,则必须使用 ORDER BY。selectstudent_nameas 姓名 ,min(age)as 最小年龄 ,max(age)as 最大年龄 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 5 页 -fromstudentw
16、heresex=0groupbystudent_name-查询 students表中最小年龄和最大年龄的女生。selectmin(age)as 最小年龄 ,max(age)as 最大年龄 ,sexfromstudentgroupbysexhavingsex=0-查询 students表中最小年龄和最大年龄的女生-内连接查询selectstudent_id,student_name,class_namefromstudentinnerjoinclass_infoonstudent.class_id=class_info.class_id-显示学生的信息,并且显示学生所属的班级名称selectst
17、udent_id,student_name,class_namefromstudentinnerjoinclass_infoonstudent.class_id=class_info.class_idwherestudent.class_idin(g9901,g9902)orderbyclass_info.class_namedesc-显示网页一班和网页二班的学生编号及姓名,并显示学生所属班级名称,按班级名称进行降序显示。selectemp.emp_id,emp_name,start_time,class_namefromemp innerjointeachingonemp.emp_id=te
18、aching.emp_id-显示雇员表中每个老师的入职时间和姓名以及所对应教学的课程。selectstudent_id,student_name,class_namefromstudentinnerjoinclass_infoonstudent.class_id=class_info.class_id-查询学生表中按照班级显示学生姓名以及student_idselectstudent.student_id,student_name,coursename,class_name,gradefromstudentinnerjoinclass_infoonstudent.class_id=class_
19、info.class_idinnerjoinstudent_courseonstudent.student_id=student_course.student_idinnerjoincourseoncourse.courseid=student_course.course_idwhereclass_namein(网页一班 ,网页二班 )orderbystudent.class_id-查询 student表中网页一班和网页二班按照学生姓名以及student_id和所参加考试的科目以及考试成绩。selectorderid,goodsname,quantity,ordersum,orderdate,
20、firstname,lastnamefromordersinnerjoincustomersoncustomers.customerid=orders.customerid-查询 orders表中按照 customerID将货品订单与订货人对应显示。selectstudent_id,student_name,class_namefromstudentrightouterjoinclass_infoonstudent.class_id=class_info.class_id-以class_info表为主显示所有学生所对应的班级,显示结果以主表的所有内容为准。selectstudent_id,st
21、udent_name,class_namefromstudentleftouterjoinclass_infoonstudent.class_id=class_info.class_id-以student表为主显示所有学生所对应的班级,显示结果以主表的所有内容为准。selectstudent.student_id,student_name,coursename,gradefromstudent_courserightouterjoinstudent名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 5 页 -onstudent.student_id=student_course.st
22、udent_idleftouterjoincourseonstudent_course.course_id=course.courseid-查询所有学生所对应的科目的考试成绩,其中student_course表中不符和条件的不显示以及 course表中不符合条件的也不显示。其中 rightouterjoin所对应的表中的记录会全部显示。成为主表。Leftouterjoin表中只显示符合条件的记录。selectstudent.student_id,student_name,class_namefromstudentfullouterjoinclass_infoonstudent.class_id
23、=class_info.class_id-显示所有学生所对应的班级,fullouterjoin会显示两张表中的所有记录。selectstudent_id,student_name,class_namefromstudentinnerjoinclass_infoonstudent.class_id=class_info.class_id-显示学生所对应的班级以及学生姓名和学生ID.innerjoin只显示两张表中互相符合条件的记录select*fromstudentwhereage(selectavg(age)fromstudent)-查询平均年龄大于selectavg(age)fromstud
24、ent的学生信息。selectstudent_idfromstudent_coursewheregrade(selectavg(grade)fromstudent_course)-按照学生编号查询平均分数小于selectavg(grade)fromstudent_course分数的学生编号。select*fromcustomerswherecustomerid=(selectcustomeridfromorderswhereorderid=3)-查看 orderid等于三的订货编号人的详细信息。select*fromstudentwherestudent_idnotin(selectstude
25、nt_idfromstudent_course)-按照 student_id查询没有参加考试的学生的详细信息。ifexists(select*fromsys.sysobjectswherextype=Uandname=student)droptablestudentgocreatetablestudent(stu_idintidentityprimarykey,stu_namevarchar(10)notnull,ageint)-判断如果所有数据库中有student表,则删除此student表,然后重新创建student表。N10TH陈松 2010.9.5名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 5 页 -