SQL语句练习题(包含有多表查询)-答案

合集下载

SQL查询语句练习及结果

SQL查询语句练习及结果

1 单表查询1.1 查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值查询语句:select 订单ID客户ID雇员ID订购日期from 订单WHERE 订购日期BETWEEN '1996-7-1' AND '1996-7-15';1.2 查询供应商的ID、公司名称、地区、城市和电话字段的值。

条件是“地区等于华北”并且“联系人头衔等于销售代表”。

查询语句:select 供应商ID公司名称地区城市电话from `供应商`WHERE 地区 = '华北'AND 联系人职务 = '销售代表';1.3 查询供应商的ID、公司名称、地区、城市和电话字段的值。

其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津查询语句:select 供应商ID公司名称地区城市电话from `供应商`WHERE 地区 in('华东''华南') or 城市 = '天津';1.4 查询位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值查询语句:select 供应商ID公司名称地区城市电话 from `供应商` WHERE 地区 in('华东''华南');2 多表查询2.1查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单ID”的降序排列查询语句:select 订购日期订单ID公司名称姓氏名字from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 雇员 c on a.雇员ID = c.雇员IDWHERE 订购日期 BETWEEN '1996-7-1' AND '1996-7-15'order by 姓氏名字订单ID2.2 查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称查询语句:select 订购日期订单ID公司名称姓氏名字from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 雇员 c on a.雇员ID = c.雇员IDWHERE 订购日期 BETWEEN '1996-7-1' AND '1996-7-15'order by 姓氏名字订单ID2.3 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣查询语句:select a.订单IDc.产品名称b.单价b.数量b.折扣from 订单 aleft join 订单明细 b on a.订单ID = b.订单IDleft join 产品 c on c.产品ID = b.产品IDwhere a.订单ID in('10248''10254')2.4 查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售金额销售金额=单价*数量*(1-折扣)查询语句:select a.订单IDc.产品名称 round(b.单价*b.数量*(1-b.折扣)2) as 销售金额from 订单 aleft join 订单明细 b on a.订单ID = b.订单IDleft join 产品 c on c.产品ID = b.产品IDwhere a.订单ID in('10248''10254')3 综合查询3.1 查询所有运货商的公司名称和电话查询语句:select 公司名称电话 from 运货商3.2 查询所有客户的公司名称、电话、传真、地址、联系人姓名和联系人头衔查询语句:select 公司名称电话传真地址联系人姓名联系人职务from 客户3.3 查询单价介于10至30元的所有产品的产品ID、产品名称和库存量查询语句:select 产品ID产品名称库存量from 产品where 单价 BETWEEN 10 and 303.4 查询单价大于20元的所有产品的产品名称、单价以及供应商的公司名称、电话查询语句:select a.产品名称a.单价b.公司名称b.电话from 产品 aleft join 供应商 b on a.供应商ID = b.供应商IDwhere 单价 > 203.5 查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量查询语句:select a.订单IDd.产品名称c.数量from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 订单明细 c on a.订单ID = c.订单IDleft join 产品 d on c.产品ID =d.产品IDwhere b.城市 in('上海''北京')3.6 查询华北客户的每份订单的订单ID、产品名称和销售金额查询语句:select a.订单IDd.产品名称 round(c.单价*c.数量*(1-c.折扣)2) as 销售金额from 订单 aleft join 客户 b on a.客户ID = b.客户IDleft join 订单明细 c on a.订单ID = c.订单IDleft join 产品 d on c.产品ID =d.产品IDwhere b.地区 = '华北'3.7 按运货商公司名称,统计1997年由各个运货商承运的订单的总数量查询语句:select b.公司名称count(a.订单ID) as 订单总数量from 订单 aleft join 运货商 b on a.运货商 = b.运货商IDwhere year(a.订购日期) = 1997group by b. 公司名称3.8 统计1997年上半年的每份订单上所订购的产品的总数量查询语句:select b.公司名称sum(c.数量) as 产品总数量from 订单 aleft join 运货商 b on a.运货商 = b.运货商IDleft join 订单明细 c on a.订单ID = c.订单IDwhere 订购日期 between '1997-01-01' and '1997-06-30'group by b.公司名称3.9 统计各类产品的平均价格查询语句:select 类别名称round(sum(a.单价*a.数量*(1-a.折扣))/sum(a.数量)2) as 平均价格from 订单明细 aleft join 产品 b on a.产品ID = b.产品IDleft join 类别 c on b.类别ID = c.类别IDgroup by c.类别名称3.10 统计各地区客户的总数量查询语句:select 地区count(客户ID) as 客户总数from 客户group by 地区。

SQL语句练习及答案

SQL语句练习及答案

sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。

select sname from student where sname like “欧阳__‟;2.查询名字中第2个字为"阳"字的学生的姓名和学号。

select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。

select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。

select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。

select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

查询缺少成绩的学生的学号和相应的课程号。

select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。

select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。

select sname from student where sdept= 'cs' and sage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

SQL语句练习及答案

SQL语句练习及答案

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class)Teacher (no, name, sex, birthday, prof, depart)Course (cno, cname, tno)Score (no, cno, degree)其中表中包含如下数据:Course表:Score表:Student表:Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。

命令:create table Student(no nvarchar(5),name nvarchar(5),sex nvarchar(1),birthday datetime,class nvarchar(5))DML2.给出相应的INSERT语句来完成题中给出数据的插入。

命令:单表查询3.以class降序输出student的所有记录(student表全部属性)命令:select*from Student order by class desc4.列出教师所在的单位depart(不重复)。

命令:select distinct depart from teacher5.列出student表中所有记录的name、sex和class列命令:select name,sex,class from student6.输出student中不姓王的同学的姓名。

命令:select name from Student where name not like'王%'7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)命令:select*from Score where degree=85 or degree=86 or degree=88 or degree between60 and 808.输出班级为95001或性别为‘女’的同学(student表全部属性)命令:select*from Student where class='95001'or sex='女'9.以cno升序、degree降序输出score的所有记录。

sql查询语句学习测试答案

sql查询语句学习测试答案

