数据库上机(实验一)作业

时间:2024.4.30

在订单数据库OrderDB中,完成如下的查询:

(1) 查询员工的姓名、职务和薪水。

select employeeName 员工姓名,headShip 职务,salary 薪水

from Employee

(2) 查询姓名中含有“有限”的客户名称和所在地。

select customerName 客户名称,address 所在地

from customer

where customerName like '%有限%'

(3) 查询出姓“张”并且姓名的最后一个字为“梅”的员工。

select employeeNo 编号,sex 性别,birthday 出生日期,address 地址,telephone 联系电话,employeeName 员工姓名,headShip 职务,salary 薪水

from Employee

where employeeName like '张%梅'

(4) 查询住址中含有“上海”或“南昌”的女员工,并显示其姓名、所属部门、职务、

住址、出生日期和性别。如果出生日期为空,则显示“不祥”,否则按格式“yyyy—mm—dd”显示,性别用“男”和“女”显示。

select employeeName 员工姓名,department 所属部门,headShip 职务,address 地址,

case sex

when 'F' then '女'

when 'M' then '男'

end 性别,

isnull(convert(char(10),birthday,120),'不详') 出生日期

from Employee

where sex like 'F' and address like '上海%' or sex like 'F' and address like '南昌%'

(5)查询出职务为“职员”或职务为“科长”的女员工的信息。

select employeeNo 员工编号,employeeName 员工姓名,

case sex

when 'F' then '女'

when 'M' then '男'

end 性别,birthday 出生日期,address 地址,telephone 联系电话,hireDate 雇佣时间,department 所属部门,headShip 职务,salary 薪水

from Employee

where sex like 'F' and headShip like '职员' or sex like 'F' and headShip like '科长'

(6)选取编号不在C20050001~C20050004之间的客户编号、客户名称、客户地址。 select customerNo 客户编号,customerName 客户名称,address 地址

from Customer

where customerNo not between 'C20050001' and 'C20050004'

(7)在表OrderMaster中挑选出销售金额大于等于5000元的订单。

先统计订单主表中的订单金额,使用命令:

update OrderMaster set orderSum=sum2

from OrderMaster a,(select orderNo,sum(quantity *price) sum2

from OrderDetail

group by orderNo) b

where a.orderNo=b.orderNo

select *

from OrderMaster

where orderSum>=5000

(8)在订单主表中选取订单金额最高的前10%的订单数据。

select top 10 percent *

from OrderMaster

order by orderSum desc

(9)计算一共销售了几种商品。

select count(*)种类

from ( select distinct ProductNo

from OrderDetail)a

(10)计算OrderDetail表中每种商品的销售数量、平均销售单价和总销售金额,并且依据销售金额有大到小排序输出。

select productNo 商品编号,sum(quantity) 销售数

量,sum(quantity*price)/sum(quantity)

平均销售单价,sum(quantity*price) 总销售金额

from OrderDetail

group by productNo

order by sum(quantity*price) desc

(11)按客户编号统计每个客户20xx年2月的订单总金额。

select a.customerNo 客户编号,orderDate 订单日期,sum(orderSum) 总金额 from OrderMaster a,Customer b

where a.customerNo=b.customerNo and year(orderDate)='2008' and month(orderDate)='2'

group by a.customerNo,orderDate

(12)统计至少销售了10件以上的商品编号和销售数量。

select productNo 商品编号,sum(quantity) 销售数量

from OrderDetail

group by productNo

having sum(quantity)>=10

order by sum(quantity) desc

(13)统计在业务科工作且在19xx年或19xx年出生的员工人数和平均工资。 select count(*) 员工人数,avg(salary) 平均工资

from Employee

where department='业务科'

and year(birthday)='1973' or year(birthday)='1967'

(14)实验问题

①给出SQL语句实现分组聚合操作的执行过程。

答:1,首先执行FROM语句,查找到各表数据

2,其次执行WHERE语句,对数据进行筛选以及表与表的连接

3,然后执行GROUP BY语句,将数据划分组

4,使用聚集函数进行计算

5,使用HAVING语句进行筛选分组

②WHERE和HAVING子句都是用于指定查询条件的,请给出你对这两个子句的理解,用实例说明。

答:WHERE子句:作用于整个查询对象,对元组进行过滤。

