数据库sql查询语句上机练习1_习题_结果(单世民)

合集下载

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。

学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。

2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。

2查询姓名中第2个字为“明”字的学⽣学号、性别。

3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。

90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案在学习SQL(Structured Query Language)时,练习题是非常重要的一部分。

通过练习题,我们可以巩固和应用所学的SQL知识,提高自己的实践能力。

本文将介绍几个常见的SQL练习题,并提供相应的答案,希望对大家的学习有所帮助。

1. 查询员工表中所有员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表;```2. 查询员工表中薪水大于5000的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 > 5000;```3. 查询员工表中职位为经理的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 职位 = '经理';```4. 查询员工表中薪水在4000到6000之间的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 BETWEEN 4000 AND 6000;```5. 查询员工表中薪水最高的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 = (SELECT MAX(薪水) FROM 员工表);```6. 查询员工表中没有分配部门的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 部门 IS NULL;```7. 查询员工表中按照薪水从高到低排列的前5名员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表ORDER BY 薪水 DESCLIMIT 5;```8. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量FROM 员工表GROUP BY 部门;```9. 查询员工表中薪水排名在第3到第5位的员工的姓名和薪水。

SQL语句练习题及答案

SQL语句练习题及答案

------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ---------------------------------答案------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- ---------------------------------------------------------------------------20131431班—--2013143120—--田润旭—------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- --------------------------------新建数据库------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ---------------------------------------------------------------------------新建数据库“s”--create database s------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ----------------------------------新建表--------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ---------------------------------------------------------------------------学生信息表--create table student(sno char(10)not null,sname char(8)not null,sex char(2)not null,sbirthday datetime,class char(5))insert into student values('108','曾华','男','1977-09-01','95033')insert into student values('105','匡明','男','1975-10-02','95031')insert into student values('101','王丽','女','1976-01-23','95033')insert into student values('107','李军','男','1976-02-20','95033')insert into student values('109','王芳','女','1975-02-10','95031')insert into student values('103','陆君','男','1974-06-03','95031')--课程表--create table course (cno char(10),cname varchar(10),Tno char(10))insert into course values('3-105','计算机导论','825')insert into course values('3-245','操作系统','804')insert into course values('6-166','数字电路','856')insert into course values('9-888','高等数学','831')--成绩表--create table score(sno char(10)not null,cno char(10)not null,degree decimal(4,1))insert into score values('103','3-245',86)insert into score values('105','3-245',75)insert into score values('109','3-245',68)insert into score values('103','3-105',92)insert into score values('105','3-105',76)insert into score values('109','3-105',76)insert into score values('101','3-105',64)insert into score values('107','3-105',91)--教师信息表--create table teacher(tno char(10)not null,tname char(8)not null,tsex char(2)not null,tbirthday datetime,prof char(10),depart char(10))insert into teacher values('804','李诚','男','1958-12-01','副教授','计算机系')insert into teacher values('856','张旭','男','1969-10-02','讲师','电子工程系')insert into teacher values('825','王萍','女','1972-01-23','助教','计算机系') insert into teacher values('831','刘冰','女','1977-02-20','助教','电子工程系')------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ----------------------------------查看表--------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ---------------------------------------------------------------------------查看所有表信息--select*from studentselect*from scoreselect*from courseselect*from teacher------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- ----------------------------------作业---------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------- -------------------------------------------------------------------------select*from studentselect*from scoreselect*from courseselect*from teacher--1、查询Student表中的所有记录的Sname、Ssex和Class列。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

在数据库管理系统中,SQL被广泛应用于数据的查询、插入、更新和删除等操作。

掌握SQL语言对于数据库开发和数据分析非常重要。

在这篇文章中,我们将提供一些SQL练习题及其答案,帮助读者巩固和提升SQL的应用能力。

1. 查询员工表中所有员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询员工表中工资大于5000的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 > 5000;```3. 查询员工表中工资在3000到5000之间的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 BETWEEN 3000 AND 5000;```4. 查询员工表中姓"张"的员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 姓名 LIKE '张%';```5. 查询员工表中工资最高的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 = (SELECT MAX(工资) FROM 员工表);```6. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门;```7. 查询员工表中每个部门的平均工资。

答案:```sqlSELECT 部门, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门;```8. 查询员工表中工资高于部门平均工资的员工的姓名和工资。

答案:SELECT 姓名, 工资 FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表 GROUP BY 部门);```9. 查询员工表中没有分配部门的员工的姓名和工资。