sql查询语句学习测试答案第⼀部分SQL 查询语句的学习单表查询1、--查询订购⽇期在1996年7⽉1⽇⾄1996年7⽉15⽇之间的订单的订购⽇期、订单ID 、客户ID 和雇员ID 等字段的值use eee SELECT订购⽇期,订单ID ,客户ID ,雇员ID FROM 订单WHERE 订购⽇期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'2、--查询“Northwind”⽰例数据库中供应商的ID 、公司名称、地区、城市和电话字段的值。

条件是“地区等于华北”并且“联系⼈头衔等于销售代表”。

use eeeSELECT 供应商ID ,公司名称,地区,城市,电话FROM 供应商WHERE 地区='华北'AND 联系⼈职务='销售代表' 3、--查询“Northwind”⽰例数据库中供应商的ID 、公司名称、地区、城市和电话字段的值。

其中的⼀些供应商位于华东或华南地区,另外⼀些供应商所在的城市是天津use eeeSELECT 供应商ID ,公司名称,地区,城市,电话FROM 供应商WHERE 地区IN('华东', '华南') OR 城市='天津'可保障各类管路习题到位。

在管路敷设过程中,要加强看护关于管路⾼调控试验;对设备进⾏调整使其在正常⼯况下与过度⼯作下都可以正常需要在最⼤限度内来确保机组⾼中资料试卷安全,并且尽可能地缩⼩故4、--查询“Northwind”⽰例数据库中位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区IN('华东','华南'),要加强看护关于管路⾼中资料试卷连接管⼝处理⾼中资料试卷弯扁度与过度⼯作下都可以正常⼯作;对于继电保护进⾏整核对定值,审核与安全,并且尽可能地缩⼩故障⾼中资料试卷破坏范围,或者对某些异常多表查询5、--查询订购⽇期在1996年7⽉1⽇⾄1996年7⽉15⽇之间的订单的订购⽇期、订单ID 、相应订单的客户公司名称、负责订单的雇员的姓⽒和名字等字段的值,并将查询结果按雇员的“姓⽒”和“名字”字段的升序排列,“姓⽒”和“名字”值相同的记录按“订单 ID”的降序排列use eee SELECT 订购⽇期,订单ID ,公司名称,姓⽒,名字FROM 订单,雇员,客户WHERE 订购⽇期BETWEEN '1996-7-1 00:00:00' AND '1996-7-15 23:59:59'AND 订单.雇员ID = 雇员.雇员IDAND 订单.客户ID = 客户.客户ID ORDER BY 姓⽒,名字ASC ,订单ID DESC 通过管线敷设技术不仅可以解决吊顶层配置不规范⾼中资料试卷问题,⽽且可保障各类管路习题到位。

数据库中SQL查询语句习题含答案

数据库中SQL查询语句习题含答案

数据库中SQL查询语句习题含答案查询问题:设教学数据库Education 有三个关系:学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME )(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号;(5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM SWHERE Sdept =’CS ’;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名本查询涉及到学号、姓名和课程名三个属性,分别存放在S 和C 表中,但S 和C 表没有直接联系,必须通过SC 表建立它们二者的联系。

C → SC → S 基本思路:(1)首先在C 表中找出“DS ”课程的课程号Cno ;(2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ;(3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。

SELECT Sno ,Sname FROM SWHERE Sno IN (SELECT Sno FROM SCWHERE Cno IN (SELECT Cno FROM CWHERE Cname=‘DS ’));(4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SCWHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号; SELECT SnoFROM SC X ,SC YWHERE X.Sno=Y.Sno AND/doc/d33e82944b7302768e9951e79b89680202d86b33.html o=‘C2’ AND /doc/d33e82944b7302768e9951e79b89680202d86b33.html o=‘C4’;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;在表S 中找学生,要求这个学生学了全部课程。

数据库的sql语句练习题

数据库的sql语句练习题

数据库的sql语句练习题1. 练习题一:查询语句基础在学生表(students)中,包含以下字段:学号(id)、姓名(name)、年龄(age)、性别(gender)、班级(class)、成绩(score)。

请编写SQL语句实现以下需求:a) 查询学生表中所有学生的信息。

b) 查询学生表中的男性学生信息。

c) 查询学生表中年龄为18岁的学生信息。

d) 查询学生表中成绩大于等于90分的学生信息。

e) 查询学生表中姓“张”的学生信息。

2. 练习题二:修改语句练习在学生表(students)中,某个学生的学号为1001,需要将该学生的年龄修改为20岁,请编写相应的SQL语句实现此操作。

3. 练习题三:插入语句练习在学生表(students)中添加一条新纪录,学号为1002,姓名为李明,年龄为19岁,性别为男,班级为三年级,成绩为87分,请编写相应的SQL语句实现此操作。

4. 练习题四:删除语句练习在学生表(students)中,某个学生的学号为1003,需要将该学生的信息从表中删除,请编写相应的SQL语句实现此操作。

5. 练习题五:使用多表查询存在两张表,学生表(students)和课程表(courses)。

学生表包含字段:学号(id)、姓名(name)、班级(class);课程表包含字段:课程编号(course_id)、课程名称(course_name)。

已知约德尔学院中,学号为1001的学生参加了编号为1的课程,请编写SQL语句查询学号为1001的学生所选的课程及课程名称。

6. 练习题六:排序查询练习在学生表(students)中,查询所有学生的信息,并按照成绩从高到低进行排序。

以上是数据库的SQL语句练习题,请按照上述要求编写相应的SQL语句进行解答。

祝你练习愉快,取得好成绩!。

数据库练习之SELECT

数据库练习之SELECT

