select语句题大学计算机数据库
- 格式:docx
- 大小:21.37 KB
- 文档页数:8
多表查询以下题目使用数据库xk,包括表:表1 Department表2 Course表3 Class表4 Student表5 StuCout--嵌套查询--1类:带有比较运算符的查询,查询结果为单值--查询报名人数大于平均报名人数的课程信息--1步.假如平均报名人数是30select*from coursewhere willnum>30--2步.查询出平均报名人数,查询结果是个数值型数据,凡是数值可以出现的地方,该select语句就可以出现select avg(willnum)from course --查询出平均报名人数--3步.替换select*from coursewhere willnum>(select avg(willnum)from course)--错误:where willnum>avg(willnum)--查询出学分最大的课程的名称--1步.假如最大学分是10分select counamefrom coursewhere credit=10--2步.查询出学分最大值select max(credit)from course--3步. 替换select counamefrom coursewhere credit=(select max(credit)from course)--查询出‘00电子商务’班的学生的姓名--1步.假如班号是'20000001'号select stunamefrom studentwhere classno='20000001'--2步.查询出‘电子商务’班的班号select classno from class where classname='00电子商务'--3步.替换select stunamefrom studentwhere classno=(select classno from class where classname= '00电子商务')--查询出'世界旅游'课程的选课信息--1步.假如'世界旅游'课程的课程号是'001',查询出'001'号课程的选课信息select*from stucou where couno='001'--2步.查询出'世界旅游'课程的课程号select couno from course where CouName='世界旅游'select*from stucou where couno=(select couno from course w here CouName='世界旅游')--查询出班级个数最多的院系名称--1步.假如'01'号学院班级最多,查询出'01'号学院的院系名称select departname from department where departno='01'--2步.查询出班级个数最多的院系编号selecttop 1 departnofrom classgroupby departnoorderby count(*)desc--3步.替换--查询结果是个院系编号,凡是院系编号可以出现的地方,该select 语句就可以出现select departnamefrom departmentwhere departno=(selecttop 1 departnofrom classgroupby departnoorderby count(*)desc)--where 列in(该列的集合)--查询结果为集合--查询出选课表中报名状态state为报名的课程名称--假如('001','002','003') 报名状态state为报名select counamefrom coursewhere couno in('001','002','003')--2:查询出选课表中报名状态为报名的课程编号的集合,select distinct counofrom stucou --凡是课程编号的集合出现的地方都可以用该select语句取代where state='报名'--替换:select counamefrom coursewhere couno in(selectdistinct counofrom stucouwhere state='报名')--查询出‘01’号学院的学生姓名--1步.查询出‘01’号学院的班号集合select classno from class where departno='01'--2步.查询出这些班的学生姓名select stunamefrom studentwhere classno in(select classno--‘1’号学院的班号集合from classwhere departno='01')--查询出'20000001'班学生的选课信息--1步.查询出'20000001'班的学号集合select stuno from student where classno='20000001' --2步.查询这些学生的选课信息select*from stucouwhere stuno in(select stunofrom studentwhere classno='20000001')--查询出'00电子商务'班学生的选课信息--1步.查出'00电子商务'班的班号select classnofrom classwhere classname='00电子商务'--2步.查出该班的学号集合select stunofrom studentwhere classno=(select classnofrom classwhere classname='00电子商务')--3步.查询这些学生的选课信息select*from stucouwhere stuno in(select stuno--2.查出该班的学号集合from studentwhere classno=(select classno--1.查出'00电子商务'班的班号from classwhere classname='00电子商务'))--查询出与学号是1号的学生选修课程数相等的学生的学号select stuno --选修了5门课的学生的学号的集合from stucougroupby stunohaving count(*)=5select stuno --选修了与学号是1号的学生选修课程数相等的学生的学号的集合from stucougroupby stunohaving count(*)=(select count(*)from stucou where stuno='00000001')--查询出与学号是1号的学生选修课程数相等的学生的姓名select stunamefrom studentwhere stuno in(select stuno --选修了与学号是号的学生选修课程数相等的学生的学号的集合from stucougroupby stunohaving count(*)=(select count(*)from stucou wherestuno='00000001'))--查询出与'林斌'选修课程数相等的学生的姓名select stunamefrom studentwhere stuno in(select stuno--选修了与学号是号的学生选修课程数相等的学生的学号的集合from stucougroupby stunohaving count(*)=(select count(*)from stucou where stuno=(select stuno f rom student where stuname='林斌')))--any/some/all--where 列>any/some(集合子查询) : 列值比子查询结果中的某个值大就为真--where 列>all(集合子查询) : 列值比子查询结果中的所有值大才为真--查询出比号班中某一个学生年龄小的其他班的学生的学号和姓名select stuno,stunamefrom studentwhere bir>any(select bir from student whereclassno='20000001')and classno<>'20000001'--或:select stuno,stunamefrom studentwhere bir>some(select bir from student whereclassno='20000001')and classno<>'20000001'--查询出比号班中所有学生年龄都小的其他班的学生的学号和姓名select stuno,stunamefrom studentwhere bir>all(select bir from student whereclassno='20000001')and classno<>'20000001'--exists:存在--当子查询结果不为空时where为真,否则为假--查询已经报名选修课程的学生姓名--方法1:in--1步.查询出已经报名选修课程的学生学号的集合selectdistinct stunofrom stucouwherestate='报名'--2步.查询出这些学生的姓名select stunamefrom studentwhere stuno in(selectdistinct stunofrom stucouwherestate='报名')--方法2:exists:存在--格式:where exists (子查询select)--当子查询结果不为空时where为真,否则为假--表的列名看成变量,变量值是表的当前行的该列值--student.stuno: 表示student表中当前行的stuno列的值select stunamefrom studentwhere exists(select*from stucou where stuno=student.stu no and state='报名')--查询所有选修了号课程的学生的学号和姓名select stuno,stunamefrom studentwhere exists(select*from stucou wherestuno=student.stuno and couno='001')--多表连接查询--交叉连接cross join:左表每行依次与右表所有行连接--结果表包括两个表的所有列--左表有m行,右表有n行,结果表中有mXn行--from 左表cross join 右表--笛卡尔积:交叉连接的结果称为笛卡尔积--例:列出所有可能的选课情况select stuno,stuname,couno,counamefrom student crossjoin course--内连接select*into stu2from studentwhere stunoin('00000001','00000002','00000011','00000012','000 00021','00000021')select*into class2from classwhere classno in('20000001','20000002','20000003') --内连接: 左表[inner] join 右表--公共列:主表的主键=从表的外键--from 左表join 右表--on 左表.列=右表.列(共同列)--on作用同where,对行的筛选,从笛卡尔积中选出满足on条件的行--查看学生基本信息及所在班级信息select* --两个表的所有列都显示from class join studenton class.classno=student.classno--表名.*:表示某个表的所有列--查看学生基本信息及所在班级的班级名称select student.*,class.classnamefrom class join studenton class.classno=student.classno--表的别名,一旦为表起了别名,表名不能再使用,只能使用别名select s.*,classname班级名称from student2s join classcon s.classno=c.classno--列出每个学生的学号、姓名,以及他选修的课程号、志愿号(willorder)select student.stuno,stuname,couno,willorderfrom student join stucouon student.stuno=stucou.stuno--列出‘01’号学院的所有学生的姓名、班级名称selecttop 5 stuname,classnamefrom class join studenton class.classno=student.classnowhere departno='01'order by classname--多表(>=3)连接--列出每个学生的姓名、班级名称、所在院系名称select stuname,classname,departnamefrom student join classon student.classno=class.classnojoin departmenton class.departno=department.departno--列出每个学生的学号、姓名,以及他选修的课程号、课程名称、志愿号select student.stuno,stuname,stucou.couno,couname,wi llorderfrom student join stucouon student.stuno=stucou.stunojoin courseon stucou.couno=course.couno--查询出‘林斌’选修的课程名称及课程所在院系的名称select couname,departnamefrom department as d join course con d.departno=c.departnowhere couno in(select couno from stucou where stuno=(select stuno from student where stuname='林斌'))--或:select couname,departnamefrom department as d join course con d.departno=c.departnojoin stucou scon c.couno=sc.counojoin student son sc.stuno=s.stuno and stuname='林斌'--where stuname='林斌'--查询出每个学生的姓名、选修的课程名称及课程所在院系的名称select stuname,couname,departnamefrom department as d join course con d.departno=c.departnojoin stucou scon c.couno=sc.counojoin student son sc.stuno=s.stuno--查询出每个学生选修课程门数,按学生学号、门数两列显示select stuno,count(*)from stucougroupby stuno--查询出每个学生选修课程门数,按学生姓名、门数两列显示,前提是学生没有重名的Select stuname,count(*)门数from student join stucouon student.stuno=stucou.stunogroupby student.stuname--自连接:表与自身进行连接--必须为表起别名--查询出每门课的名称以及其前驱课的名称select a.couname,b.counamefrom coursea join coursebon a.cpno=b.couno--外连接--左外连接(left join):除了内连接的结果行,还包括左表剩余的行--右外连接(right join):除了内连接的结果行,还包括右表剩余的行--全外连接(full join):除了内连接的结果行,还包括左、右两表剩余的行--列出所有学生信息以及其所在班级信息select*from student2join classon student2.classno=class.classnoselect*from student2leftjoin classon student2.classno=class.classnoselect*from student2rightjoin classon student2.classno=class.classnoselect*from student2full join classon student2.classno=class.classno--列出所有学生的学号、姓名,以及其选修的课程号;未选修课程的学号也要列出,left joinselect student.stuno,stuname,counofrom student leftjoin stucouon studnet.stuno=stucou.stuno--列出所有课程号、课程名称、选修该课程的学号,没被选修的课程也要列出,right joinselect course.couno,couname,stunofrom stucou rightjoin courseon stucou.couno=course.couno--子查询在delete、update中的应用--将‘00多媒体’班的‘杜晓静’姓名改为‘杜小静’update studentset stuname='杜小静'where stuname='杜晓静'and classno=(select classno from class where classname=' 00多媒体')select*from student where stuname='杜小静'and classno=(select classno from class where classname=' 00多媒体')--‘00电子商务’班的‘林斌’申请将已选修的‘网站信息检索原理与技术’课程改为‘Linux操作系统’update stucouset couno=(select couno from course where couname='Linux操作系统')where couno=(select couno from course where couname='网络信息检索原理与技术') and stuno=(select stuno from studentwhere stuname='林斌'and classno=(select classno from class where classname='00电子商务'))selecttop nintofromonwheregroupbyhavingorderby。
提供的“学生管理数据库练习用”文件夹下的“学生管理”数据库附加1、查看学生表中有哪些班级的同学select distinct 班级 from 学生2 、显示“学生”表中的前3行记录的所有列,select top 3 * from 学生3、显示“学生”表中的前3行记录的姓名列,显示标题为学生姓名select top 3 姓名 as 学生姓名 from 学生4、查询“学生”表中所有男生的姓名、性别。
select 姓名,性别=case 性别when 0 then '女' else '男'endfrom 学生where 性别=15、查询“学生”表中所有姓名中包含“李”记录的姓名、所属院系。
select 姓名, 所属院系from 学生where 姓名 like '%李%'6、查询“学生”表中所有一班的女生。
select 姓名,case 性别when 0 then '女'else '男'end, 班级 from 学生where 性别=0 and 班级='一班'7 、查询“学生”表中所有一班和二班的学生的姓名和班级。
select 姓名, 班级from 学生where 班级='二班'or 班级='一班'8、查询“学生”表中所有入学成绩在550~580之间的学生记录的姓名、入学成绩、所属院系。
select 姓名,入学成绩, 所属院系from 学生where 入学成绩 between 550 and 580或:select 姓名,入学成绩, 所属院系from 学生where 入学成绩 >= 550 and 入学成绩<=5809、查询所有学生的入学成绩。
select 姓名,入学成绩from 学生10 、显示学生表中姓名和性别列的内容。
select 姓名, 性别from 学生11、对“学生”表中“性别”列的值进行处理,当值等于0时返回“女”,当值等于1时返回“男”。
select 语句简单数学计算
当我们在数据库中使用SELECT语句进行简单的数学计算时,通
常是通过使用内置的数学函数来实现的。
比如,我们可以使用SUM()函数来对某一列的数值进行求和,使用AVG()函数来计算平均值,
使用MAX()和MIN()函数来找出最大值和最小值,使用COUNT()函数
来统计行数等等。
举个例子,如果我们有一个表格存储了学生的考试成绩,我们
可以使用SELECT语句结合SUM()函数来计算所有学生的总分,或者
使用AVG()函数来计算平均分。
如果我们想要找出最高分和最低分,可以使用MAX()和MIN()函数。
另外,如果我们想知道有多少学生参
加了考试,可以使用COUNT()函数来得到总人数。
除了基本的数学计算,我们还可以在SELECT语句中进行一些简
单的数学运算,比如加减乘除等。
我们可以直接在SELECT语句中使
用数学运算符号,比如加号(+)、减号(-)、乘号()、除号(/)等,来
对列进行加减乘除操作。
例如,我们可以编写SELECT语句来计算两
列的和、差、积或商。
总之,使用SELECT语句进行简单的数学计算,我们可以通过内
置的数学函数和数学运算符号来实现对数据库中数值数据的各种计算需求。
希望这个回答能够帮助到你,如果你有更多的问题,请继续提出。
⼤学计算机⼤数据库期末考试复习资料及试卷(7)TEST1⼀、判断题.1.Access数据库的全部内容存放在⼀个扩展名为.mdb的⽂件中。
2.表是数据库的基本对象,是存放各类数据的基础。
3.⽂本型字段⼤⼩的取值范围是0~256,默认值为50。
4.输⼊掩码向导可以⽤于⽂本型和⽇期时间型。
5.条件year([出⽣年⽉])=1982,表⽰查找出⽣⽇期为1982年。
6.要建⽴两表之间的关系,必须通过两表的共同字段来创建。
7.排序只能对⼀个字段进⾏排序。
8.报表的视图有三种:打印预览、设计视图、版⾯预览。
9.在SQL的SELECT语句中,⽤于实现选择运算的短语是Where短语。
10.在数据库中能够唯⼀地标识⼀个元组的属性或属性的组合称为关键字。
11.为窗体或报表上的控件设置属性值的宏命令是Beep。
12.在窗体中可以使⽤⽂本框创建计算控件显⽰计算结果。
13.如果字段的内容为图像⽂件,则该字段的数据类型应定义为超级链接。
14.字段在库的设计中已经定义完成,在查询显⽰时不能改变其显⽰名称。
15.能够唯⼀标识某⼀控件的属性是标题。
16.计算控件的控件来源属性⼀般设置为“=”开头的计算表达式。
17.VBA中定义符号常量⽤的关键字是Dim。
18.在为查询添加字段时,“*”表⽰所有的表和字段。
19.报表的数据来源不能是查询。
20.InputBox函数的返回值类型是数值型。
⼆、选择题(每题1分,共30分。
涂⿊答题卡上对应的项。
)21.关系数据库系统能够实现的三种基本关系运算是(21)。
A)索引,排序,查询B)建库,输⼊,输出C)选择,投影,联接D)显⽰,统计,复制22. Access数据库的类型是(22)。
A)层次数据库B)⽹状数据库C)关系数据库D)⾯向对象数据库23. Access表中字段的数据类型不包括(23).A)⽂本B)备注C)通⽤D)⽇期/时间24. 在Access数据库中已建⽴了“tBook”表,若查找“图书编号”是“112266”和“113388”的记录,应在查询“设计”视图的“条件”⾏中输⼊(24)A) ″112266″and ″113388″B) Not In (″112266″,″113388″)C) In (″112266″,″113388″) D) Not (″112266″,″113388″)25. 以下关于查询的叙述正确的是(25)。
2020年计算机二级考试《MySQL》模拟练习选择题1[单选题]关于SELECT语句以下哪一个描述是错误的( )A.SELECT语句用于查询一个表或多个表的数据。
B.SELECT语句属于数据操作语言(DML)。
C.SELECT语句的列必需是基于表的列的。
D.SELECT语句表示数据库中一组特定的数据记录。
参考答案:C2[单选题]改变表名的指令是( )A.RENAME TABLE t1 rename to t2;B.RENAME TABLE t1 to t2;C.UPDATE NAME t1 to t2;D.CHANGE NAME t1 to t2;参考答案:B3[单选题] 在SELECT语句中,能够使用________子句,将结果集中的数据行根据选择列的值实行逻辑分组,以便能汇总表内容的子集,即实现对每个组的聚集计算。
A.LIMITB.GROUP BYC.WHERED.ORDER BY参考答案:B4[单选题]SELECT * FROM city limit 5,10描述准确的是( )A.获取第6条到第10条记录。
B.获取第5条到第10条记录。
C.获取第6条到第15条记录。
D.获取第5条到第15条记录。
参考答案:C5[单选题] 对于现实世界中事物的特征,在实体-联系模型中使用( )A.属性描述B.关键字描述C.二维表格描述D.实体描述参考答案:A6[单选题]创建表时,不允许某列为空能够使用A.NOT NULLB.NO NULLC.NOT BLANKD.NO BLANK参考答案:A7[单选题] 从E—R模型向关系模型转换,一个M:N的联系转换成一个关系模式时,该关系模式的键是________。
A.M端实体的键B.Ⅳ端实体的键C.M端实体键与N端实体键组合D.重新选择其他属性参考答案:C8[单选题]关系数据库中,外码(ForeignKey)是( )。
A.在一个关系中定义了约束的一个或一组属性B.在一个关系中定义了缺省值的一个或一组属性C.在一个关系中的一个或一组属性是另一个关系的主码D.在一个关系中用于标识元组的一个或一组属性参考答案:C9[单选题]修改自己的mysql服务器密码的命令是( )A.mysqlB.grantC.set passwordD.change password参考答案:C10[填空题]在创建表格时,能够使用( )关键词使当前建立的表为临时表。
该实验以SQL Server 2000系统自带的pubs 数据库为例,以一个图书出版公司为模型。
●SQL SERVER200实体关系图描述●E-R图描述(1)该系统中数据库基本表如下:Authors:2 zip CHECK 约束定义为(zip LIKE '[0-9][0-9][0-9][0-9][0-9]')。
============================discountsEmployee(emp_id LIKE '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]') OR (emp_id LIKE '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]')。
============================Jobs(2) max_lvl CHECK 约束定义为(max_lvl <= 250)。
============================pub_infoPublishers(pub_id = '1756' OR (pub_id = '1622' OR (pub_id = '0877' OR (pub_id = '0736' OR (pub_id = '1389')))) OR (pub_id LIKE '99[0-9][0-0]')。
============================royschedSalestitles============================ Storestitleauthor(2)练习内容目的1:1.加深对表间关系的理解。
2.理解数据库中数据的查询方法和应用。
3.学会各种查询的异同及相互之间的转换方法。
内容1:1.查询所有作者的作者号、姓名信息2.查询所有作者的姓名、作者号信息,并在每个作者的作者号前面显示字符串“身份证号:”,表明显示的信息是身份证信息3.查询在CA州的作者姓名和城市4.查询出版日期在1992.1.1-2000.12.31之间的书名和出版日期(查询1991年出版的书)5.查询每个出版社出版的书6.查询某店销售某书的数量7.查询有销售记录的所有书信息,包括书的编号、书名、类型和价格8.查询已销售书的信息9.显示所有的书名(无销售记录的书也包括在内)10.查询已销售书的信息(书号、书名、作者等)11. 查询所有出版商业(business)书籍的出版社的名称目的2:1.理解数据库中数据的其他查询方法和应用;2.学会各种查询要求的实现。
----答案网上下载,未经检验,仅供参考。
--------简单查询1 显示所有部门名select dnamefrom dept;2 显示存在雇员的所有部门号select distinct deptnofrom emp;3 显示工资超过2850的雇员名和工资select ename,salfrom empwhere sal > 2850;4 显示工资不在1500到2850之间的所有雇员名及工资select ename,salfrom empwhere sal not between 1500 and 2850;5 显示雇员代码为7566的雇员名及所在部门号select ename,deptnofrom empwhere empno = 7566;6 显示部门代码为10和30中工资超过1500的雇员名及工资select ename,salfrom empwhere sal > 1500 and deptno in (10,30)7 显示无管理者的雇员名及岗位select ename,jobfrom empwhere mgr is null;8 显示获得补助的所有雇员名、补助额以及所在部门号select deptno,ename,commfrom empwhere comm is not null;9 显示部门代码为20的部门的所有雇员名、雇员工资及岗位select ename,sal,jobwhere deptno = 20;10 显示所有雇员的姓名、部门编号、工资,并且列名要显示为中文select ename as 姓名,deptno as 部门编号,sal as 工资from emp;11 显示工资大于1500的雇员名和工资,并且按照工资的降序排列select ename,salfrom empwhere sal > 1500order by sal desc;12 显示雇员部门编号为10或20的信息(要求使用IN关键字)select *from empwhere deptno in (10,20);13 显示雇员名的第二个字母为A的信息select enamefrom empwhere ename like '_A%';14 显示没有发放补助的雇员信息select *from empwhere comm is null;15 显示所有雇员名及其全年收入(工资+补助),并指定列别名"年收入"select ename,nvl2(comm,sal+comm,sal) as 年收入from emp;--NVL2(x,v1,v2):如果x不为NULL,返回v1,否则返回v2。
查询xscj表中的学号,姓名,计算机三项信息,结果按计算机成绩的降序排列。
select 学号,姓名,计算机from xscj order by 计算机desc统计xsda表中男女生的人数select 性别,count(*) as 人数from xsda group by 性别select * from 图书where year(出版日期) >=2018计算xsda表中男女生的平均身高。
select 性别,avg(身高) as 平均身高from xsdagroup by 性别查询zgda表中的工号,姓名,性别,职称4项信息,显示结果时首先按照女性在前的顺序,如果性别相同则按照职称的升序排列。
select 工号,姓名,性别,职称from zgdaorder by 性别desc ,职称本题目要求编写SQL语句,查询图书表中条形码左边开始三个字符是“TP3”的图书的全部信息要求:不能用like运算符构成条件表达式。
select *from 图书where 条形码like "TP3%"本题目要求编写SQL语句,查询图书表中书名为“C语言程序设计”和“VB程序设计”的两本书的全部信息要求:使用in 运算符构成条件表达式提示:请使用SELECT语句作答。
select *from 图书where 书名in ("C语言程序设计","VB程序设计")题目要求编写SQL语句,查询图书表中未录入出版社信息的图书,要求结果中包含条形码,书名,出版社3列提示:请使用SELECT语句作答,“未录入”表示该项为空。
select 条形码,书名,出版社from 图书where 出版社is null本题目要求编写SQL语句,查询图书表中不是科学出版社出版的图书的全部信息提示:请使用SELECT语句作答。
SELECT *FROM 图书WHERE 出版社NOT IN ("科学出版社")本题目要求编写SQL语句,查询图书表中各出版社图书的数目,结果按图书数目降序排序提示:请使用SELECT语句作答。
select查询数据库语句一、查询所有数据SELECT * FROM 表名;这个语句可以用来查询指定表中的所有数据,*表示所有列,可以将其替换为指定的列名来查询指定的数据。
二、查询指定列的数据SELECT 列名1, 列名2, ... FROM 表名;这个语句可以查询指定表中指定列的数据,列名之间用逗号分隔,可以查询多个列的数据。
三、查询指定条件的数据SELECT * FROM 表名 WHERE 条件;这个语句可以查询符合指定条件的数据,条件可以是列名和值的比较,也可以是多个条件的组合,使用AND、OR等逻辑运算符。
四、查询数据并按照指定列排序SELECT * FROM 表名 ORDER BY 列名;这个语句可以查询指定表中的所有数据,并按照指定列的值进行排序,默认是升序排序,可以加上DESC关键字进行降序排序。
五、查询数据并指定查询结果的数量SELECT * FROM 表名 LIMIT 数量;这个语句可以查询指定表中的指定数量的数据,可以用来控制查询结果的数量,常用于分页查询。
六、查询数据并进行分组SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名;这个语句可以查询指定表中的数据,并按照指定列进行分组,可以用来统计每个分组中的数据。
七、查询数据并进行条件统计SELECT 列名, COUNT(*) FROM 表名 WHERE 条件 GROUP BY 列名;这个语句可以查询指定表中符合条件的数据,并按照指定列进行分组,然后统计每个分组中的数据数量。
八、查询数据并进行多表连接SELECT 列名 FROM 表名 1 INNER JOIN 表名 2 ON 表名 1.列名 = 表名2.列名;这个语句可以查询多个表中的数据,并对表进行连接,连接条件是指定的列名相等。
九、查询数据并进行条件判断SELECT 列名1, 列名2, ... FROM 表名 WHERE 列名1 IS NULL;这个语句可以查询指定表中指定列的数据,并进行条件判断,判断列的值是否为NULL。
select 句型使用实例:学生_课程数据库中包括3个表:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Cpno(选修课号), Ccredit(学分))学生选课表SC(Sno,Cno,Grade)单表查询:选择表中若干列1,查询指定列select Sno,Sname from Student;select Sname,Sno,Sdept from Student;2,查询全部列select * from Student;3,查询经过计算的值查询全部学生的姓名和出生年份select Sname, 2006-Sage as '出生年份' from Student;目标列表达式不仅可以是算术表达式,还可以是字符串常量、函数等查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所在系名。
select Sname, 'Year of Birth',2006-Sage,IsLower(Sdept) from Student;用户可以指定别名来改变查询结果的列标题select Sname Name,'Year of Birth' Birth, 2006-Sage Birthday, ISLower(Sdept) Department from Student;选择表中的若干元组1,消除取值重复的行两个本来并不完全相同的元组,投影到指定的某些列上后,可能变成相同的行。
例如:查询选修了课程的学生学号select Sno from SC;该查询结果包含了许多重复的行,要去掉重复的行,必须指定distinct短语。
select Distinct Sno from SC;2,查询满足条件的元组查询满足指定条件的元组可以通过where子句实现。
1)比较大小:用于进行比较的运算符一般包括:=、>、<、<=、>=、!=、<>有些产品还包括:!>(不大于)!<(不小于),逻辑运算符NOT可与比较运算符同用,对条件求非。
数据库笔试选择题一、选择题(每题3分,共30分)1. 在数据库中,以下哪个关键字用于从表中选取数据?A. INSERTB. SELECTC. UPDATED. DELETE答案:B。
解析:SELECT语句是用于从数据库表中检索数据的,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据。
2. 数据库中的视图是做什么用的?A. 存储数据的物理结构B. 一种虚拟表,是从一个或多个表中导出的表C. 数据库的备份D. 用来加密数据的答案:B。
解析:视图是一种虚拟表,它基于SQL语句的结果集,是从一个或多个表中导出的表,并不是存储数据的物理结构,也不是数据库备份或者加密数据的工具。
3. 以下哪种数据类型在数据库中适合存储较长的文本内容?A. INTB. VARCHARC. DATED. BOOLEAN答案:B。
解析:VARCHAR数据类型用于存储可变长度的字符串,适合存储较长的文本内容。
INT用于存储整数,DATE用于存储日期,BOOLEAN用于存储布尔值(真或假)。
4. 要在数据库表中添加一列,应该使用以下哪个语句?A. ALTER TABLE ADD COLUMNB. CREATE COLUMNC. INSERT COLUMND. UPDATE COLUMN答案:A。
解析:在SQL中,要在已存在的表中添加一列,使用ALTER TABLE语句,后面跟上ADD COLUMN关键字及要添加的列的定义。
CREATE用于创建表等对象,INSERT用于插入数据,UPDATE用于更新数据而不是添加列。
5. 数据库中的主键有什么作用?A. 唯一标识表中的每一行B. 用来加密数据C. 确定数据的排序顺序D. 没有实际作用答案:A。
解析:主键是表中的一个列或者列的组合,它的值能够唯一地标识表中的每一行数据。
它不是用来加密数据的,也不是确定排序顺序的,而是具有非常重要的标识行数据的作用。
6. 以下关于数据库索引的说法正确的是?A. 索引越多越好B. 索引会降低数据库的查询速度C. 索引是一种特殊的数据结构,有助于快速查询数据D. 索引只能建立在主键上答案:C。
第4章SELECT语句练习SELECT语句练习1.数据库SJK中KC表(课程)含有数值型的KSS字段(课时数),按如下要求设计该查询:基于KC表查询所有不带删除标记录且课时数超过85或课时数少于60(不包含85和60)的课程。
要求输出字段为:KCDH、KCM、KSS、BXK、XF,查询结果按KSS降序排序。
2. 已知SJK数据库中含有一课程名的学生成绩视图“课程成绩”,“课程成绩”中包含有XH、KCM、CJ、学分等字段。
按如下要求设计该查询:基于XS表和“课程成绩”视图查询各学生的姓名、课程名和成绩。
要求在表和视图之间建立左联接,输出字段为:XS.XH,XS.XM, 课程成绩.KCM, 课程成绩.CJ, 课程成绩.学分。
查询结果按XH升序排列。
3.SJK数据库中的ZY表(专业)和XS表(学生)存在一对多关系,按如下要求设计该查询:基于ZY表和XS表查询各专业的男女学生人数。
要求输出字段为:ZYDH、ZYMC、XB,人数。
查询结果按ZYDH和XB的降序排序。
4.在SJK的JS表中含有XIMING(系名)字段,按如下要求设计该查询:基于JS表(教师)查询所有的系名。
要求输出字段为:XIMING,查询结果中不允许出现相同的系名,查询结果按系名的升序排序,查询去向为临时表XIMING。
5. 已知SJK数据库包含JS表(教师)和STA视图(包含GH、课程名、KSS字段),STA视图中KSS字段的含义为“课时数”,按如下要求设计该查询:基于JS表(教师)和STA视图查询教师的姓名和所担任课程的课程名。
要求输出字段为:GH、XM、KCM、KSS。
查询结果按GH的升序和KCM的降序排序。
6. 基于XS表(学生)查询所有籍贯(JG)为非江苏籍的学生。
要求输出字段为:JG,XH,XM,XB,XDH,查询结果按籍贯的升序排序。
7. SJK数据库中有一VZYCJ视图,该视图显示了学生的各科成绩以及学生所属专业名称。
基于KC表和VZYCJ视图按如下要求设计该查询:查询各课程各专业的平均成绩。
准备工作:附加数据库studentselect语句的练习1.纵向查询(即筛选记录)(1) 显示t_student表中前5条记录。
select top 5 *from dbo.t_student(2) 显示t_student表中前10%条记录。
select top 10 percent*from dbo.t_student(3) 显示t_student表中政治面目为党员的男同学。
select*from dbo.t_student where polity='党员'and sex='男'(4) 显示t_student表中的女同学和政治面目为党员的男同学。
select*from dbo.t_studentwhere sex='女'or polity='党员'and sex='男'(5) 显示t_student表中姓名以”辉”结束的同学。
select*from dbo.t_student where S_name like'%%辉'(6) 显示t_student表中共有哪些类型的政治面目?(即筛选出不重复的“polity”)select distinct polity from dbo.t_student2.横向查询(即筛选字段)(1) 显示t_student表中全部记录的学号和姓名两个字段内容。
select S_number,S_name from dbo.t_student(2) 显示t_student表中全部记录的姓名字段内容。
Select S_name from dbo.t_student(3) 显示t_student表中全部记录姓名和年龄两个字段内容。
select S_name,year(getdate())-year(BIRTHDAY)as年龄from dbo.t_student3.横纵向混合查询(1) 显示t_student表中前5条记录的学号和姓名两个字段内容。
第⼋节:MySQL之Select指令详解和相关练习1. 简介 就查询⽽⾔,可以简单的分为:单表查询和多表查询。
单表查询包括:简单查询、过滤查询、结果排序、分页查询、聚集函数。
多表查询包括:笛卡尔积、外键约束、内连接查询、外链接查询、⾃连接查询。
2. 数据准备(1). ⽤到的表: 产品表(product)。
包括:主键id、产品名称(productName)、分类编号(dir_id)、零售价(salePrice)、供应商(supplier)、品牌(brand)、折扣(cutoff)、成本价(costPrice)。
产品分类编号表( productdir)。
包括:主键id、编号名称( dirName)、⽗id( parent_id) 。
产品库存表( productstock)。
包括:主键id、产品id( product_id )、库存数量( storeNum)、上次进库时间(lastIncomeDate)、上次出库时间( lastOutcomeDate)、预警数量(warningNum)。
(2). 对应的字段类型,如下图:(3). ⽤到的SQL语句:product表CREATE TABLE `product` (`id` bigint(11) NOT NULL AUTO_INCREMENT,`productName` varchar(50) DEFAULT NULL,`dir_id` bigint(11) DEFAULT NULL,`salePrice` double(10,2) DEFAULT NULL,`supplier` varchar(50) DEFAULT NULL,`brand` varchar(50) DEFAULT NULL,`cutoff` double(2,2) DEFAULT NULL,`costPrice` double(10,2) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=21DEFAULT CHARSET=utf8;-- ------------------------------ Records of product-- ----------------------------INSERT INTO `product` VALUES ('1', '罗技M90', '3', '90.00', '罗技', '罗技', '0.50', '35.00');INSERT INTO `product` VALUES ('2', '罗技M100', '3', '49.00', '罗技', '罗技', '0.90', '33.00');INSERT INTO `product` VALUES ('3', '罗技M115', '3', '99.00', '罗技', '罗技', '0.60', '38.00');INSERT INTO `product` VALUES ('4', '罗技M125', '3', '80.00', '罗技', '罗技', '0.90', '39.00');INSERT INTO `product` VALUES ('5', '罗技⽊星轨迹球', '3', '182.00', '罗技', '罗技', '0.80', '80.00');INSERT INTO `product` VALUES ('6', '罗技⽕星轨迹球', '3', '349.00', '罗技', '罗技', '0.87', '290.00');INSERT INTO `product` VALUES ('7', '罗技G9X', '3', '680.00', '罗技', '罗技', '0.70', '470.00');INSERT INTO `product` VALUES ('8', '罗技M215', '2', '89.00', '罗技', '罗技', '0.79', '30.00');INSERT INTO `product` VALUES ('9', '罗技M305', '2', '119.00', '罗技', '罗技', '0.82', '48.00');INSERT INTO `product` VALUES ('10', '罗技M310', '2', '135.00', '罗技', '罗技', '0.92', '69.80');INSERT INTO `product` VALUES ('11', '罗技M505', '2', '148.00', '罗技', '罗技', '0.92', '72.00');INSERT INTO `product` VALUES ('12', '罗技M555', '2', '275.00', '罗技', '罗技', '0.88', '140.00');INSERT INTO `product` VALUES ('13', '罗技M905', '2', '458.00', '罗技', '罗技', '0.88', '270.00');INSERT INTO `product` VALUES ('14', '罗技MX1100', '2', '551.00', '罗技', '罗技', '0.76', '300.00');INSERT INTO `product` VALUES ('15', '罗技M950', '2', '678.00', '罗技', '罗技', '0.78', '320.00');INSERT INTO `product` VALUES ('16', '罗技MX Air', '2', '1299.00', '罗技', '罗技', '0.72', '400.00');INSERT INTO `product` VALUES ('17', '罗技G1', '4', '155.00', '罗技', '罗技', '0.80', '49.00');INSERT INTO `product` VALUES ('18', '罗技G3', '4', '229.00', '罗技', '罗技', '0.77', '96.00');INSERT INTO `product` VALUES ('19', '罗技G500', '4', '399.00', '罗技', '罗技', '0.88', '130.00');INSERT INTO `product` VALUES ('20', '罗技G700', '4', '699.00', '罗技', '罗技', '0.79', '278.00');View Codeproductdir表CREATE TABLE `productdir` (`id` bigint(11) NOT NULL auto_increment,`dirName` varchar(30) default NULL,`parent_id` bigint(11) default NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- ------------------------------ Records-- ----------------------------INSERT INTO `productdir` VALUES ('1', '⿏标', null);INSERT INTO `productdir` VALUES ('2', '⽆线⿏标', '1');INSERT INTO `productdir` VALUES ('3', '有线⿏标', '1');INSERT INTO `productdir` VALUES ('4', '游戏⿏标', '1');View Codeproductstock表CREATE TABLE `productstock` (`id` bigint(11) NOT NULL auto_increment,`product_id` bigint(11) default NULL,`storeNum` int(10) default NULL,`lastIncomeDate` datetime default NULL,`lastOutcomeDate` datetime default NULL,`warningNum` int(10) default NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- ------------------------------ Records-- ----------------------------INSERT INTO `productstock` VALUES ('1', '1', '182', '2015-03-12 20:33:00', '2015-03-12 20:33:04', '20'); INSERT INTO `productstock` VALUES ('2', '2', '27', '2015-03-02 20:33:28', '2015-03-09 20:33:40', '20'); INSERT INTO `productstock` VALUES ('3', '3', '89', '2015-02-28 20:34:13', '2015-03-12 20:34:19', '20'); INSERT INTO `productstock` VALUES ('4', '5', '19', '2015-03-01 20:34:43', '2015-03-12 20:34:48', '20'); INSERT INTO `productstock` VALUES ('5', '6', '3', '2015-02-01 20:35:12', '2015-03-02 20:35:16', '5'); INSERT INTO `productstock` VALUES ('6', '7', '2', '2015-02-02 20:35:59', '2015-02-27 20:36:05', '3'); INSERT INTO `productstock` VALUES ('7', '8', '120', '2015-03-12 20:36:31', '2015-03-12 20:36:33', '20'); INSERT INTO `productstock` VALUES ('8', '9', '58', '2015-03-02 20:36:50', '2015-03-12 20:36:53', '20'); INSERT INTO `productstock` VALUES ('9', '11', '28', '2015-03-02 20:37:12', '2015-03-12 20:37:15', '20'); INSERT INTO `productstock` VALUES ('10', '12', '8', '2015-03-02 20:37:35', '2015-03-09 20:37:38', '5'); INSERT INTO `productstock` VALUES ('11', '13', '3', '2015-03-02 20:37:58', '2015-03-12 20:38:01', '5'); INSERT INTO `productstock` VALUES ('12', '14', '6', '2015-03-02 20:38:20', '2015-03-07 20:38:23', '5'); INSERT INTO `productstock` VALUES ('13', '15', '2', '2015-02-02 20:38:38', '2015-02-24 20:38:44', '5'); INSERT INTO `productstock` VALUES ('14', '16', '3', '2015-02-02 20:39:05', '2015-02-06 20:39:09', '3'); INSERT INTO `productstock` VALUES ('15', '17', '49', '2015-03-02 20:39:36', '2015-03-12 20:39:40', '20'); INSERT INTO `productstock` VALUES ('16', '18', '14', '2015-03-02 20:39:57', '2015-03-09 20:40:01', '10'); INSERT INTO `productstock` VALUES ('17', '20', '7', '2015-03-02 20:40:22', '2015-03-03 20:40:25', '5'); View Code3. 经典SQL的执⾏顺序1. 简单查询a. 消除结果中的重复数据,⽤ DISTINCT 关键字。
MYSQL数据库练习题操作(select)⼤全1、创建表表⼀:student学⽣use)1、create table student(sno varchar(20) primary key not null comment'学号(主码)',sname varchar(20) not null comment'学⽣姓名',ssex varchar(20) not null comment'学⽣性别',sbirthday datetime comment'学⽣出⽣年⽉',class varchar(20) comment'学⽣所在班级');表(⼆)Course(课程表)create table course(cno varchar(20) primary key not null comment'课程号(主码)',cname varchar(20) not null comment'课程名称',tno varchar(20) not null comment'教⼯编号');表(三)Score(成绩表)create table score(id int primary key auto_increment comment'主键⾃增',sno varchar(20) not null comment'学号',cno varchar(20) not null comment'课程号',degree Decimal(4,1) comment'成绩');表四 teacher(教师表)create table teacher(tno varchar(20) primary key not null comment'教⼯编号(主码)',tname varchar(20) not null comment'教⼯姓名',tsex varchar(20) not null comment'教⼯性别',tbirthday datetime comment'教⼯出⽣年⽉',prof varchar(20) comment'职称',depart varchar(20) not null comment'教⼯所在部门');2、在表中添加数据学⽣表数据的插⼊:insert into student values('108','曾华','男','1977-09-01','95033'),('105','匡明','男','1977-09-01','95031'),('107','王丽','⼥','1977-09-01','95033'),('101','李军','男','1977-09-01','95033'),('109','王芳','⼥','1977-09-01','95031'),('103','陆君','男','1977-09-01','95031');课程表数据的插⼊:insert into course values('3-105','计算机导论','825'),('3-245','操作系统','804'),('6-166','数字电路','856'),('9-888','⾼等数学','831');成绩表数据的插⼊:select cno from score group by cno; #找出这个表中所有的班级insert into score(sno,cno,degree) values('103','3-245','86'),('105','3-245','75'),('109','3-245','68'),('103','3-105','92'),('105','3-105','88'),('109','3-105','76'),('101','3-105','64'),('107','3-105','91'),('108','3-105','78'),('101','6-166','85'),('107','6-166','79'),('108','6-166','81');教师表数据的插⼊:insert into teacher values('804','李诚','男','1958-12-02','副教授','计算机系'),('856','张旭','男','1969-03-12','讲师','电⼦⼯程系'),('825','王萍','⼥','1972-05-05','助教','计算机系'),('831','刘冰','⼥','1977-08-14','助教','电⼦⼯程系');3、SELECT查询select [all | distinct] 字段或表达式列表 [from⼦句] [where⼦句] [group by⼦句] [having⼦句] [order by⼦句] [limit⼦句];1、查询Student表中的所有记录的Sname、Ssex和Class列。
/* 1.查询全部课程的详细信息。
T-SQL语句:*/USE studentGOSELECT *FROM lesson_info/* 3.查询学生的学号、姓名、考试成绩的语句:*/SELECT stud_id,name,markFROM stud_info/* 4.将男生的学号、姓名、性别的查询结果作为新建临时表的语句:*/SELECT stud_id,name,genderINTO #new_studentFROM stud_infoDROP TABLE #new_student/* 5.查询性别为“女”的学生的姓名、电话、地址和邮编的语句:*/SELECT name,telcode,address,zipcodeFROM stud_infoWHERE gender='女'/* 6.列出姓“郑”、姓名为两个汉字的学生学号、姓名,性别,入学成绩的语句:*/ SELECT stud_id,name,gender,markFROM stud_infoWHERE name LIKE '郑__'/* 7.查询教师职称为“助教”,或为“讲师”,或为“副教授”的教师编号、姓名、职称及工资的语*/SELECT teacher_id,name,tech_title,salaryFROM teacher_infoWHERE tech_title IN ('讲师','助教','副教授')SELECT *FROM stud_infoWHERE mark IS NULLSELECT stud_id,name,年龄=DA TEDIFF(YEAR,birthday,GETDA TE())FROM stud_infoWHERE gender='女'SELECT *FROM stud_gradeSELECT *FROM lesson_infoSELECT *FROM stud_infoSELECT *FROM teacher_info/*8.求“Java程序设计”课程平均成绩的语句:*/SELECT A VG(grade) AS 平均成绩FROM stud_gradeWHERE course_id='0401010102'/*9. 查询所有男生学号、姓名和年龄,并按出生日期进行排列(升序)的语句:*/SELECT 学号=stud_id,姓名=name,年龄=DATEDIFF(YEAR,birthday,GETDATE()) FROM stud_infoWHERE gender='男'ORDER BY birthday ASC/* 11在教师信息表中,按职称分组统计“讲师”的平均年龄的语句:*/SELECT 讲师的平均年龄=A VG(age),职称=tech_titleFROM teacher_infoWHERE tech_title=N'讲师'GROUP BY tech_titleORDER BY tech_title ASC/* 10.统计计算机工程系各个专业的学生的平均入学成绩的语句:*/SELECT 入学平均成绩=A VG(mark),substring(stud_id,5,2) AS 专业代号FROM stud_infoWHERE substring(stud_id,3,2)='01'GROUP BY substring(stud_id,5,2)/* 12.对teacher_info中职称为“讲师”的工资,生成汇总行和明细行的语句:*/ SELECT *FROM teacher_infoWHERE tech_title='讲师'ORDER BY salaryCOMPUTE A VG(salary) BY salary/*1、显示所有职工的基本信息。
查询xscj表中的学号,姓名,计算机三项信息,结果按计算机成绩的降序排列。
select 学号,姓名,计算机from xscj order by 计算机desc统计xsda表中男女生的人数select 性别,count(*) as 人数from xsda group by 性别select * from 图书where year(出版日期) >=2018计算xsda表中男女生的平均身高。
select 性别,avg(身高) as 平均身高from xsdagroup by 性别查询zgda表中的工号,姓名,性别,职称4项信息,显示结果时首先按照女性在前的顺序,如果性别相同则按照职称的升序排列。
select 工号,姓名,性别,职称from zgdaorder by 性别desc ,职称本题目要求编写SQL语句,查询图书表中条形码左边开始三个字符是“TP3”的图书的全部信息要求:不能用like运算符构成条件表达式。
select *from 图书where 条形码like "TP3%"本题目要求编写SQL语句,查询图书表中书名为“C语言程序设计”和“VB程序设计”的两本书的全部信息要求:使用in 运算符构成条件表达式提示:请使用SELECT语句作答。
select *from 图书where 书名in ("C语言程序设计","VB程序设计")题目要求编写SQL语句,查询图书表中未录入出版社信息的图书,要求结果中包含条形码,书名,出版社3列提示:请使用SELECT语句作答,“未录入”表示该项为空。
select 条形码,书名,出版社from 图书where 出版社is null本题目要求编写SQL语句,查询图书表中不是科学出版社出版的图书的全部信息提示:请使用SELECT语句作答。
SELECT *FROM 图书WHERE 出版社NOT IN ("科学出版社")本题目要求编写SQL语句,查询图书表中各出版社图书的数目,结果按图书数目降序排序提示:请使用SELECT语句作答。
select 出版社,count(*) as 图书数目from 图书group by 出版社order by 图书数目desc本题目要求编写SQL语句,查询图书表中全部图书的最高售价、最低售价和平均售价。
提示:请使用SELECT语句作答。
select max(售价) as 最高售价, min(售价) as 最低售价, avg(售价) as 平均售价from 图书本题目要求编写SQL语句,查询图书表中各出版社图书的数目,要求过滤掉数目为1的数据。
提示:请使用SELECT语句作答。
select 出版社,count(*) as 图书数目from 图书group by 出版社having(图书数目)>1本题目要求编写SQL语句,查询图书表中2018年出版的图书的数目提示:请使用year函数作答。
select count(*) as 2018年出版的图书数目from 图书where year(出版日期)=2018本题目要求编写SQL语句,查询图书的条形码,书名,出版社和出版日期,要求结果按出版社升序排列,出版社相同的数据按出版日期降序排列select 条形码,书名,出版社,出版日期from 图书order by 出版社,出版日期desc本题目要求编写SQL语句,查询图书表中有哪些出版社,要求结果没有重复值提示:请使用distinctselect distinct 出版社from 图书本题目要求编写SQL语句,通过图书表和借阅表,查询图书的借阅情况,要求结果中包括以下几列:账号,条形码,书名和借书日期提示:请使用SELECT多表查询的方法select 账号,图书.条形码,书名,借书日期from 图书inner join 借阅on 图书.条形码=借阅.条形码通过图书表,读者表和借阅表,查询读者的借阅情况,要求结果中包含以下字段:账号,姓名,条形码,书名,借书日期和还书日期。
select 借阅.账号,姓名,图书.条形码,书名,借书日期,还书日期from 图书inner join(借阅inner join 读者on 借阅.账号=读者.账号) on 图书.条形码=借阅.条形码通过两个表,查询编号为“D002”的读者借阅图书的信息,要求结果中包括以下字段:账号,姓名,等级,条形码,借书日期。
select 借阅.账号,姓名,等级,条形码,借书日期from 借阅inner join 读者on 借阅.账号=读者.账号where 借阅.账号="D002"在读者表中查询全部读者信息,要求女性在前男性在后,同为女(男)性读者的按账号升序排列SELECT *FROM 读者order by 性别desc,账号在读者表中,查询男女性读者各多少人select 性别,count(*) as 人数from 读者group by 性别在读者表中查询余额最高的读者的全部信息。
提示:请使用嵌套查询作答,不能用topselect *from 读者where 余额>=all(select max(余额) from 读者)在读者表中查询不同等级各自的人数,结果按人数降序排列。
select 等级,count(*) as 人数from 读者group by 等级order by count(*) desc查询姓王的读者的账号、姓名和性别,要求使用left函数select 账号,姓名,性别from 读者where left(姓名,1)="王"查询图书表中售价最高的图书的全部信息。
提示:这是一个嵌套查询。
select *from 图书where 售价>=(select max(售价) from 图书)查询读者表中有哪些等级,结果中不能出现重复值。
提示:使用distinctselect distinct 等级from 读者在读者表中查询所有等级为“白银”的读者的余额之和。
select sum(余额) as 白银读者余额之和from 读者where 等级="白银"在读者表中查询没有录入出生日期的读者的全部数据。
select *from 读者where 出生日期is null通过读者和借阅表,查询读者信息,包括以下字段:账号,姓名,性别,条形码,借书日期和还书日期select 读者.账号,姓名,性别,条形码,借书日期,还书日期from 读者inner join 借阅on 读者.账号=借阅.账号根据读者表和借阅表,查询没有借书记录的读者的账号和姓名。
提示:使用“带有NOT IN的嵌套查询”select 账号,姓名from 读者where 账号not in (select 账号from 借阅where 借阅.账号=读者.账号)通过图书表和借阅表,查询哪本书没有被借阅过,显示它的条形码,书名和作者信息提示:使用“带IN的嵌套查询”select 条形码,书名,作者from 图书where 条形码not in (select 条形码from 借阅where 借阅.条形码=图书.条形码)本题目要求编写SQL语句,在图书表中插入一条记录,内容是:条形码“TP211.3”,书名“狼图腾”,作者“姜戎”,售价44.5元提示:请使用INSERT语句作答。
insert into 图书(条形码,书名,作者,售价) values ("TP211.3","狼图腾","姜戎",44.5)本题目要求编写SQL语句,将图书表中科学出版社出版的图书价格上涨5%。
update 图书set 售价=售价*1.05 where 出版社="科学出版社"向订单表中插入一条新记录,订单编号是10331,顾客编号是J101,员工编号是023。
insert into 订单(订单编号,顾客编号,员工编号) values("10331","J101","023")将订单表中2015年以前(包括2015年)的订单数据删除。
要求:使用year函数。
delete from 订单where year(订单日期)<=2015将顾客表中顾客编号最后两位是“10”和“11”的记录删除delete from 顾客where right(顾客编号,2)="10" or right(顾客编号,2)="11"将编号为“10330”的订单的运费下调10%update 订单set 运费=运费*0.9 where 订单编号="10330"在订单表中查询各位员工承办的订单数目。
提示:按员工编号分组。
select 员工编号,count(*) as 订单数from 订单group by 员工编号在订单表中查询各位员工承办的订单数目,要求只显示大于1的那些数据select 员工编号,count(*) as 订单数from 订单group by 员工编号having(订单数)>1在员工表中查询1990年以后(包括1990年)出生的员工的全部信息。
要求:必须使用year函数。
select *from 员工where year(出生日期)>=1990在员工表中查询全体员工的编号,姓名和年龄。
提示:年龄需要计算得到,由于系统语法不同,取当前系统日期的函数不要用date( ),请使用curdate( )。
select 员工编号,姓名,year(curdate())-year(出生日期) as 年龄from 员工在顾客表中查询公司城市在“济南”的顾客数目select count(*) as 济南顾客数from 顾客where 城市="济南"在员工表中查询男女职工的平均年龄。
提示:年龄需要计算求出。
由于系统语法的不同,此处不能使用year(date()),请使用year(curdate())select 性别,avg(year(curdate())-year(出生日期)) as 平均年龄from 员工group by 性别在员工表中查询姓陈的男职工的全部信息。
要求使用字符处理函数作答。
select *from 员工where left(姓名,1)="陈" and 性别="男"在顾客表中查询如下信息,城市和电话这两项有一项为空或者都为空的,就显示这一条记录的全部内容select *from 顾客where 城市is null or 电话is null在订单表中查询不是023号员工处理的订单的信息,要求包括订单编号,顾客编号,员工编号和订单日期select 订单编号,顾客编号,员工编号,订单日期from 订单where 员工编号not in ("023")在顾客表中查询各个城市的顾客数目。