数据库sql查询语句练习2习题结果单世民仓库习题.docx

数据库sql查询语句练习2习题结果单世民仓库习题.docx

数据库 sql 查询语句练习 2_习题_结果 ( 单世民 ) 仓库 _习题数据库结构如下:仓库(仓库号 , 城市 , 面积)订购单(职工号 , 供应商号 , 订购单号 , 订购日期)供应商(供应商号 , 供应商名 , 地址)职工(仓库号 , 职工号 , 工资)具体数据如下:仓库表:仓库号城市面积WH1北京370WH2上海500WH3广州200WH4武汉400订购单表:职工号供应商号订购单号订购日期E3S7OR6706/23/01E1S4OR7307/28/01E5S4OR7605/25/01E6S6OR7705/26/01E3S4OR7906/13/01 E1S2OR8008/29/01 E3S3OR9009/01/01 E3S3OR9107/13/01供应商表:供应商号供应商名地址S2名硕电子公司苏州S3振华电子厂西安S4华通电子公司北京S6607 厂郑州S7爱华电子厂北京职工表:仓库号职工号工资WH2E11220WH1E31210WH2E41250WH3E51230WH1E61250使用 SQL 语句完成:DDL1.写出创建上述表的语句命令:create table仓库 ( 仓库号varchar( 8) primary key ,城市 varchar( 8),面积int );create table订购单 ( 订购单号varchar( 8 )primary key, 职工号varchar (8 ), 供应商号 varchar( 8 ),订购日期nchar( 8 ))create table供应商 ( 供应商号varchar( 8)primary key ,供应商名varchar( 18 ),地址 varchar( 8 ))create table职工 ( 职工号varchar( 8 )primary key , 仓库号 varchar( 8 ),工资int ) DML2.给出插入上述数据的 insert 语句命令:insert into仓库 values( 'WH1', ' 北京 ' , 370 )insert into仓库 values( 'WH2', ' 上海 ' , 500 )insert into仓库 values( 'WH3', ' 广州 ' , 200 )insert into仓库 values( 'WH4', ' 武汉 ' , 400 )insert into订购单 values( 'OR67', 'E3', 'S7', '06/23/01')insert into订购单 values( 'OR73', 'E1', 'S4', '07/28/01')insert into订购单 values( 'OR76', 'E5', 'S4', '05/25/01')insert into订购单 values( 'OR77', 'E6', 'S6', '05/26/01')insert into订购单 values( 'OR79', 'E3', 'S4', '06/13/01')insert into订购单 values( 'OR80', 'E1', 'S2', '08/29/01')insert into订购单 values( 'OR90', 'E3', 'S3', '09/01/01')insert into订购单 values( 'OR91', 'E3', 'S7', '07/13/01')insert into供应商 values( 'S2', ' 名硕电子公司 ' , '苏州 ' )insert into供应商 values( 'S3', ' 振华电子厂 ' , ' 西安 ' )insert into供应商 values( 'S4', ' 华通电子公司 ' , '北京 ' )insert into供应商 values( 'S6', '607厂 ' , '郑州 ' )insert into供应商 values( 'S7', ' 爱华电子厂' , ' 北京 ' )insert into职工 values( 'E1', 'WH2', 1220)insert into职工 values( 'E3', 'WH1', 1210)insert into职工 values( 'E4', 'WH2', 1250)insert into职工 values( 'E5', 'WH3',1230)insert into职工 values( 'E6', 'WH1',1250)单表查询3.检索职工关系中的所有信息命令: select* from职工结果:4.检索供应商关系中的所有信息命令: select* from供应商结果:5.检索六月之后的所有订单命令:SELECT * FROM 订购单WHERE DATEDIFF ( MONTH, '2001-06-01 00:00:00.000',订购日期 )>= 0;结果:6.检索面积大于 400 的仓库命令: select* from仓库where面积>400结果:7.检索哪些职工的工资多于 1210命令: select* from职工where工资>1210结果:8.检索仓库是“ WH1 ”或“ WH2 ”并且面积大于400 的城市命令: select城市from仓库where仓库号='WH1'and面积> 400union select城市from仓库where仓库号='WH2'and面积> 400结果:9.找出仓库面积在 400 到 600 的仓库命令: select* from仓库where面积between 400 and 600结果:10.找出名中包含“厂”的所有供应商的名命令: select供应商名from供应商where供应商名like'% 厂 %'结果:11.找出不在西安的供应商命令: select* from供应商except select* from供应商where地址= '西安 '或者:select* from供应商where not地址= ' 西安 '结果:12.找出不在北京的仓库命令: select* from仓库except select* from仓库where城市= '北京'结果:13.按工资降序排列出所有职工的信息命令: select* from职工order by工资desc结果:14.先按仓库号升序排列,再按工资降序排列命令: select* from职工order by仓库号asc , 工资desc结果:15.在仓库表中统计一下有几个仓库命令: select COUNT(*)仓库数from仓库结果:16.在职工表中统计一下有几个仓库命令: select COUNT( distinct仓库号)仓库数from职工结果:17.求总的仓库面积命令: select sum ( 面积 )总面积from仓库结果:聚合查询18.每个职工的订单数命令: select职工号, count(*)订单数from订购单group by职工号结果:19.订单数大于 3 的职工命令:select职工号, COUNT(*)订单数from订购单group by职工号having COUNT(*)> 3结果:多表查询20.找出在面积大于 400 的仓库中工作的职工命令: select职工号from职工join仓库on职工.仓库号=仓库.仓库号where 面积 > 400结果:21.找出在北京工作的职工和他们的工资情况命令: select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where 仓库 . 城市 =' 北京 '结果:22.找出工资大于 1215 的职工和他们所在的城市命令: select职工号,城市from职工join仓库on职工.仓库号=仓库.仓库号where 工资 > 1215结果:子查询23.哪些城市至少有一个订单(从仓库角度考虑)命令: select distinct城市from订购单join职工on订购单.职工号=职工 . 职工号join仓库on职工.仓库号=仓库.仓库号结果:24.找出没有任何订单的城市命令: select城市from仓库except select distinct城市from订购单join职工on订购单.职工号=职工.职工号join仓库on 职工 . 仓库号 =仓库 . 仓库号结果:25.找出和 E4 有同样工资的所有职工命令: select b . 职工号 , b. 仓库号 , b . 工资from职工 a join职工 b on a .工资 = b . 工资where a . 职工号 ='E4'结果:26.找出仓库面积大于 400 的仓库的所有职工命令:select 职工 . 职工号 , 职工 . 仓库号 , 职工 . 工资 from 职工 join 仓库 on 职工 . 仓库号 = 仓库 . 仓库号 where 面积 >400结果:27.找出供应商在西安的职工和他们的工资情况命令:select职工.职工号,工资from供应商join订购单on 供应商 . 供应商号 = 订购单 . 供应商号join职工on订购单.职工号=职工.职工号where地址= '西安'结果:28.找出不在北京仓库里工作的职工命令: select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号except select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where 城市 = ' 北京 '结果:29.找出在北京仓库里工作的职工命令: select职工号,工资from职工join仓库on职工.仓库号=仓库.仓库号where 城市 = ' 北京 '结果:30.求广州和上海仓库职工的总工资命令:select SUM( 工资 )总工资from职工join仓库on职工.仓库号=仓库.仓库号where城市= '广州'or城市= '上海'结果:31.求所有职工工资都大于 1210 的仓库的平均面积命令: select avg ( 面积 )平均面积from ( select仓库号from职工except select仓库号from职工where工资<1210 ) a join仓库on a . 仓库号 = 仓库 . 仓库号结果:32.求上海仓库中职工的最高工资命令: select MAX( 工资 )最高工资from职工join仓库on职工.仓库号=仓库 . 仓库号where城市= '上海'结果:33.订单数大于或等于 2 的职工的工资命令:select a .工资from( select职工 .职工号,工资from职工join订购单on职工 .职工号= 订购单 .职工号group by职工 .职工号 ,工资having COUNT(*)>= 2 ) a结果:。