/* 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、显示所有职工的基本信息。

SQL语言练习题和答案

SQL语言练习题和答案

第三章SQL语言一、选择题1. SQL语言是(B )的语言,容易学习。

A.过程化B. 非过程化C.格式化D. 导航式2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。

其中最重要的,也是使用最频繁的语句是(A)。

A. SELECTB. INSERTC. UPDATED. DELETE3. 在视图上不能完成的操作是()。

A. 更新视图B. 查询C. 在视图上定义新的表D. 在视图上定义新的视图4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。

A. 数据查询B. 数据操纵C. 数据定义D. 数据控制5. SQL语言中,删除一个视图的命令是()。

6. 在SQL语言中的视图VIEW是数据库的()。

A. 外模式B. 模式C. 内模式D. 存储模式7. 下列的SQL语句中,()不是数据定义语句。

A. CREATE TABLEB. DROP VIEWC. CREATE VIEWD. GRANT8. 若要撤销数据库中已经存在的表S,可用()。

A. DELETE TABLE SB. DELETE SC. DROP TABLE SD. DROP S9. 若要在基本表S中增加一列CN(课程名),可用()。

TABLE S(CN CHAR(8))TABLE S ALTER(CN CHAR(8))TABLE S ADD(CN CHAR(8))TABLE S (ADD CN CHAR(8))10. 学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。

要在表S中删除一个属性“年龄”,可选用的SQL语句是()。

A. DELETE Age from SB. ALTER TABLE S DROP AgeC. UPDATE S AgeD. ALTER TABLE S ‘Age’11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。

【sql】牛客网练习题(共61题)

【sql】牛客网练习题(共61题)

【sql】⽜客⽹练习题(共61题)【1】查找最晚⼊职员⼯的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT NULL,`hire_date` date NOT NULL,PRIMARY KEY (`emp_no`));题解:1select*from employees order by hire_date desc limit 1;【2】查找⼊职员⼯时间排名倒数第三的员⼯所有信息(表同问题1)题解:limit m, n 表⽰从第 m 条数据(0-based)开始取 n 条数据。

(或者也可以理解成 limit m, n 表⽰从第 m + 1 条数据开始,取 n 条数据)1select*from employees order by hire_date desc limit 2, 1;【3】查找当前薪⽔详情以及部门编号dept_no查找各个部门当前(to_date='9999-01-01')领导当前薪⽔详情以及其对应部门编号dept_no 。

CREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`from_date`));题解:两张表 join ⼀下,然后选择 salaries 表作为主表join dept表。

多表联合查询与子查询练习试卷

多表联合查询与子查询练习试卷

多表联合查询与子查询练习试卷(答案见尾页)一、选择题1. 在SQL中,关于SELECT语句,以下哪个说法是正确的?A. SELECT语句只能从一个表中检索数据B. SELECT语句可以从多个表中检索数据C. SELECT语句不能从多个表中检索数据D. SELECT语句只能检索固定数量的数据2. 在进行多表联合查询时,以下哪个关键字用于连接两个或多个表?A. JOINB. WHEREC. GROUP BYD. ORDER BY3. 关于内连接(INNER JOIN),以下哪个说法是正确的?A. 内连接只返回两个表中匹配的数据行B. 内连接只返回左表中的所有数据行C. 内连接只返回右表中的所有数据行D. 内连接只返回右表和左表中的匹配数据行4. 关于外连接(OUTER JOIN),以下哪个说法是正确的?A. 外连接返回左表中的所有数据行,即使右表中没有匹配的数据行B. 外连接返回右表中的所有数据行,即使左表中没有匹配的数据行C. 外连接返回两个表中的所有数据行,包括没有匹配的数据行D. 外连接只返回匹配的数据行5. 关于子查询,以下哪个说法是正确的?A. 子查询必须放在SELECT语句的FROM子句中B. 子查询必须放在SELECT语句的WHERE子句中C. 子查询可以放在SELECT语句的FROM子句或WHERE子句中D. 子查询只能放在SELECT语句的WHERE子句中6. 在多表联合查询中,以下哪个关键字用于指定连接条件?A. JOINB. WHEREC. GROUP BYD. ORDER BY7. 关于多表联合查询的结果集,以下哪个说法是正确的?A. 结果集包含来自所有参与连接表的行B. 结果集仅包含来自左表的所有行C. 结果集仅包含来自右表的所有行D. 结果集仅包含来自特定表的数据行8. 在子查询中,以下哪个说法是正确的?A. 子查询的结果集可以作为一个临时表使用B. 子查询的结果集不能作为临时表使用C. 子查询的结果集只能用于WHERE子句D. 子查询的结果集只能用于HAVING子句9. 关于多表联合查询和子查询的综合应用,以下哪个说法是正确的?A. 可以在一个多表联合查询中使用子查询来过滤结果B. 只能在子查询中使用多表联合查询C. 不能在多表联合查询中使用子查询D. 两者不能结合使用10. 在实际工作中,以下哪种情况更适合使用子查询?A. 当需要从多个表中检索部分数据时B. 当需要从单个表中检索大量数据时C. 当需要将多个表的数据合并成一个结果集时D. 当需要根据某个表的记录数来过滤其他表的数据时11. 在SQL中,以下哪个语句用于从多个表中检索数据?A. SELECTB. INSERTC. UPDATED. DELETE12. 在执行多表联合查询时,以下哪个关键字用于指定连接类型?A. JOINB. WHEREC. GROUP BYD. ORDER BY13. 在多表联合查询中,哪个关键字用于限制返回的结果集?A. LIMITB. WHEREC. JOIND. ORDER BY14. 以下哪个关键字用于在子查询中筛选结果?A. INB. LIKEC. SELECTD. FROM15. 在子查询中,以下哪个关键字用于从外部查询的结果集中获取满足条件的值?A. INB. EXISTSC. SELECTD. WHERE16. 在多表联合查询中,哪个关键字用于指定连接条件?A. ONB. WHEREC. JOIND. UNION17. 在多表联合查询中,哪个关键字用于指定连接类型(如INNER JOIN, LEFT JOIN等)?A. JOINB. WHEREC. GROUP BYD. ORDER BY18. 在多表联合查询中,哪个关键字用于指定返回哪些列?A. SELECTB. WHEREC. JOIND. ORDER BY19. 在子查询中,以下哪个关键字用于将内部查询的结果作为外部查询的条件?A. INB. LIKEC. SELECTD. WHERE20. 在多表联合查询中,哪个关键字用于对结果进行排序?A. LIMITB. WHEREC. JOIND. ORDER BY二、问答题1. 什么是SQL注入攻击?如何防范SQL注入攻击?2. 什么是事务?事务的ACID特性是什么?3. 什么是索引?索引有哪些类型?4. 什么是视图?视图有什么作用?5. 什么是存储过程?存储过程有什么优点?6. 什么是触发器?触发器有哪些类型?7. 什么是数据库范式?数据库范式有哪些?8. 什么是分布式数据库?分布式数据库有哪些特点?参考答案选择题:1. B2. A3. A4. C5. C6. B7. A8. A9. A 10. A11. A 12. A 13. A 14. A 15. A 16. A 17. A 18. A 19. A 20. D问答题:1. 什么是SQL注入攻击?如何防范SQL注入攻击?SQL注入攻击是利用SQL语言的缺陷,通过输入恶意代码来影响数据库操作的一种攻击方式。

sql语句多表查询(学生表课程表教师表成绩表)

sql语句多表查询(学生表课程表教师表成绩表)

sql语句多表查询(学生表课程表教师表成绩表)SQL问题及描述:--1.学生表Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别--2.课程表Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号--3.教师表Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名--4.成绩表SC(S#,C#,score) --S# 学生编号,C# 课程编号,score 分数*/--创建测试数据create table Student(S# varchar(10),Sname nvarchar(10),Sage datetime,Ssex nvarchar(10))insert into Student values('01' , N'赵雷' , '1990-01-01' , N'男') insert into Student values('02' , N'钱电' , '1990-12-21' , N'男') insert into Student values('03' , N'孙风' , '1990-05-20' , N'男') insert into Student values('04' , N'李云' , '1990-08-06' , N'男') insert into Student values('05' , N'周梅' , '1991-12-01' , N'女') insert into Student values('06' , N'吴兰' , '1992-03-01' , N'女') insert into Student values('07' , N'郑竹' , '1989-07-01' , N'女') insert into Student values('08' , N'王菊' , '1990-01-20' , N'女') create table Course(C# varchar(10),Cname nvarchar(10),T# varchar(10))insert into Course values('01' , N'语文' , '02')insert into Course values('02' , N'数学' , '01')insert into Course values('03' , N'英语' , '03')create table Teacher(T# varchar(10),Tname nvarchar(10))insert into Teacher values('01' , N'张三')insert into Teacher values('02' , N'李四')insert into Teacher values('03' , N'王五')create table SC(S# varchar(10),C# varchar(10),score decimal(18,1))insert into SC values('01' , '01' , 80)insert into SC values('01' , '02' , 90)insert into SC values('01' , '03' , 99)insert into SC values('02' , '01' , 70)insert into SC values('02' , '02' , 60)insert into SC values('02' , '03' , 80)insert into SC values('03' , '01' , 80)insert into SC values('03' , '02' , 80)insert into SC values('03' , '03' , 80)insert into SC values('04' , '01' , 50)insert into SC values('04' , '02' , 30)insert into SC values('04' , '03' , 20)insert into SC values('05' , '01' , 76)insert into SC values('05' , '02' , 87)insert into SC values('06' , '01' , 31)insert into SC values('06' , '03' , 34)insert into SC values('07' , '02' , 89)insert into SC values('07' , '03' , 98)go--1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数--1.1、查询同时存在"01"课程和"02"课程的情况select a.* , b.score [课程'01'的分数],c.score [课程'02'的分数]from Student a , SC b , SC cwhere a.S# = b.S# and a.S# = c.S# and b.C# = '01' and c.C# = '02' and b.score > c.score--1.2、查询同时存在"01"课程和"02"课程的情况和存在"01"课程但可能不存在"02"课程的情况(不存在时显示为null)(以下存在相同内容时不再解释)select a.* , b.score [课程"01"的分数],c.score [课程"02"的分数] from Student aleft join SC b on a.S# = b.S# and b.C# = '01'left join SC c on a.S# = c.S# and c.C# = '02'where b.score > isnull(c.score,0)--2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数--2.1、查询同时存在"01"课程和"02"课程的情况select a.* , b.score [课程'01'的分数],c.score [课程'02'的分数] from Student a , SC b , SC cwhere a.S# = b.S# and a.S# = c.S# and b.C# = '01' and c.C# = '02' and b.score < c.score--2.2、查询同时存在"01"课程和"02"课程的情况和不存在"01"课程但存在"02"课程的情况select a.* , b.score [课程"01"的分数],c.score [课程"02"的分数] from Student aleft join SC b on a.S# = b.S# and b.C# = '01'left join SC c on a.S# = c.S# and c.C# = '02'where isnull(b.score,0) < c.score--3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩select a.S# , a.Sname , cast(avg(b.score) as decimal(18,2)) avg_scorefrom Student a , sc bwhere a.S# = b.S#group by a.S# , a.Snamehaving cast(avg(b.score) as decimal(18,2)) >= 60order by a.S#--4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩--4.1、查询在sc表存在成绩的学生信息的SQL语句。

(完整版)sql练习题+答案

(完整版)sql练习题+答案

(一) 新建以下几个表student(学生表):其中约束如下:(1)学号不能存在相同的(2)名字为非空(3)性别的值只能是’男’或’女’(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5)出生日期为日期格式(6)年龄为数值型,且在0~100之间cs(成绩表):其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0〜100之间,可以不输入值create table cs (sno smallint not null referencesstudent ( sno ), ----定义成外键cno smallint not null referencescourse ( cno ), ----定义成外键cj smallint constraint e check (cj between0 and 100 ),---- 检查约束一—j(成绩)只能在~100之间,可以不输入值constraint f primary key ( sno , cno )---- 定义学生学号和课程号为sc表的主键)course(课程表)其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname非空(三)针对学生课程数据库查询(1)查询全体学生的学号与姓名。

Select sno , sname from student(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

select * from student(4)查全体学生的姓名及其出生年份。

select sname , birth from student(5)查询学校中有哪些系。

select distinct dept from student(6)查询选修了课程的学生学号。

select sno from cs where eno is not null(7)查询所有年龄在20岁以下的学生姓名及其年龄。

SQL语句练习答案

SQL语句练习答案

练习一自己动手先新建一个名为STUDENT的数据库,然后利用SQL语句建立如下三个表:●建立一个学生表Student,它由学号Sno、姓名Sname、性别Ssex 、所在系Sdept 、年龄Sage 五个属性组成。

学号为主键。

CREATE TABLE Student(Sno CHAR(10) Primary key,Sname CHAR(20) ,Ssex CHAR(2) ,Sdept CHAR(15),Sage INT);●建立一个课程表Course,字段有课程编码Cno、课程名称Cname、学分Cpoints ,其中课程编码为关键字。

CREATE TABLE Course (Cno CHAR(10) Primary key,Cname CHAR(50) ,Cpoints int);●建立一个学生选课表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码。

CREATE TABLE SC(Sno CHAR(10),Cno CHAR(10) ,Grade int,Primary key (Sno, Cno));练习二⏹在新建的表Student中,利用SQL语句,插入两条记录:insert into Studentvalues('2023431','李小梅','女','信息工程系','18');⏹在新建的表Course中,利用SQL语句,插入两条记录:insert into Coursevalues('30201004','管理信息系统','4');⏹在新建的表SC中,利用SQL语句,插入两条记录:insert into SCvalues('2023431','30201004','80');练习三●将学号为2023431的学生的年龄改为19岁。

多表查询sql练习题

多表查询sql练习题

多表查询sql练习题多表查询sql练习题1、⽤⼀条SQL 语句查询出每门课都⼤于80 分的学⽣姓名 name course grade 张三语⽂ 81 张三数学 75 李四语⽂ 76 李四数学 90 王五语⽂ 81 王五数学 100 王五英语 90/*创建表*/CREATE TABLE stu(stu_name VARCHAR(255),Course CHAR(2),grade INT);/*插⼊数据*/INSERT INTO stu VALUES('张三','语⽂',81);INSERT INTO stu VALUES('张三','数学',75);INSERT INTO stu VALUES('李四','语⽂',76);INSERT INTO stu VALUES('李四','数学',90);INSERT INTO stu VALUES('王五','语⽂',81);INSERT INTO stu VALUES('王五','数学',100);INSERT INTO stu VALUES('王五','英语',90);/*查询*/SELECT DISTINCT stu_name FROM stuWHERE stu_name NOT IN(SELECT stu_name FROM stu WHERE grade<=80);/*分析:先查出成绩⼩于80的学⽣姓名,再查出不在成绩⼩于80的学⽣姓名中的学⽣(去除重复记录),即可*/2、现有学⽣表如下: ⾃动编号学号姓名课程编号课程名称分数 1 2005001 张三 0001 数学 69 2 2005002 李四 0001 数学 89 3 2005001张三 0001 数学 69 删除除了⾃动编号不同, 其他都相同的学⽣冗余信息/*创建表*/CREATE TABLE stu(id INT(7) PRIMARY KEY AUTO_INCREMENT,number INT(7),stu_name VARCHAR(255),course_id INT(7),course_name VARCHAR(255),score INT(7));/*插⼊数据*/INSERT INTO stu VALUES(NULL,2005001,'张三',0001,'数学',69);INSERT INTO stu VALUES(NULL,2005002,'李四',0002,'数学',89);INSERT INTO stu VALUES(NULL,2005001,'张三',0001,'数学',69);/*删除重复数据*/DELETE FROM stuWHERE stu.`id` NOT IN(SELECT `mid` FROM(SELECT MIN(id) `mid` FROM stuGROUP BY stu.`stu_name`,stu.`number`,stu.`course_id`,stu.`course_name`,stu.`score`) t);/*分析:先按学号姓名课程编号课程名称分数分组,然后查出分组中的最⼩id(如果满⾜删除条件则id重复,取最⼩即可)得到最⼩id的集合,然后删除id不在集合中的数据(id不在集合中说明满⾜删除条件,即数据重复)*/3、⼀个叫 team 的表,⾥⾯只有⼀个字段name, ⼀共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进⾏⽐赛,⽤⼀条sql 语句显⽰所有可能的⽐赛组合SELECT t1.`t_name`, t2.`t_name`FROM team t1,team t2WHERE t1.`t_name`<t2.`t_name`;/*参考资料:https:///qq_37958608/article/details/87531029*/4、怎么把这样⼀个数据表 year month amount 1991 1 1.1 1991 2 1.2 1991 3 1.3 1991 4 1.4 1992 1 2.1 1992 2 2.2 1992 3 2.3 1992 4 2.4 查成这样⼀个结果? year m1 m2 m3 m4 1991 1.1 1.2 1.3 1.4 1992 2.1 2.2 2.3 2.4/*创建date表*/CREATE TABLE DATE(YEAR VARCHAR(20),MONTH INT(10),amount VARCHAR(20));/*插⼊数据*/INSERT INTO DATE VALUES('1991', 1, '1.1');INSERT INTO DATE VALUES('1991', 2, '1.2');INSERT INTO DATE VALUES('1991', 3, '1.3');INSERT INTO DATE VALUES('1991', 4, '1.4');INSERT INTO DATE VALUES('1992', 1, '2.1');INSERT INTO DATE VALUES('1992', 2, '2.2');INSERT INTO DATE VALUES('1992', 3, '2.3');INSERT INTO DATE VALUES('1992', 4, '2.4');/*查询*/SELECT YEAR,(SELECT amount FROM `date` d WHERE MONTH=1 AND d.year=date.year) AS m1,(SELECT amount FROM `date` d WHERE MONTH=2 AND d.year=date.year) AS m2,(SELECT amount FROM `date` d WHERE MONTH=3 AND d.year=date.year) AS m3,(SELECT amount FROM `date` d WHERE MONTH=4 AND d.year=date.year) AS m4FROM DATE GROUP BY YEAR/*参考资料:https:///vivian_python/article/details/102793872*/5、创建数据表(学⽣表 Student、教师表 Teacher、成绩表 SC)/*学⽣表 Student*/CREATE TABLE Student(Sid VARCHAR(6), Sname VARCHAR(10), Sage DATETIME, Ssex VARCHAR(10)); INSERT INTO Student VALUES('01' , '赵雷' , '1990-01-01' , '男');INSERT INTO Student VALUES('02' , '钱电' , '1990-12-21' , '男');INSERT INTO Student VALUES('03' , '孙风' , '1990-05-20' , '男');INSERT INTO Student VALUES('04' , '李云' , '1990-08-06' , '男');INSERT INTO Student VALUES('05' , '周梅' , '1991-12-01' , '⼥');INSERT INTO Student VALUES('06' , '吴兰' , '1992-03-01' , '⼥');INSERT INTO Student VALUES('07' , '郑⽵' , '1989-07-01' , '⼥');INSERT INTO Student VALUES('08' , '王菊' , '1990-01-20' , '⼥')/*成绩表 SC*/CREATE TABLE SC(Sid VARCHAR(10), Cid VARCHAR(10), score DECIMAL(18,1));INSERT INTO SC VALUES('01' , '01' , 80);INSERT INTO SC VALUES('01' , '02' , 90);INSERT INTO SC VALUES('01' , '03' , 99);INSERT INTO SC VALUES('02' , '01' , 70);INSERT INTO SC VALUES('02' , '02' , 60);INSERT INTO SC VALUES('02' , '03' , 80);INSERT INTO SC VALUES('03' , '01' , 80);INSERT INTO SC VALUES('03' , '02' , 80);INSERT INTO SC VALUES('03' , '03' , 80);INSERT INTO SC VALUES('04' , '01' , 50);INSERT INTO SC VALUES('04' , '02' , 30);INSERT INTO SC VALUES('04' , '03' , 20);INSERT INTO SC VALUES('05' , '01' , 76);INSERT INTO SC VALUES('05' , '02' , 87);INSERT INTO SC VALUES('06' , '01' , 31);INSERT INTO SC VALUES('06' , '03' , 34);INSERT INTO SC VALUES('07' , '02' , 89);INSERT INTO SC VALUES('07' , '03' , 98)/*教师表 Teacher*/CREATE TABLE Teacher(Tid VARCHAR(10),Tname VARCHAR(10));INSERT INTO Teacher VALUES('01' , '张三');INSERT INTO Teacher VALUES('02' , '李四');INSERT INTO Teacher VALUES('03' , '王五')需求1:查询” 01 “课程⽐” 02 “课程成绩⾼的学⽣的信息及课程分数SELECT s.*,sc.`score` FROM student sNATURAL JOIN scWHERE s.sid IN(SELECT t1.sid FROM(SELECT * FROM sc WHERE cid=01) t1,(SELECT * FROM sc WHERE cid=02) t2WHERE t1.sid=t2.sid AND t2.score>t1.score);/*参考资料:https:///ql70me/p/10329630.html*/需求2:查询平均成绩⼤于等于 60 分的同学的学⽣编号和学⽣姓名和平均成绩SELECT student.sid,student.sname,a.avg_score FROM studentINNER JOIN(SELECT Sid,AVG(score) avg_score FROM scGROUP BY sidHAVING AVG(score )>=60) aON student.sid=a.sid/*分析:先按sid分组查询出sid和平均成绩avg_score得到新表a(注意:必须取别名),然后将学⽣表和a表内连接查询出sid相等的学⽣即可*/需求3:查询在 SC 表存在成绩的学⽣信息SELECT * FROM studentWHERE sid IN(SELECT sid FROM sc GROUP BY sid) t;需求4:查询所有同学的学⽣编号、学⽣姓名、选课总数、所有课程的总成绩(没成绩的显⽰为 null ) SELECT s.sid,s.sname,a.cid_count FROM student sLEFT OUTER JOIN(SELECT sid ,COUNT(cid) cid_count FROM sc GROUP BY sid) a ON s.`Sid`=a.sid;需求5:查有成绩的学⽣信息SELECT * FROM studentWHERE sid IN(SELECT sid FROM scGROUP BY sid);。

sql语句练习题库

sql语句练习题库

sql语句练习题库一、基础题1. 创建一个名为"students"的表,包含以下字段: - 学生编号(student_id),整数类型,主键- 姓名(name),字符串类型,最大长度为50 - 年龄(age),整数类型2. 向"students"表中插入以下记录:- 学生编号:1,姓名:张三,年龄:18- 学生编号:2,姓名:李四,年龄:20- 学生编号:3,姓名:王五,年龄:193. 查询"students"表中所有记录的姓名和年龄。

4. 查询年龄大于等于20岁的学生记录的姓名。

5. 修改学生编号为2的记录的姓名为"赵六"。

6. 删除学生编号为3的记录。

二、进阶题1. 创建一个名为"courses"的表,包含以下字段: - 课程编号(course_id),整数类型,主键- 课程名称(course_name),字符串类型,最大长度为50- 授课教师(teacher),字符串类型,最大长度为502. 向"courses"表中插入以下记录:- 课程编号:1,课程名称:数学,授课教师:张老师- 课程编号:2,课程名称:英语,授课教师:李老师- 课程编号:3,课程名称:物理,授课教师:王老师3. 查询"students"表和"courses"表中学生姓名和课程名称的组合。

4. 查询"students"表中没有选修课程的学生记录的姓名。

5. 查询每门课程的选修人数。

6. 查询选修课程人数最多的课程信息。

三、高级题1. 创建一个名为"scores"的表,包含以下字段:- 学生编号(student_id),整数类型,外键,关联"students"表 - 课程编号(course_id),整数类型,外键,关联"courses"表 - 分数(score),整数类型,取值范围为0-1002. 向"scores"表中插入以下记录:- 学生编号:1,课程编号:1,分数:88- 学生编号:1,课程编号:2,分数:92- 学生编号:2,课程编号:1,分数:75- 学生编号:2,课程编号:3,分数:85- 学生编号:3,课程编号:2,分数:90- 学生编号:3,课程编号:3,分数:783. 查询每个学生的平均分数。

结构化查询语言SQL习题与答案

结构化查询语言SQL习题与答案

结构化查询语⾔SQL习题与答案结构化查询语⾔SQL习题与答案 篇⼀:结构化查询语⾔SQL习题与答案 ⼀、选择题 1. 在SQL包含的功能中,最重要的功能是_______。

A) 数据查询 B) 数据操纵 C) 数据定义 D) 数据控制 2. 使⽤SQL语⾔有两种⽅式,它们是_______。

