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语句练习题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语句练习及答案

现在有一教学管理系统,具体的关系模式如下: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 查询语句的学习单表查询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查询语句习题含答案查询问题:设教学数据库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语句练习题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
/* 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语言一、选择题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题)【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语言的缺陷,通过输入恶意代码来影响数据库操作的一种攻击方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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’;。