数据库sql查询语句上机练习1_习题_结果(单世民)

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1请根据给出的数据库表结构来回答相应问题:DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13));EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT);BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT);其中表中包含如下数据:DEPT表:EMP表:SALGRADE表:BONUS表:无数据根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL1.写出上述表的建表语句。

此外,在DEPT上创建名为”PK_DEPT”的主键约束,在EMP表上创建名为”PK_EMP”的主键约束以及指向表DEPT 的外键约束”FK_DEPTNO”。

命令:Create table DEPT(DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13));Alter table DEPTadd constraint PK_DEPT PRIMARY KEY (DEPTNO);create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9), MGR INT,HIREDATE DATE,SAL FLOAT,COMM FLOAT,DEPTNO INT);alter table EMPadd constraint PK_EMP PRIMARY KEY (EMPNO);alter table EMPadd constraint FK_DEPTNO foreign key(DEPTNO)references DEPT(DEPTNO); DML2.给出相应的INSERT语句来完成题中给出数据的插入。

实验四SQL单表查询语句练习

实验四SQL单表查询语句练习

一、实验目的1.掌握SQL Server数据库的恢复技术2.熟练掌握SQL单表查询语句二、实验内容1.数据库恢复2.SQL查询语言练习实验基础知识提要Microsoft? SQL Server?查询分析器是一种图形工具,您可以使用它创建查询和其它SQL 脚本,并针对 SQL Server 数据库执行它们。