A) 菜单式和交互式B) 嵌⼊式和程序式 C) 交互式和嵌⼊式D) 命令式和解释式 3. SQL的全部功能可以⽤9个动词概括,其中动词INSERT是属于下列______功能。

A) 数据查询 B) 数据操纵 C) 数据定义 D) 数据控制 4. SQL语⾔⽀持数据库的三级模式结构,其中模式对应于______。

A) 存储⽂件 B) 视图 C) 基本表 D) 视图和基本表 5. 在创建数据表时,可以给字段规定NULL或NOT NULL值,NULL值的含义是______。

A) 0B) 空格 C) NULL D) 不确定 6. 在SQL的ALTER语句中,⽤于删除字段的⼦句是______。

A) ALTER B) DELETE C) DROP D) MODIFY 7. SQL中的INSERT语句可以⽤于______。

A) 插⼊⼀条记录 B) 插⼊⼀个字段 C) 插⼊⼀个索引 D) 插⼊⼀个表 8. 下列描述错误的是______。

A)⽤INSERT-SQL语句可以插⼊⼀条记录 B)⽤INSERT-SQL语句可以插⼊多条记录 C)使⽤INSERT-SQL语句可以插⼊记录的部分数据 D)使⽤INSERT-SQL语句插⼊记录时列名的排列顺序必须与表定义时的顺 序⼀致 9. INSERT-SQL语句中所使⽤的数据不能来⾃于______。