HAVING子句:作用于分组,对分组内部进行过滤。必须和GROUP BY配合使用。 举例: WHERE:(1) 查询所有财务部门的员工信息。

SELECT *

FROM employee

WHERE department='财务科'

HAVING:查询最高分在80以上的每个同学的平均分和最高分

SELECT studentNo,avg(score) ,max(score)

FROM Score

GROUP BY studentNo

HAVING max(score)>=80 (按studentNo分好了组,having在分组内部过滤)

③在分组聚集操作中,为什么在查询列中,除了集聚函数运算,其它表达式必须包含在GROUP BY子句中。

答:如果查询列除集聚函数外的表达式不包含在GROUP BY子句中,则聚合没有意义,例如查询客户号,订单号,订单总额。

只按客户号分组的话,语义变得不明确,因为一个客户可能有多张订单,按客户号分组但是订单总额不知道分配到那张订单去。

④分析条件BETWEEN ... AND、AND、OR等关键字的使用方法。

答:BETWEEN ... AND是介于两个值之间的时候的查询条件;

AND 连接两个条件,同时成立;

OR 连接两个条件,一方成立即可。

⑤请总结SQL语句中的单表查询语句的使用方法。

答:⒈查询所有列

SELECT * FROM [表名]

2.查询指定列

SELECT [字段列表] FROM [表名]

3. 消除重复元组:

SELECT Distinct [字段列表] FROM [表名]

4.查询经过计算的列

SELECT 【字段及字段表达式】 FROM 【表名】

5. 指定查询结果的查询

SELECT TOP n [PERCENT] 【字段列表】 FROM 【表名】

6.给属性取别名

①:SELECT 【字段名】1 as ''A'' FROM 【表名】

②:SELECT "A"=字段名1 FROM 【表名】

③:SELECT 字段名1 "A" FROM 【表名】

7.选择查询

SELECT 【字段名列表】 FROM 【表名】 WHERE 【条件表达式】 条件表达式运算符:

比较运算:=,<,<=,>,>=,!<,!>,!=,<>

逻辑查询:or,AND,not

范围查询:between? AND,not between ?AND

集合查询:IN,not IN

字符匹配查询:ike,not LIKE

空值查询:is null,is not null

8.排序查询

SELECT 【字段名1】,【字段名2】 FROM 【表名】 WHERE 【条件表达式】

ORDER BY 【字段表达式1】,【字段表达式2】 [ASC][DESC]

9.分组查询

①SELECT 字段名列表 FROM 表名 [WHERE 条件表达式] GROUP BY 字段名

②SELECT 字段名列表 FROM 表名 [WHERE条件表达式]

GROUP BY 字段名 HAVING 筛选表达式

10.聚合查询

SELECT count([ALL| DISTINCT]{*|字段名列表}) FROM 表名

[WHERE 条件表达式]

SELECT sum| avg| max| min ([ALL| DISTINCT]<字段名列表>) FROM 表名

[WHERE 条件表达式]


第二篇:实验一 数据库和表的操作


实验一 数据库和表的操作

一、数据库实验

【实验目的】

掌握数据库的创建、数据库的分离、数据库文件备份、附加数据库和数据库删除。

【实验内容】

1.创建数据库

⑴ 使用向导创建数据库:数据库名称为jxsk(教学数据库);并查看数据库属性。

⑵ 使用企业管理器Enterprise Manager创建数据库:数据库名称为jxsk(教学数据库);并查看数据库属性;修改数据库参数:把数据库jxsk文件增长参数设置为2MB,文件最大大小参数设置为10MB。

⑶ 使用Transact-SQL指定参数创建数据库;查看数据库属性。要求如下:

① 创建数据库:

数据库名称为:testbase1;

数据文件名:testbase1_dat.mdf,存储在E:\练习数据库;

事务日志文件名:testbase1_log.ldf,存储在E:\练习数据库。

② 创建数据库:

数据库名称为:testbase2

数据文件:

主文件组PRIMARY包括文件:prim_sub1_dat、prim_sub2_dat;

文件组Grouptest1包括文件:group1_sub1_dat、group1_sub2_dat;

文件组Grouptest2包括文件:group2_sub1_dat、group2_sub2_dat;

所有数据文件都存储在E:\练习数据库;大小都是5MB。

事务日志文件名:testbase2_log.ldf,存储在E:\练习数据库;大小10MB。