连接 SQL Server连接某个 Microsoft? SQL Server? 实例以打开 SQL 查询分析器中的一个查询窗口。

如果通过SQL Server 企业管理器中的连接访问 SQL 查询分析器,则自动打开一个查询窗口。

如果未建立连接而访问 SQL 查询分析器,则显示连接到 SQL 敓癲牥对话框,使您可以指定数据库服务器。

该对话框还可从工具栏和从文件菜单上的连接命令进行访问。

下表列出SQL 查询分析器工具栏中显示的图标。

最基本的查询语句具有以下的形式:SELECT select_listFROM table_source[ WHERE search_condition ]select_list描述结果集的列。

它是一个逗号分隔的表达式列表。

每个表达式同时定义格式(数据类型和大小)和结果集列的数据来源。

每个选择列表表达式通常是对从中获取数据的源表或视图的列的引用,但也可能是其它表达式,例如常量或 Transact-SQL 函数。

在选择列表中使用 * 表达式指定返回源表中的所有列。

选择列表还可包含控制结果集的最终格式的关键字:DISTINCTDISTINCT 关键字可从结果集中除去重复的行。

TOP nTOP 关键字指定返回结果集的前 n 行。

如果指定了 ORDER BY,行将在结果集排序之后选定。

除非指定了 PERCENT 关键字,否则 n 即为返回的行数。

PERCENT 指定 n 为结果集中返回的行的百分比。

三、实验步骤构建一下数据库表作为实验数据来源Products(产品)代码描述数据类型长度约束条件主码4ProductID产品编号INT40VARCHARProductName品名4INT供货厂商编号SupplierID4所属种类号INT CategoryID QuantityPerUnitVARCHAR20单位数量UnitPriceFLOAT单价8库存INTUnitsInStock2Customers(顾客)代码描述数据类型长度约束条件主码5VARCHAR顾客编号CustomerID40VARCHAR公司名CompanyName30VARCHAR联系人名ContactName30VARCHAR ContactTitle联系人头衔运行SQL SERVER服务管理器,确认数据库服务器开始运行。