A) 数组 B) 变量 C) 查询 D) 索引 10. SQL中的UPDATE语句可以⽤于______。

A) 更新数据表的结构 B) 更新数据表的值 C) 更新索引D) 更新查询 11. 下列描述错误的是______。

sql测试题和答案.docx

sql测试题和答案.docx

sql测试题和答案# SQL测试题1. 基础查询题- 题目:编写一个SQL查询,从`employees`表中选择所有员工的姓名和员工ID。

- 答案:`SELECT name, employee_id FROM employees;`2. 条件查询题- 题目:从`orders`表中选择所有订单金额超过1000的订单。

- 答案:`SELECT * FROM orders WHERE order_amount > 1000;`3. 排序题- 题目:从`products`表中选择所有产品的名称和价格,并按价格降序排列。

- 答案:`SELECT name, price FROM products ORDER BY price DESC;`4. 聚合函数题- 题目:计算`sales`表中所有销售额的总和。

- 答案:`SELECT SUM(sales_amount) AS total_sales FROM sales;`5. 分组查询题- 题目:从`sales`表中按产品ID分组,并计算每个产品的总销售额。

- 答案:`SELECT product_id, SUM(sales_amount) AStotal_sales_per_product FROM sales GROUP BY product_id;`6. 连接查询题- 题目:查询`customers`表和`orders`表,找出所有客户的姓名和他们下过的订单数量。