2.分离数据库

掌握使用企业管理器分离数据库;掌握使用系统存储过程分离数据库。

3.备份数据库

掌握数据库文件备份。

4.附加数据库

掌握使用企业管理器附加数据库;掌握使用系统存储过程附加数据库。

分别使用企业管理器和系统存储过程将数据库testbase1附加到SQL Server服务器中。数据库“testbase1”的数据文件和事务日志文件现存放在如下目录中:

e:\练习数据库\testbase1_data.mdf

e:\练习数据库\testbase1_log.ldf

5.删除数据库

掌握使用企业管理器删除数据库;掌握使用系统存储过程删除数据库。

二、数据库表实验

【实验目的】

掌握数据库表创建的方法、掌握数据库表结构修改的方法、掌握数据库表删除的方法。

【实验内容】

1.创建数据库表

⑴使用企业管理器Enterprise Manager创建数据库表:S,C,SC,设置主键和外键约束; ⑵使用使用Transact-SQL创建数据库表:S,C,SC,设置主键和外键约束。

2.修改数据库表

⑴ 向学生表S中增加一列学籍,NATIVE CHAR(40) NOT NULL。

⑵ 将学籍列修改为:NATIVE CHAR(16) NULL。

⑶ 删除学籍列。

3.删除数据库表

⑴使用企业管理器Enterprise Manager删除数据库SC;

⑵使用使用Transact-SQL删除数据库SC。

4.数据库表记录操作

⑴ 记录录入

① 使用企业管理器Enterprise Manager录入记录;

② 使用使用Transact-SQL录入记录。

S(S3,钱多,男,22,自动化) ??

C(C4,英语,80) ??

SC(S3,C4,90) ??

⑵ 记录修改

① 使用企业管理器Enterprise Manager修改记录;

② 使用使用Transact-SQL修改记录。

Ⅰ将学生钱多的系名改为计算机;

Ⅱ将SC中课程c4的成绩提高10分;

Ⅲ将所有课程全部增加10课时。

⑶ 记录删除

① 使用企业管理器Enterprise Manager删除记录;

② 使用使用Transact-SQL删除记录。

Ⅰ将s4选修的c2成绩记录删除;

Ⅱ将c4课程删除;

Ⅲ将学生钱多删除。

⑷ 记录复制

使用使用Transact-SQL完成表记录的复制。

① 复制生成S表的备份test1;

② 复制生成S表中男生的数据记录备份test2,包含学号、姓名、性别和所在系。

实验一 数据库和表的操作

一、数据库实验

1.创建数据库

⑶ 使用Transact-SQL指定参数创建数据库。

① 在查询窗口中输入下列T-SQL 语句:

CREATE DATABASE testbase1

ON

( NAME=testbase1_data,

FILENAME='e:\练习数据库\testbase1_data.mdf')

LOG ON

( NAME=testbase1_log,

FILENAME='e:\ 练习数据库\testbase1_log.ldf')

GO

② 在查询窗口中输入下列T-SQL 语句:

USE master

GO

CREATE DATABASE testbase2

ON

PRIMARY

(NAME=prim_sub_dat1,

FILENAME=‘E:练习数据库\prim_sub1_dat.mdf’, SIZE=5MB,

MAXSIZE=50MB,

FILEGROWTH=20% ),

(NAME=prim_sub_dat2,

FILENAME=‘E:\练习数据库\prim_sub2_dat.ndf’, SIZE=5MB,

MAXSIZE=50MB,

FILEGROWTH=20% ),

FILEGROUP Grouptest1

(NAME=group1_sub1,

FILENAME=‘E:\练习数据库\group1_sub1_dat.ndf’, SIZE=5MB,

MAXSIZE=50MB,

FILEGROWTH=5MB ),

(NAME=group1_sub2,

FILENAME=‘E:\练习数据库\group1_sub2_dat.ndf’, SIZE=5MB,

MAXSIZE=50MB,

FILEGROWTH=5MB ),

FILEGROUP Grouptest2

(NAME=group2_sub1,

FILENAME=‘E:\练习数据库\group2_sub1_dat.ndf’,

SIZE=5MB,

MAXSIZE=50MB,

FILEGROWTH=15% ),