数据库中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 中找学生,要求这个学生学了全部课程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT);
其中表中包含如下数据: DEPT表:
deptno having AVG(SAL)<2500 order by
AVG(SAL)asc;
结果:
多表查询 21. 显示工资高于2500或岗位为MANAGER的所有员
工的姓名,工资,职位,和部门号。
命令:select ename,SAL,job,DEPTNO from EMP where
SAL>2500 or JOB='manager';
insert
into
DEPT
values(40,'OPERATIONS','BOSTON');
insert into EMP values(7369,'SMITH','CLERK',7566,'1980-1217',800,NULL,20); insert into EMP values(7499,'ALLEN','SALESMAN',7698,'1981-0220',1600,300,30); insert into EMP values(7521,'WARD','SALESMAN',7698,'1981-0221',1250,500,30); insert into EMP values(7566,'JONES','MANAGER',7839,'1981-0402',2975,NULL,20); insert into EMP values(7654,'MARTIN','SALESMAN',7698,'1981-0928',1250,1400,30); insert into EMP values(7698,'BLAKE','MANAGER',7839,'1981-0501',2850,NULL,30);
DEPT on EMP.DEPTNO=DEPT.DEPTNO;
结果:
子查询 26. 显示所有员工的名称、工资以及工资级别。
命令:select ename,SAL,grade from EMP join
SALGRADE on EMP.SAL between SALGRADE.LOSAL and SALGRADE.HISAL;
命令:select
deptno,AVG(sal)
as
'average',MAX(sal) as 'max' from EMP group by
deptno having AVG(SAL)<2500;
结果:
20. 上一条语句以平均工资升序排序。
命令:select
deptno,AVG(sal)
as
'average',MAX(sal) as 'max' from EMP group by
命令:select ename,SAL,job from EMP where
JOB='SALESMAN' or JOB='MANAGER';
结果:
11. 显示所有没有补助的员工的姓名。
命令:select ename from EMP where COMM is null; 结果:
12. 显示有补助的员工的姓名,工资,补助。
命令:select ename,SAL,COMM from EMP where COMM
is not null;
结果:
13. 排序显示所有员工的姓名,工资(按工资降 序方式)。
命令:select ENAME,SAL from EMP order by SAL
desc;
结果:
14. 显示员工的最高工资和最低工资。
命令:
Create table DEPT (DEPTNO INT NOT NULL, DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO);
create table EMP (EMPNO INT NOT NULL,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE,
SAL FLOAT, COMM FLOAT, DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);
insert into EMP values(7782,'CLARK','MANAGER',7839,'1981-0609',2450,NULL,10);
insert into EMP
values(7788,'SCOTT','ANALYST',7566,'1987-06-
13',3000,NULL,20);
7. 查询每个员工每个月拿到的总金额(emp.sal 为工资,m为补助)。(提示: isnull(ex1,ex2)表示如果ex1为空则返回 ex2)
命令:select ename,sal+isnull(COMM,0) total from
EMP
结果:
8. 显示职位是主管(manager)的员工的姓名, 工资。
命令:select ename,sal from EMP where
JOB='manager';
结果:
9. 显示第3个字符为大写O的所有员工的姓名及 工资。
命令:select ename,sal from EMP where ename like
'__O%';
结果:
10. 显示职位为销售员(SALESMAN)或主管 (MANAGER)的员工的姓名,工资,职位。
insert into EMP
values(7839,'KING','PRESIDENT',NULL,'1981-11-
17',5000,NULL,10);
insert into EMP
values(7844,'TURN','SALESMAN',7698,'1981-09-
08',1500,0,30);
结果:
27. 显示ACCOUNTING部门所有员工的名称,工 资。
命令:select ename,SAL
EMP.DEPTNO=(select deptno DNAME='ACCOUNTING');
结果:
from from
EMP DEPT
where where
28. 显示职位属于10号部门所提供职位范围的员 工的姓名,职位,工资,部门号。
结果:
22. 排序显示所有员工的姓名,部门号,工资 (以部门号升序,工资降序,雇用日期升序 显示)。
命令:select ename,deptno,SAL from EMP order by
DEPTNO asc,SAL desc,HIREDATE asc;
结果:
23. 采用自然连接原理显示部门名以及相应的员 工姓名。(Sql server不支持NATURAL JOIN 语法。)
习题1
请根据给出的数据库表结构来回答相应问题:
DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE,
EMP表:
SALGRADE表:
BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进 行数据还原) DDL
1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为” PK_EMP”的主键约束以及指向表 DEPT的外键约束” FK_DEPTNO”。
select ename,sal,comm from EMP;
结果:
单表查询 4. 查看EMP表中部门号为10的员工的姓名,职 位,参加工作时间,工资。
命令:select ename,job,hiredate,sal from EMP
where DEPTNO='10';
结果:
5. 查所有已有的职位,要求去除重复项。
命令:select
cast(CAST(COUNT(COMM)
as
float)/cast(COUNT(*)
as
float)
as
numeric(13,12))from EMP;
结果:
聚合查询 17. 显示每种职业的平均工资。
命令:select job,avg(SAL) as 'average' from EMP
相关文档
最新文档