- 答案:`SELECT , COUNT(o.order_id) AS order_count FROM customers c JOIN orders o ON c.customer_id =o.customer_id GROUP BY ;`7. 子查询题- 题目:找出`employees`表中工资高于平均工资的员工的姓名和工资。

- 答案:`SELECT name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);`8. 多表连接查询题- 题目:查询`employees`表和`departments`表,找出所有员工的姓名、部门名称和部门ID。

Oracle的sql语句练习题与答案

Oracle的sql语句练习题与答案

Oracle的sql语句练习题含答案(二)Oracle_SQL练习题11.选择部门30中的所有员工.2.列出所有办事员(CLERK)的姓名,编号和部门编号.3.找出佣金高于薪金的员工.4.找出佣金高于薪金的60%的员工.5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.7.找出收取佣金的员工的不同工作.8.找出不收取佣金或收取的佣金低于100的员工.9.找出各月倒数第3天受雇的所有员工.10.找出早于12年前受雇的员工.11.以首字母大写的方式显示所有员工的姓名.12.显示正好为5个字符的员工的姓名.13.显示不带有"R"的员工的姓名.14.显示所有员工姓名的前三个字符.15.显示所有员工的姓名,用a替换所有"A"16.显示满10年服务年限的员工的姓名和受雇日期.17.显示员工的详细资料,按姓名排序.18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.22.找出在(任何年份的)2月受聘的所有员工。

