数据库实验三作业及答案
- 格式:docx
- 大小:46.71 KB
- 文档页数:4
实验三MySQL数据库创建与维护一.实验目的⚫了解MySQL数据库的逻辑结构和物理结构⚫进一步理解关系表及数据完整性约束的概念、索引的概念⚫掌握创建和维护数据库、数据表的方法⚫掌握数据库SQL脚本的转储方法和使用脚本重建数据库的方法二.实验环境及素材⚫MySQL和Navicat for MySQL⚫bookstore数据库设计文档(参见10.1节)三.实验内容1.创建一个名称为bookstore的数据库,支持网上书店系统的信息管理。
提示:注意,应选择utf8 - -UTF-8 Unicode字符集及utf8_general_ci排序规则。
解析:本实验练习通过“MySQL”创建数据库的方法。
注意这里没有要求存放位置,主数据库文件和日志文件的默认存放位置在:C:\ProgramData\MySQL\MySQL Server 5.x\Data下。
系统为bookstore数据库创建一个文件夹,在其中为每个表创建两个文件“表名.frm”和“表名.ibd”。
如果要存放到指定位置,需要先修改MySQL安装目录下的my.ini文件中的datadir可以指向自定义的文件夹。
然后再创建的数据库文件将存放在指定位置。
参考步骤:①在Navicat for MySQL右击左栏的连接,选择“新建数据库”菜单命令。
②在对话框中填写数据库的基本信息即可创建数据库。
注意必须选用“utf8 - -UTF-8 Unicode”字符集及“utf8_general_ci”排序规则。
③单击“确定”按钮,即创建完成bookstore数据库创建。
验证步骤:①在左栏数据库列表中可查看到bookstore数据库。
②右击bookstore数据库选择“数据库属性”快捷菜单,出现该数据库属性对话框,可以查看基本信息,这时也可对数据库的一些属性进行修改。
③在Windows中查看磁盘C:\ProgramData\MySQL\MySQL Server 5.x\Data文件夹,可看到bookstore子文件夹和其下的db.opt文件。
实验内容:实验一:数据库的操作使用Management Studio和sql语句分别完成以下操作:1.创建一个名为“SM”的数据库,数据文件初始大小为3MB,最大为50MB,数据库自动增长,增长方式按10%;日志文件初始大小为2MB,数据大小不受限制,按1MB增长。
create database smon(name='smdata',filename='e:\smdata.mdf',size=3,maxsize=50,filegrowth=10%)log on(name='smlog',filename='e:\smlog.ldf',size=2,maxsize=unlimited,filegrowth=1)2.修改数据库“SM”,将数据文件名改成“sm_data”,初始大小改成5MBalter database smmodify file( name='smdata',newname='sm_data',size=5)3.分别查看数据库“SM”,该数据库中的文件和文件组。
exec sp_helpfile smexec sp_helpfilegroup sm4.删除数据库“SM”。
drop database sm实验二:创建表1. 在数据库SM中创建学生表student,课程表course,选课表scstudent(sid,sno,clno,sname,ssex,sage,sbir)说明:sid int identity(1,1) 序号sno 为主关系键,为字符类型学号clno 字符类型,班级号sname 字符类型,并不为空ssex 字符类型,check的值的范围为男女sbir 日期类型出生日期sage int;use smcreate table student( sid int identity(1,1),sno char(10) constraint pk_st primary key,clno char(10),sname varchar(20) not null,ssex char(2) constraint ck_ssex check(ssex in('男','女')),sbir datetime,sage int)course(cno,cname,ccredits,ctno,cpno,ctime)说明:cno 字符类型,主关系键cname 字符类型,唯一键ccredits 学分,精确数值型,精确长度为2,小数位为1ctno ,cpno 字符类型ctime 整型create table course(cno char(4) constraint pk_c primary key,cname varchar(20) constaint uk_cname unique,ccredit decimal(2,1),ctno char(2),cpno char(4),ctime tinyint)sc(sno,cno,score)说明:sno+cno为主键,并且sno是student的外部键,cno是course的外部键。
实验三数据更新、视图、权限管理实验3.1 数据更新1 实验内容(1) 使用INSERT INTO语句插入数据,包括插入一个元组或将子查询的结果插入到数据库中两种方式。
(2) 使用SELECT INTO语句,产生一个新表并插入数据。
(3) 使用UPDATE语句可以修改制定表中满足WHERE子句条件的元组,有三种修改的方式:修改某个元组的值;修改多个元组的值;带子查询的修改语句。
(4) 使用DELETE语句删除数据:删除某一个元组的值;删除多个元组的值;带子查询的删除语句。
2 实验步骤在数据库School上按下列要求进行数据更新可在SQL代码前加下面两句SQL语句,用于确保当前使用的是School数据库Use Schoolgo(1)使用SQL语句向STUDENTS表中插入元组(编号:12345678 名字:LiMing EMAIL:LM@年级:2002)。
Insert into STUDENTS values('12345678','LiMing','LM@','2002')(2)对每个课程,求学生的选课人数和学生的最高成绩,并把结果存入数据库。
使用SELECTINTO和INSERT INTO两种方法实现。
Insert into:create table Courses_maxScore(cid char(20),Count_courses int,maxScore int)insert into Courses_maxScore (cid,Count_courses,maxScore)select cid,count(*)as Count_courses,max(score)as maxScore from CHOICES group by cidselect*from Courses_maxScoreSelect into:select cid,Count_courses,maxScore into cnCourses_maxScore from Courses_maxScoreselect*from cnCourses_maxScore(3)在STUDENTS表中使用SQL语句将姓名为LiMing.的学生的EMAIL改为LM@。
实验三数据库数据的维护实验实验要求1.用Transact-SQL语句、数据导入、SQL Server Management Studio(企业管理器)输入的方法对所给定的8张表的数据输入到数据库中。
自行决定每张表的数据导入办法,但每种方法各征对二或三张表第一种:用SQL语句执行,如果一条一条信息Insert的话,工作量大,而且之后的题目也有执行,这里就不重复了。
如果用总导入语句,如下图所示,但由于某种原因服务器拒绝了我的请求,我还不知道怎么解决,望老师指点。
第二种:用企业管理器导入,快捷便利,过程如下。
图结果所示2.用Transact-SQL向Course表中插入一条记录,course_name为空,看运行的结果。
由于Course_name有not null约束,所以插入一条course_name为空的语句会报错。
语句如下:3.用Transact-SQL修改Course表中credit为5的记录,将其credit改为7, credit小于4的改为2,看运行的结果由于credit受到1<=credit<=6约束,所以,改为7的语句无法执行。
而改为四的语句不违反完整性约束,所以语句执行成功。
4.删除一条学生记录,看运行结果,对运行结果进行分析。
由于student_course中的student_id参照了student中的student_id,所以不能删除student中的记录。
5.用Transact-SQL完成将编号为dep04_b001的课程的选修信息插入到一个新的选课信息表中。
建立新表:6.用Transact-SQL完成删除单片机原理课程的选课信息,分析运行结果。
完成实验报告,包括实验内容、实验步骤、实验结果等。
实验名称:数据库的查询实验一、实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
二、实验内容和原理1. P74第5题2. 用Transact-SQL语句表示下列操作.在学生-课程库中实现其数据查询操作:(1)求数学系学生的学号和姓名。
(2)求选修了高等数学的学生学号、姓名和成绩。
(3)求选修C1课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)求选修课程C1且成绩在80~90分之间的学生学号、姓名及成绩,并将成绩乘以系数0.8输出。
(5)求数学系或计算机系姓张的学生的信息。
(6)求缺少了成绩的学生的学号和课程号。
(7)求C1课程的成绩高于张三的学生学号和成绩。
(8)求其他系中比计算机系学生年龄都小的学生。
(9)查询选修了全部课程的学生的姓名。
(10)求至少选修了学生“张三”所选修的全部课程的学生学号和姓名。
(11)查询每一门课的间接先行课(即先行课的先行课)。
三、实验环境硬件:计算机软件:Windows 2000和SQL Server 2000四、算法描述及实验步骤1.P74第五题(1)求供应工程j1零件的供应商号码sno;在查询分析器的命令窗口中输入:select distinct snofrom spjwhere jno='j1'(2)求供应工程j1零件p1的供应商号码sno;在查询分析器的命令窗口中输入:select distinct snofrom spjwhere jno='j1' and pno='p1'(3) 求供应工程j1零件为红色的供应商号码sno;在查询分析器的命令窗口中输入:select distinct snofrom spj,pwhere jno='j1' and spj.pno=p.pno and color='红'(4)求没有使用天津供应商生产的红色零件的工程号jno;在查询分析器的命令窗口中输入:select distinct j.jnofrom spj,s,p,jwhere j.jnonot in(select distinct j.jnofrom spj,s,p,jwhere spj.pno=p.pno and spj.sno=s.sno and spj.jno=j.jno and s.city='天津' and color='红' )(5)求至少用了供应商s1所供应的全部零件的工程号jno。
评分 签名 日期
实验报告
课程名称 数据结构 实验名称 数据表的管理(二) 专业班级 信管1001 姓 名 学 号 实验日期 实验地点 第2页 共 4页
一、实验目的 1. 复习数据表的创建与修改的操作方法 2. 熟悉索引的类型和用途 3. 掌握索引的创建与修改方法 二、实验内容 1.修改数据表 2.创建索引 3.修改索引 4.删除索引 三、实验环境 Windows XP操作系统、Microsoft SQL Server2005 四、相关知识 索引是依赖数据表建立的,一个数据表的存储包括两个组成部分,一部分是用来存放数据的数据页,另一部分是用来存放索引的索引页。通常索引页比数据页的数据量要小得多,当进行数据查询时,SQL Server 先去搜索索引页,从中找到所需的数据指针,再通过指针从数据页中读取数据。索引提供指针以指向存储在表中指定列的数据值,然后根据指定排序次序排列这些指针。合理地利用索引,将大大提高数据库的检索速度和数据库的性能。但是,享受索引带来的好处是有代价的,一是带索引的表在数据库中会占据更多的空间,二是为了维护索引,对数据进行插入、修改、删除等操作的命令所花费的时间会更长些。因此,在设计和创建索引时,要确保对性能的提高程度大于在存储空间和处理资源方面所付出的代价。 1. 索引的创建 数据的索引可以在“Microsoft SQL Server Management Studio”的【对象资源管理器】 中展开【数据库】,然后再展开要在其中建表的数据库文件,再展开【表】和相应的数据表,然后在【索引】上右击鼠标,选择【新建索引】,在新建索引对话框中设置【索引名称】、【索引类型】、【唯一】及【索引键列】,就可以完成索引的创建,或者在查询编辑器中输入CREATEINDEX 语句也可以实现给表创建索引。 建立索引的常用命令格式为: CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED] INDEX ON ([][,[] ]„); 其中,指定要建索引的基本表名字,索引可以建立在该表的一列或多列上,各 列名之间用逗号分隔,用指定索引值的排列次序,升序:ASC,降序:DESC。缺省 值为ASC。 UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录。 CLUSTERED 表示要建立的索引是聚集索引。 NONCLUSTERED 表示要建立的索引为非聚集索引。 注意: (1)每张表只能有一个聚集索引,并且应该最先建立。 (2)创建索引所需要的空间来自用户数据库,所以要保证要有足够的空间创建聚 集索引。 (3)为一个表的创建主键字段和UNIQUE 字段约束后所会自动生成相应的索引。 (4)默认设置时不是建立聚集索引,而是建立的非聚簇索引。一个表中最多可以 创建249 个非聚集索引。 建立索引时,不选参数CLUSTERED,则建立的是非聚集索引,表的物理顺序与索引顺 序不一致,表中的数据没有按照索引的顺序而排列,索引是由具有层次性的索引页面组成的。 2. 索引的修改 T-SQL 语言中提供了ALTER INDEX 语句来修改索引,其主要代码为: ALTER INDEX {index_name|ALL} --指定索引名或所有索引 ON[database_name].table_or_view name --指定数据表或视图 {REBUILD --重新生成索引 [ [ WITH (PAD_INDEX = { ON | OFF } --设置是否使用索引填充 | FILLFACTOR = fillfactor --设置填充因子大小 | SORT_IN_TEMPDB = { ON | OFF } --是否在tempdb 数据库中存储临时排序结果 | IGNORE_DUP_KEY = { ON | OFF } --是否忽略重复的值 | STATISTICS_NORECOMPUTE = { ON | OFF } --设置是否自动计算统计信息 第3页 共 4页
实验三表操作实验目的:1.掌握使用字段属性中的查阅字段。
2.学会导入外部数据。
3.学会查找、替换。
实验内容:在本地磁盘D盘新建文件夹,并以“学号姓名”命名,实验所有操作,请在该文件夹内完成。
(如果该文件夹已存在并有上次实验的内容,请清除。
将下载的“实验三数据库”拷贝到“学号姓名”文件夹中进行实验操作。
)1、在“实验三”数据库中,创建“学生”表。
表结构:其中:a.主键:也称主关键字(primary key),是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。
注意:一个表只能有一个主键,但是主键可以是一个字段或包含多个字段的集合,并且主关键字的列不能包含空值。
操作步骤:1)选择“创建”选项卡中的“表格”选项组内的“表设计”按钮,打开“表设计视图”。
2)打开表的设计视图,按上方表结构所示的内容,在字段名称列中输入字段名称,在数据类型列选择相应的数据类型。
3)单击“保存”按钮,保存表名称为“学生”,弹出“是否定义主键”对话框,选择“否”。
4)打开“学生”表,单击“开始”选项卡上“视图”选项组中的“设计视图”按钮,切换到“学生”表的设计视图,做进一步的修改。
5)分别选择学号、姓名字段,按要求修改字段大小。
6)选择“性别”字段,在下面字段属性区域,选择“字段大小”,输入2;输入默认值为“男”。
7)选择“年龄”字段,在下面字段属性区域,选择“字段大小”,点击右边向下三角形,选择“字节”;输入默认值为“21”;选择“有效性规则”,输入括号内的规则(>=20 and <=70 或between 20 and 70),注意:必须在英文输入法状态输入小于号。
如图3-1所示。
图3-1 “年龄”的字段属性8)添加主键,鼠标左键点击“学号”字段前方字段选择区,选中“学号”字段,选择“表格工具/设计”选项卡,选择“工具”选项组中的“主键”选项,即可在学号字段前方添加主键标识,如图3-2所示。
图3-2 添加主键9)保存。
数据库练习三答案统计查询统计查询是指使用关键字配合select语句查询时,在查询后的结果中出现了不是原始数据表中数据的记录信息,这些记录信息是根据需求,借助不同关键字对原始数据表中数据信息做计算处理而得到的。
1 聚合函数查询2 查询结果排序排序操作可以使用order by语句实现,它可以出现在from语句或者where 语句的后面,语法格式如下:order by 字段名1 [ , 字段名2?] [ asc | desc ]3.查询结果分组小计分组小计语句group by可以出现在from语句或者where语句后面,语法格式如下: group by 字段名列表 [ having 条件表达式]? 后面。
? ?课堂题目:1、统计“课程表〞中总的课程数,总学分,最高学分,最低学分,平均学分〔无列名〕select COUNT(*),SUM(学分),MAX(学分),MIN(学分) from 课程表having语句对分组小计后的结果做进一步的条件筛选,跟随在group by 通常在select语句后面加聚合函数来表示求值小计。
出现在select语句后的字段名,要么放在聚合函数中,要么放在group by语句后面,否那么将提示错误。
2、统计“课程表〞中总的课程数,总学分,最高学分,最低学分,平均学分〔加列名,三种方法〕select COUNT(*)as '总课程数',SUM(学分)as'总学分',MAX(学分)as '最高学分',MIN(学分)as'最低学分' from 课程表3. 查询“课程表〞中学分最高的前三条记录。
〔降序 desc〕select top 3 * from 课程表order by 学分 desc4. 查询“课程表〞中学分最低的前三条记录中的‘课程名称’和‘学分’。
〔升序 asc 默认〕select top 3 课程名称,学分 from 课程表order by 学分 desc5. “选课成绩表〞中,查询结果按照’学生编号’分类,统计出每个学生的成绩总成绩和平均成绩。
万常选数据库实验参考答案SET DATEFORMAT YMDGO--选择数据库USE OrderDBGO--实验一:简单查询--1.1 查询所有业务部门的员工姓名、职务、薪水。
SELECT employeeName,headShip,salaryFROM Employee--1.2 查询名字中含有“有限”的客户姓名和所在地。
SELECT customerName,addressFROM Customer--1.3 查询出姓“王”并且姓名的最后一个字为“成”的员工。
SELECT *FROM EmployeeWHERE employeeName LIKE '王%成'--1.4 查询住址中含有上海或南昌的女员工,并显示其姓名、所属部门、职称、住址,其中性别用“男”和“女”显示。
SELECT employeeName AS 姓名, department AS 所属部门, headShip AS 职称, address AS 住址, CASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' END AS 性别FROM Employee--1.5 在表sales中挑出销售金额大于等于5000元的订单。
SELECT *FROM OrderMasterWHERE orderSum>5000--1.6 选取订单金额最高的前10%的订单数据。
SELECT TOP(10) PERCENT *FROM OrderMasterORDER BY orderSum--或SELECT TOP 10 PERCENT orderNo,SUM(quantity*price) AS totalPrice FROM OrderDetailGROUP BY orderNOORDER BY SUM(quantity*price) DESC--1.7 查询出职务为“职员”或职务为“科长”的女员工的信息。
沈阳工程学院学生实验报告(课程名称:数据库系统原理)实验题目:数据查询(一)班级学号姓名日期201年月日地点指导教师一、实验目的掌握SQL查询命令:主要针对单表查询。
二、实验环境Oracle10g数据库系统。
三、实验内容与要求使用Select命令完成下列数据查询。
简单查询:⑴查询全体顾客的编号和姓名。
⑵查询全部商品的详细记录。
⑶查询顾客的姓名和出生年份。
⑷查询购买了商品的顾客的编号。
⑸查询职业(g_work)为“教师”的顾客的姓名。
⑹查询“沈阳市”年龄在20岁以下的顾客的编号和年龄。
⑺查询年龄在20—22岁的顾客的编号。
⑻查询“沈阳”、“大连”、“北京”的顾客信息。
⑼查询姓"王"的顾客的信息。
⑽查询购买商品编号为“02”的顾客的编号和购买数量,结果按顾客编号升序,购买数量降序排列。
⑾查询顾客总人数。
⑿查询购买商品编号为“02”的一次最高购买量。
⒀查询购买2次和2次以上商品的顾客编号。
四、实验过程及结果分析⑴查询全体顾客的编号和姓名,如图1所示。
select guestid,guestnamefrom guest;图1⑵查询全部商品的详细记录,如图2所示。
select *from goods;图2⑶查询顾客的姓名和出生年份,如图3所示。
Select guestname,2016-g_agefrom guest;图3⑷查询购买了商品的顾客的编号,如图4所示。
Select distinct guestidFrom purchase;图4⑸查询职业(g_work)为“教师”的顾客的姓名,如图5所示。
Select guestnameFrom guestWhere g_work='教师';图5⑹查询“沈阳市”年龄在20岁以下的顾客的编号和年龄,如图6所示。
Select guestid,g_ageFrom guestWhere g_age<20 and g_addr='沈阳';图6⑺查询年龄在20—22岁的顾客的编号,如图7所示。
实 验 三 视图、索引及数据更新 一.实验目的: 熟练掌握索引的建立与删除的方法,熟练掌握SQL的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。 二.实验属性(验证性) 1.了解并掌握SQL查询分析器及企业管理器的使用; 2.掌握基本表的定义、删除与修改。 三. 实验原理 SQL语言应用。 四.实验步骤: (1) 启动SQL查询分析器; (2) 选择SQL SERVER后,按确认; (3) 选择数据库; (4) 验证如下例子: 1 建立索引
3.1 为学生选课数据库中的Students,Courses,Reports三个表建立索引。其中Students表按Sno(学号)升序建唯一索引Stu_Sno,Courses表按Cno(课程号)升序建唯一索引Cou_Cno,Reports表按Sno(学号)升序和Cno(课程号)号降序建唯一索引Rep_Scno。 3.2 在基本表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引Stu_Sname,而且Students中的物理记录将按照Sname值和Sno值的升序存放。 3.1 create unique index Stu_no on Studnets(Sno); create unique index Cou_Cno on Courses(Cno); create unique index Rep_Scno on Reports(Sno,Cno desc); 3.2 create cluster index Stu_Sname on Students(Sname,Sno);
2 删除索引 3.3 删除基本表Reports上的Rep_SCno索引。 drop index Reports.Rep_SCno;
3 建立视图 3.4 建立数学系学生的视图C_Student,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。 3.5 建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图Student_CR。 3.6 定义一个反映学生出生年份的视图Student_birth。 3.4 create view C_Student as select Sno,Sname,Sage,Sdept from Students where Sdept ='数学'; 3.5 create view Student_CR as select Students.Sno,Sname,Cname,Grade from Student,Courses,Reports where Students.Sno=Reports.Sno and Reports.Cno =Courses.Cno 3.6 create view Student_birth as select 2008-Sage 出生年份 from Students 4 删除视图 3.7 删除视图Student_CR。 drop view Student_CR; 5 查询视图 3.8 在数学系的学生视图C_Student中找出年龄(Sage)小于20岁的学生姓名(Sname)和年龄(Sage)。 3.9 在Student_CR视图中查询成绩在85分以上的学生学号(Sno)、姓名(Sname)和课程名称(Cname)。
数据库实验和参考答案上机实验三1.在“学生管理数据库”中用查询分析器创建p82页的课程数据表(表名为kcb),并输入数据内容。
2.用查询分析器在student表中增加一个字段:“电话号码”,字符型,并设置默认值为“1111111”。
3.用查询分析器删除kcb表的主键4.用企业管理器或查询分析器修改course表,设置约束:学时>=学分*16。
5.用查询分析器修改学生管理数据库中的students_dat文件增容方式为一次增加3MB.6.将“学生管理数据库”更名为“学生管理”。
7.将“学生管理”数据库备份到外存中。
8.将“学生管理”数据库的数据导出为excel文件,并保存在外存中。
9.为course表中的课程名建立唯一性索引。
10.将“学生管理”数据库从系统中分离出来。
11. 将“学生管理”数据库附加到企业管理器中。
上机实验四1.分别查询学生表和学生修课表中的全部数据。
2.查询计算机系的学生的姓名、年龄。
3.查询选修了c01号课程的学生的学号和成绩。
4.查询成绩在70到80分之间的学生的学号、课程号和成绩。
5.查询计算机系年龄在18到20之间且性别为“男”的学生的姓名、年龄。
6.查询0412101号学生的修课情况。
7.查询c01号课程成绩最高的分数。
8.查询学生都选修了哪些课程,要求列出课程号。
9.查询Northwind数据库中orders 表的OrderlD、CustomerID和OrderDate,并将最新的定购日期(OrderDate)列在前边。
10.查询Northwind数据库中orders 表的ShipCountry列以B,C,D,F 开始且第三个字符为“a”的OrderlD、CustomerID和ShipCountry的信息。
11.查询Northwind数据库中orders 表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字母是“a”的OrderlD、CustomerlD和ShipCountry的信息。
数据库系统管理与维护第三次作业 数据库系统管理与维护(Oracle)第三次作业 1. 实例启动后,数据库处于()阶段。 A. MOUNT B. OPEN C. NOMOUNT D. None 2. 当Oracle数据库启动时,如果由于操作系统的原因,一个数据文件或重做日志文件无法正常打开或发生故障,将发生怎样的情况?() A. oracle将返回错误信息,并且打开数据库 B. oracle将返回错误信息,不能打开数据库 C. oracle将返回错误信息,并自动启动数据库恢复程序 D. oracle将忽略这些文件,进入正常工作状态 3. 数据库实例启动的三个阶段依次是()。 A. OPEN,NOMOUNT,MOUNT B. NOMOUNT,MOUNT,OPEN C. NOMOUNT,OPEN,MOUNT D. MOUNT,OPEN,NOMOUNT 4. Diane 是一个新入行的DBA,当数据库服务器正在运行时,她执行了shutdown命令,然后她发现Oracle在等待所有已连接到数据库的用户断开连接。请问她是采用哪种方式关闭数据库的?() A. NORMAL B. ABORT C. IMMEDIATE D. NONE 5. 数据库启动过程中何时读参数文件?() A. 打开数据库时 B. 装载数据库时 C. 实例启动时 D. 每个阶段都要读 6. 以下哪条命令用于删除一个约束?() A. Alter TABLE MODIFY CONSTRAINT B. Drop CONSTRAINT C. Alter TABLE Drop CONSTRAINT D. Alter CONSTRAINT Drop 7. 以下关于唯一性约束和主键约束之间的不同的说法哪个是正确的?() A. 唯一性约束会自动生成一个唯一索引,主键约束则会自动生成一个唯一或非唯一索引 B. 主键约束列允许取空值,唯一性约束列不允许取空值 C. 主键约束可以使用已经存在的索引,而唯一性约束则总是创建一个索引 D. 唯一性约束列允许取空值,主键约束列不允许取空值 8. 何谓模式?() A. 一系列数据库物理对象的集合 B. 一系列数据库逻辑对象的集合 C. 一系列索引的集合 D. 以上都不对 9. 位图索引最适用于以下哪种列?() A. 重复值很高的列 B. 重复值很低的列 C. 频繁插入的列 D. 频繁更新的列 10. Alter TABLE语句不能用于以下哪种情况?() A. 将表从一个表空间移到另一个表空间 B. 改变表中区的初始大小 C. 修改表名 D. 修改列名 11. 以下哪种约束不会自动创建索引?() A. 主键约束 B. 外键约束 C. UNIQUE约束 D. 以上都不对 12. 在Create USER命令中DEFAULT TABLESPACE子句用于设置()的存放位置。 A. 用户创建的数据库对象 B. 用户创建的临时对象 C. 用户创建的系统对象 D. 以上都不对 13. 以下哪个不是系统权限?() A. Select B. Drop ANY INDEX C. Create VIEW D. Create SESSON 14. 在创建用户的命令中,下列哪个关键字是限制用户可以使用的存储空间的?() A. SIZE B. NEXT_EXTENT C. MAX__EXTENTS D. QUOTA 15. 以下哪个不是预定义角色?() A. CONNECT B. DBA C. RESOURCE D. Create SESSON 16. 以下哪个不是创建用户过程中必要的信息?() A. 用户名 B. 用户权限 C. 临时表空间 D. 口令 17. 以下哪个不是Oracle 提供的权限?() A. 对象级 B. 系统级 C. 角色级 D. 公共级 18. 数据字典由以下哪项组成?() A. 表和视图 B. 用户和权限 C. 角色与视图 D. 用户与表 19. 建立表结构的SQL语句是()。 A. Create CURSOR B. Create TABLE C. Create INDEX D. Create VIEW 20. 从数据库中删除表的命令是()。 A. Drop TABLE B. Alter TABLE C. Delete TABLE D. USE 21. 以下哪一条语句可实现增加表employee的name列的长度到25?() A. Alter TABLE employee MODIFY name V ARCHAR2(25); B. Alter TABLE employee RENAME name V ARCHAR2(25); C. Alter employee TABLE MODIFY name VARCHAR2(25); D. Alter employee TABLE MODIFY(name VARCHAR2(25)); 22. 如果希望employee表原有的列name非空,应该使用以下哪条语句?() A. Alter TABLE employee ADD name NOT NULL; B. Alter TABLE employee MODIFY name NOT NULL; C. Alter TABLE employee Alter name NOT NULL; D. Alter TABLE employee Drop name NOT NULL; 23. 撤消约束的命令关键字是()。 A. Drop B. DISABLE C. ENABLE D. Alter 24. Unique关键字表示创建的是哪一种索引?() A. B树索引 B. 唯一性索引 C. 位图索引 D. 非唯一性索引 25. Create INDEX语句用来创建()。 A. 序列 B. 同义词 C. 索引 D. 视图 C~B~B~A~C~ C~D~B~A~B~ B~A~A~D~D~ B~D~A~B~A~ A~B~A~B~C~
实验三关系查询与连接首先,将sales表中tot_amt的值计算出来。
update sales set tot_amt=0goselect order_no,tot=sum(qty*unit_price)into aa1from sale_itemgroup by order_nogoselect * from aa1goupdate sales set tot_amt=totfrom sales,aa1where aa1.order_no=sales.order_nogo1、查找所有经理的姓名、职称、薪水。
select emp_name ,title,salaryfrom employeewhere title='经理'2、查找出姓“王”并且姓名的最后一个字为“功”的员工。
select *from employeewhere emp_name like '王%功'//3、添加一条记录至employee表(用INSERT…..INTO)。
insert into employee(emp_no,emp_name,sex,dept,title,date_hired,salary)values('E0025','彭江','M','业务','职员',1900/01/21,43200)//4、将每个员工的薪水上调3%。
update employeeset salary=salary*1.03select *from employee3、查找住在上海或北京的女员工,并显示其姓名、所属部门、职称、住址select emp_name,dept,title,addrfrom employeewhere (addr='上海市' or addr= '北京市')and sex='F'4、在表sales中挑出销售金额大于等于10000元订单select *from saleswhere tot_amt>=10000.005、选取订单金额最高的前10%的订单数据。
实验3 SQL Server 数据表的管理
一、 实验目的
1. 学会使用企业管理器和Transact-SQL语句CREATE TABLE和ALTER TABLE创建和
修改表。
2. 学会在企业管理器中对表进行插入、修改和删除数据操作。
3. 学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。
4. 了解SQL Server的常用数据类型。
二、 实验准备
1. 了解在企业管理器中实现表数据的操作,如插入、修改和删除等。
2. 掌握用Transact-SQL语句对表数据进行插入(INSERT)、修改(UPDATE)和删
除(DELETE和TRANCATE TABLE)操作。
三、 实验内容及步骤
1. 启动企业管理器,展开studentsdb数据库文件夹。
2. 在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些
表的数据结构如图1-2、图1-3和图1-4所示。
图1-2 学生基本情况表student_info
图1-3 课程信息表curriculum
图1-4 学生成绩表grade
3. 在企业管理器中创建student_info、curriculum表。
4. 在企业管理器中,将student_info表的学号列设置为主键,非空。
5. 使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建grade表。
CREATETABLEgrade
(学号varchar(4),
课程编号varchar(4),
分数decimal(5,0)
)
6. student_info、curriculum、grade表中的数据如图1-5、图1-6和图1-7所示。
图1-5 student_info的数据
图1-6 curriculum的数据
图1-7 grade的数据
7. 在企业管理器中为student_info、curriculum、grade表添加数据。
8. 使用Transact_SQL语句INSERT INTO...VALUES向studentsdb数据库的grade
表插入以下数据:
学号 课程编号 分数
0004 0001 80
答; CREATE TABLE grade
(学号 char(4),
课程编号 char(4),
分数 decimal
)
INSERT INTO grade VALUES('0004','0001','80')
9. 使用Transact_SQL语句ALTER TABLE修改curriculum表的“课程编号”列,使
之为非空。
答: ALTER TABLE curriculum
ALTER COLUMN 课程编号 char(4) NOT NULL
10. 使用Transact_SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为real。
答: ALTER COLUMN 分数 real
11. 使用Transact_SQL语句ALTER TABLE修改student_info表的“姓名”列,使其列名为
“学生姓名”,数据类型为archar(10),非空。
答:ALTER TABLE student_info
ALTER COLUMN 姓名 学生姓名
ALTER TABLE student_info
ALTER COLUMN 学生姓名 varchar(10) NOT NULL
12. 分别使用企业管理器和Transact_SQL语句DELETE删除studentsdb数据库的grade表
中学号为'0004'的成绩记录。
答:DELETE grade WHERE 学号='0004'
13. 使用Transact_SQL语句UPDATE修改studentsdb数据库的grade表中学号为
'0003'、课程编号为'0005'、分数为90的成绩记录。
答:UPDATE grade SET 分数=90
WHERE 学号='0003' and 课程编号='0005'
14. 使用Transact_SQL语句ALTER...ADD为studentsdb数据库的grade表添加一个
名为“备注”的数据列,其数据类型为VARCHAR(20)。
答:ALTER TABLE grade ADD 备注 VARCHAR(20) NULL
15. 分别使用企业管理器和Transact_SQL语句DROP TABLE删除studentsdb数据库
中的grade表。
答: DROP TABLE grade
四、 实验思考
1. 使用Transact-SQL语句删除在studentsdb数据库的grade表添加的“备注”数据
列。
DELETE FROM grade Where 学号='0004'
UPDATE grade SET 分数=90 WHERE 学号='0003' and 课程编号='0005'
ALTER TABLE grade ADD 备注 VARCHAR(20) NOT NULL
2. 在企业管理器中,studentsdb数据库的student_info表的数据输入时,如果输入相
同学号的记录将出现什么现象?怎样避免该情况的发生?
答:出现红色的感叹号。将数据一行一行的输入就可以避免。