(NAME=group2_sub2,

FILENAME=‘E:\练习数据库\group2_sub2_dat.ndf’, SIZE=5MB,

MAXSIZE=50MB,

FILEGROWTH=15% )

LOG ON

(NAME=testbase2_log,

FILENAME=‘E:\练习数据库\testbase2_log_file.ldf’, SIZE=5MB,

MAXSIZE=25MB,

FILEGROWTH=5MB )

GO2. 分离数据库

exec sp_detach_db testbase1,true

3. 备份数据库

分离数据库后,可按一般备份过程实施备份,其文件目录如下: e:\ 练习数据库\testbase1_data.mdf

e:\ 练习数据库\testbase1_log.ldf

4. 附加数据库

EXEC sp_attach_single_file_db @dbname=’testbase1’, @physname=’e:\练习数据库\testbase1_data.mdf ’

5. 删除数据库

DROP DATABASE testbase1

更多相关推荐:
数据库系统及应用上机实验报告

数据库系统及应用上机实验报告实验1一实验目的理解SQLServer数据库的存储结构掌握SQLServer数据库的建立方法和维护方法二实验内容在SQLServer环境下建立数据库和维护数据库三程序源代码1CREA...

数据库上机实验报告sql server 20xx

课程代码1010000450数据库Database学分3总学时48实验学时16面向专业信息与计算科学数学与应用数学一实验教学目标数据库是计算机科学与技术专业的专业必修课程课程内容主要包括数据模型关系代数关系数据...

数据库上机实验报告 sql server 20xx

数据库上机实验报告实验一数据库实验11创建数据库实验目的1使用交互方法创建数据库2使用TransactSQL创建数据库3指定参数创建数据库4查看数据库属性实验内容1交互创建数据库1数据库名称为jxsk2查看数据...

数据库上机实验操作步骤

数据库系统原理上机实验预备知识一本实验指导书采用的数据库例子见本课程参考用书数据库系统概论第三版P59StudentCourseSC数据库一个学生可以修多门课程一门课程可以被多个学生选修则学生课程之间的ER图如...

数据库上机实验报告

数据库基础课堂实验报告20xx20xx学年第1学期班级姓名学号上机前准备充分不充分未准备上机考勤全到缺次上机操作认真不认真实验计划完成部分完成未完成实验报告完成情况全部按时完成部分完成基本未提交实验报告撰写质量...

数据库实验报告

消除冲突和冗余后的E-R图三.逻辑结构设计stuunion(uno,uname,uyear,uplace)student(sno,sname,sage,clno)sjoin(uno,sno,joinyear)c…

SQL Server20xx 上机实验报告

SQLServer数据库设计实验指导实验1第一部分SQLServer管理工具和实用程序一实验目的掌握SQLServer管理工具和实用程序的使用方法及步骤二实验内容1服务器管理器的功能及其使用方法2企业管理器的功...

数据库课程上机实验一报告

数据库原理与设计实验报告实验名称数据库DDL语言实验专业计算机科学与技术班级计20xx3班学号20xx2473学生姓名唐庄任课教师朱焱老师辅导教师周政20xx年11月18日一实验目的1熟练使用SQL定义子语言以...

数据库上机实验指导(实验一)

本科实验指导书实验名称数据库原理与技术开课学院计算机学院国防科学技术大学训练部制一DBA基本操作3一ORACLE基本操作31安装与启动32SQLPlus启动与登录33OEM启动与登录34数据字典查询45创建数据...

数据库系统设计上机实验报告

数据库系统设计上机实验报告院系人文经管学院专业信息管理和信息系统上机实习报告目录一上机实验报告简介21上机实验时间安排22上机实验地点23上机实验情况介绍2二上机实验操作内容21操作对象22学生数据库的创建33...

数据库T-SQL上机实验及代码

实验5TSQL程序函数存储过程与触发器实验目的与要求1掌握TSQL程序编写的基本方法2掌握SQLSERVER中自定义函数存储过程触发器的使用实验准备实验数据实验2创建的数据表及录入的数据记录实验内容与步骤1在数...

重邮 数据库上机实验7

实验七综合练习一实验目的熟练掌握SQL的数据定义数据操作查询功能二实验内容1启动SQLserver20xx服务器利用SQLServerManagementStudio管理器中提供的附加功能附加文件夹中提供的数据...

数据库上机实验报告(28篇)