23.对于每个员工,显示其加入公司的天数.24.显示姓名字段的任何位置包含"A"的所有员工的姓名.25.以年月日的方式显示所有员工的服务年限.答案:1.select ename,job,mgr,hiredate,sal,comm ,deptno from emp where deptno=30;2.select ename,empno,deptno from emp where job='CLERK';3.select * from emp where comm>sal;4.select *from empwhere comm>sal*0.6;5.select empno ,ename, job,hiredate,sal,comm,deptnofrom empwhere( job='MANAGER' and deptno=10)or( job='CLERK' and deptno=20);6.select empno,ename,job, hiredate,sal, deptnofrom empwhere ( job='MANAGER' and deptno=10)or( job='CLERK' and deptno=20)or((job <>'MANAGER' and job<>'CLERK') and sal>=2000);7.select distinct ename,job,commfrom empwhere NVL(comm,0)>0;注意如果像上面这样写,就job ename comm 3个同时不同的都列出来正确的是:select distinct jobfrom empwhere NVL(comm,0)>0;8.select ename,comm. from emp where NVL(comm,0)=0 or NVL(comm,0)<100; 如果按上面的写法就重复了,直接可以写成select ename,commfrom empwhere NVL(comm,0)<100;9 select ename, job,last_day(hiredate)-3from emp;select ename, job,hiredatefrom empwhere hiredate=last_day(hiredate)-2;10.select ename,jobfrom empwhere months_between(sysdate,hiredate)/12>1211.select initcap(ename) name ,job, hiredatefrom emp;12. select ename,job,hiredate from emp where length(ename)=5;13 select ename, job from emp where ename not like '%R%';14.select substr(ename, 1,3) name,job,hiredate from emp;15select replace(ename, 'A','a') name,job,hiredate from emp;16select ename, job, hiredate from empwhere months_between(sysdate,hiredate)/12>=10;17. select * from emp order by ename;18.select ename, hiredate from emp order by hiredate desc;19.select ename,job, sal from emp order by job desc, sal asc;20.select ename, to_char(hiredate,'yyyy') year, to_char(hiredate,'mm') monthsfrom emporder by months, year asc;21.select ename, sal/30 dailysalfrom emp;22. select ename, hiredatefrom empwhere to_char(hiredate,'mm')='02';23. select ename,sysdate-hiredate 天数from emp;24.select ename from emp where instr(ename,'A',1)>0;25. select ename, to_char(hiredate,'yyyy/mm/dd') from emp;--26.列出至少有一个员工的所有部门.select dname from emp,dept where emp.deptno=dept.deptno group by dname;select distinct dname from emp,dept where emp.deptno=dept.deptno;--说明:(1)select中出现的字段一定要出现在group by中;-- (2)如果select中出现的字段不出现在group by中,则一定要出现在select的聚合函数中,对于想出现的字段,可用max()或min()。

SQL课后练习题(1-9章答案)

SQL课后练习题(1-9章答案)

第一章1、数据完整性是指( D )A.数据库存中的数据不存在重复B.数据库中所有的数据格式是一样的C.所有的数据全部保存在数据库中D.数据库中的数据能够正确反映情况2、SQL中pubs数据库属于(A )A.用户数据库B.系统数据库C.数据库模板D.数据库管理系统3、数据冗余指的是( D )A.数据与数据之间没有联系B.数据有丢失C.数据量太大D.存在重复的数据4、SQL Server数据库的主数据文件的扩展名为( B )A. .sqlB. .mdfC. .mdbD. .ldf5、下列关于关系数据库叙述错误的是(B )A.关系数据库的结构一般保持不变,但也可根据需要进行改变B.一个数据表组成一个关系数据库,多种不同数据则需要创建多个数据库C. 关系数据库表中的所有记录的关键字字段的值互不相同D. 关系数据库表中的外部关键字不能用于区别该表中的记录6、创建数据库时,需要指定( C )属性。

A.数据库初始大小B.数据库的存放位置C.数据库的物理名和逻辑名D.数据库的访问权限7、以下说法正确的是( A )A.通过SQL Server服务器对SQL Server的启动、停止和通过服务管理器对SQL Server的启动、停止是同等功效B.必须先启动服务管理器中的SQL Server服务之后才能通过SQL Server服务管理器启动SQL ServerC.必须先通过SQL Server服务管理器启动SQL Server之后才能启动服务管理器中的SQL Server服务D.只能通过服务管理器对SQL S erver进行启动和停止8、SQL Server提供的4个系统数据库,以下说法正确的是( D )A.tempdb数据库是一个空数据库,完全可以删除B.adventure works是用来做模板的一个数据库C.msdb数据库是用来做例子的数据库D.创建新的空白数据库时,将使用Model数据库所规定的默认值9、以下说法错误的是(C)A.数据完整性是指存储在数据库中数据的准确性B.SQL Server是一个DBMSC.ERP、CRM、MIS等都是DBMSD.设计数据库时允许必要的冗余第二章1、创建银行的贷款情况表时,“还款日期”默认为当天,且必须晚于“借款日期”,应采用(A)约束。

实验三 查询的sql语句

实验三 查询的sql语句

Sql语句操作单表查询【例3-16】在“学生”表中查询全体学生的学号、姓名、性别和出生日期。

答案:【例3-17】在“教师”表中查询所有的字段信息。

答案:【例3-18】查询教师表中职称为教授的有关信息答案:【例3-19】查询教师表中职称为女教授的有关信息答案:【例3-20】查询“成绩”表中成绩在70-90之间的学号、课程编号和成绩。

答案:【例3-21】查询学生年龄22岁以上的学生记录。

答【例3-22】查询选修了课程编号为“C0601”的学生的学号和成绩,查询结果按成绩降序排列。

答案:多表查询,连接查询【例3-23】查询选修课程编号为“C0601”的课程且成绩在60与80分之间(含60与80分)的所有学生的学号、姓名、课程名及成绩答案:嵌套查询【例3-24】查询课程编号为“C0404”且成绩在90分以上的学生学号和姓名。

答案:操作查询【例3-26】将一个新的学生信息(学号:s01003,姓名:陈国庆,性别:男,生源:江苏,出生日期:1990-10-1,专业编号:p05)添加到学生表中。

答案:【例3-27】修改学生表中学号为”s01003”的生源为“福建”答案:【例3-28】删除学生表中学号为”s01003”的学生记录聚集函数答案:【例3-29】查询“学生”表的学生总人数。

答案:【例3-30】查询学生表中生源来自那些地方答案:【例3-31】计算学号为“s01002”学生的课程平均成绩答案:【例3-32】查询“王小闽”的学生修改的所有课程的总学分。

答案:【例3-33】查询选修课程“c0605”的学生的最高成绩和最低成绩。

Group by 分组答案:【例3-34】查询各课程(按课程号)及相应的选课人数。

答案:【例3-35】查询选修2门以上课程的学生学号。

答案:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL语句练习题
1、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。

select ename,sal from emp where job='CLERK' or job='MANAGER';
2、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。

select ename,deptno,sal,job from emp where deptno between 10 and 30;
3、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。

select ename,sal,job from emp where ename like 'J%';
4、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。

select ename,job,sal from emp where sal<=2000 order by sal desc;
5、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。

select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=’CLERK’;
6、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。

select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000;
7、查询所有雇员的姓名、SAL与COMM之和。

select ename,sal+nvl(comm,0) “sal-and-comm” from emp;
8、查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字
select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’);
9、查询列出来公司就职时间超过24年的员工名单
select ename from emp where hiredate<=add_months(sysdate,-288);
10、查询于81年来公司所有员工的总收入(SAL和COMM)
select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,’yyyy’)=’1981’;
11、查询显示每个雇员加入公司的准确时间,按××××年××月××日时分秒显示。

select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
12、查询列出各部门的部门名和部门经理名字
select dname,ename from emp,dept where emp.deptno=dept.deptno and job=’MANAGER’;。

相关文档
最新文档