实验5 数据查询1
- 格式:doc
- 大小:61.50 KB
- 文档页数:6
实验五数据表操作命令练习──────────────────────────────────一、实验目的和要求1.掌握数据表结构的设计、建立、修改。
2.熟悉使用有关表操作的命令。
3.了解表操作的一些应用。
二、实验内容和操作步骤(一)数据表操作前的准备先双击F:\STU\PUBLIC\VFP6\EX5下的文件EX5.EXE,然后设置VFP的默认工作目录为D:\EX5,并完成以下各操作。
最后将操作结果存入D:\EX5文件夹中。
(二)打开数据表RCDA,进行如下修改、显示、查找、复制操作。
USE RCDA EXCL1.用命令方式查看该表结构,然后打开“表设计器”,并增加“籍贯”字段。
LIST STRUCTUREMODIFY STRUCTURE( 进入“表设计器”后,增加“籍贯”字段)2.用LIST STRUCTURE 命令查看表结构。
LIST STRUCTURE3.分别用BROWSE、LIST 二种命令显示查看表内容。
BROWSELIST4.查找并显示出姓名为“王国民”的记录。
LOCA TE ALL FOR 姓名="王国民"5.查找并显示在{^1960/01/01}以后出生的,工资现状又高于2000元的记录。
LOCA TE ALL FOR 出生日期>{^1960/01/01} . AND. 工资现状>20006.复制RCDA·dbf的表结构,生成空表RCDA1·dbf。
COPY STRUCTURE TO RCDA17.复制和RCDA完全相同的表RCDA2 。
COPY TO RCDA28.关闭数据表RCDA。
USE(三)打开数据表XSCJ,进行如下修改、统计操作,然后关闭该表。
1.打开数据表XSCJ。
USE XSCJ EXCL2.计算表内每人的“平均分”。
REPLACE ALL 平均分with (高等数学+大学语文+邓小平理论+计算机应用)/4 (四)打开数据表RCDA1 ,进行如下追加、查询操作,然后关闭该表。
实验五索引和数据完整性1、目的与要求(1)掌握索引的使用方法。
(2)掌握数据完整性的实现方法。
2、实验准备(1)了解索引的作用与分类。
(2)掌握索引的创建方法。
(3)理解数据完整性的概念及分类。
(4)掌握各种数据完整性的实现方法。
3、实验容(1)建立索引。
①使用CREATE INDEX语句创建索引。
A、对YGGL数据库的Employees表中的DepartmentID列建立索引。
在“查询分析器”窗口中输入如下程序并执行。
B、在Employees表的Name列和Address列上建立复合索引。
C、对Department表上的DepartmentName列建立唯一非聚集索引。
【思考与练习】A、索引创建后在对象资源管理器中查看表的索引。
上面分别创建了Employees表和Department表的索引,在对象资源管理器中的表中将相应的表打开,在“索引”中显示该表中建立的索引。
详细结果如上面截图中显示。
B、了解索引的分类情况。
按索引的组织方式能够将索引分为聚集索引和非聚集索引两种类型。
聚集索引将数据行的键值在表排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。
非聚集索引完全独立于数据行的结构。
C、使用CREATE INDEX语句能够创建主键吗?D、在什么情况下能够看到建立索引的好处?数据库索引是为了增加查询速度而对表字段附加的一种标识。
数据库的索引并不是只有好处或者只有坏处的。
当我们的数据库足够大,恰当的建立索引就会大大的提高查询搜索的速度;在这里举个反例,像查询性别这种大量重复的字段时候,是否建立索引是没有多大区别的;还有当表数据不是很多的时候建立索引也是没有多大意义的,因为索引也是要占用资源的。
但是当我们数据库非常大时候,经常进行GROUP BY查询时候,若将GROUP BY字段上建立索引就会很大程度上面较少查询搜索所花费的时间。
②使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
实验五视图的创建和使用5.1概述5.1.1任务一理解视图的概念视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据集合形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。
视图被定义后便存放在数据库中,对视图中的数据的操作与对表的操作一样,可以对其进行查询、修改和删除,但对数据的操作要满足一定的条件。
当对视图所看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。
5.1.2任务二理解视图的优点用户可以根据自己的实际需要创建视图,使用视图有很多优点,主要有以下几点:1、简单性视图可以屏蔽数据的复杂性,简化用户对数据库的操作。
使用视图,用户可以不必了解数据库的结构,就可以方便地使用和管理数据。
那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2、逻辑数据独立性视图可以使应用程序和数据库表在一定程度上独立。
如果没有视图,应用一定是建立在表上的。
有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
3、安全性通过视图用户只能查询和修改他们所能见到的数据。
数据库中的其他数据则既看不见也取不到。
5.2创建视图创建视图的方法有三种:在创建视图前请考虑如下原则:只能在当前数据库中创建视图.视图名称必须遵循标识符的规则,且对每个用户必须为唯一.此外,该名称不得与该用户拥有的任何表的名称相同.可在其他视图和引用视图的过程之上建立视图.SQLServer 2000允许嵌套多达32级视图若要创建视图,数据库所有者必须授予用户创建视图的权限,并且用户对视图定义中所引用的表或视图要有适当的权限5.2.1任务一使用企业管理器创建视图使用企业管理器创建视图的具体操作步骤如下:1、打开企业管理器窗口,打开“新建视图”对话框。
实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。
实验5sql语句练习——图书馆数据库实验5 sql语句练习——图书馆数据库实验目的(1)了解SQL Server数据库的逻辑结构和物理结构;(2)了解表的结构特点;(3)了解SQL Server的基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库和表;(6)学会使用T-SQL语句创建数据库和表。
(7)学会使用T-SQL语句更新数据。
(7)学会使用T-SQL语句创建多种查询。
实验准备首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。
然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。
此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DA TABASE语句。
实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。
三个表的结构如图:列名说明数据类型约束说明书号图书唯一的编号定长字符串,长度为10 主键书名图书的名称定长字符串,长度为50 空值作者图书的编著者名定长字符串,长度为30 空值出版社图书的出版社定长字符串,长度为30 空值单价出版社确定的图书的单价浮点型,Float 空值读者表结构假设有10位读者列名说明数据类型约束说明读者号读者唯一的编号定长字符串,长度为10 主键姓名读者姓名定长字符串,长度为8 非空值性别读者性别定长字符串,长度为2 非空值办公电话读者办公电话定长字符串,长度为8 空值部门读者所在部门定长字符串,长度为30 空值列名说明数据类型约束说明读者号读者的唯一编号定长字符串,长度为10 外码,引用读者表的主键书号图书的唯一编号定长字符串,长度为20 外码,引用图书表的主键借出日期借出图书的日期定长字符串,长度为8 非空值归还日期归还图书的日期定长字符串,长度为8 空值主键为:(读者号,图书号)(1)用Sql语句创建图书馆数据库Create database Lab05(2)用Sql语句创建上述3个表create table book(bookId char(10)primary key,bookName varchar(50),bookWriter varchar(30),bookPublish varchar(30),bookPrice float)create table reader(readerId char(10) primary key,readerName varchar(8)not null,readerSex char(2)not null,readerOfficeTel char(8),readerDepartment varchar(30))create table 借阅表(readerId char(10),bookId char(10),checkOutTime char(8),checkInTime char(8),primary key(readerId,bookId),foreign key (readerId) references reader(readerId),foreign key (bookId) references book(bookId),)(3)基于图书馆数据库的3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加的ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949’ALTER TABLE book ADD CONSTRAINT ISBNDEF DEFAULT ('7111085949') FOR ISBN 3)删除图书表中ISBN列增加的缺省值约束alter table book drop ISBNDEF4)删除图书表中新增的ISBN列ALTER TABLE book DROP COLUMN ISBN5)查询全体图书的图书号、书名、作者、出版社和单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书的信息,其中单价打8折,并设置该列的别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0.8) as打折价from book7)显示所有借阅者的读者号,并去掉重复行select distinct readerIdfrom 借阅表8)查询所有单价在20—30元之间的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20 and 309)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish in('机械工业出版社' , '科学出版社','人民邮电出版社') 10)查询既不是机械工业出版社、人民邮电出版社、也不是科学出版社出版的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in('机械工业出版社' , '科学出版社','人民邮电出版社') 11)查询姓名的第二个字符是’建’,并且只有2个字的读者的读者号及姓名select readerId,readerNamefrom readerwhere readerName like '_建'12)查询姓名不是以‘王’、‘张’或‘李’开头的所有读者的读者号及姓名【方式一】查询出来的结果有问题!select readerId,readerNamefrom readerwhere readerName not in ('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(select readerNamefrom readerwhere readerName like'王%'or readerName like'张%'or readerName like'李%' )13)查询无归还日期的借阅信息select book.bookId,book.bookName,reader.readerId,reader.readerName,借阅表.checkOutTime as 借书时间,借阅表.checkInTime as 还书时间from 借阅表,book,readerwhere 借阅表.bookId = book.bookIdand 借阅表.readerId = reader.readerIdand 借阅表.checkInTime is null14)查询机械工业出版社图书的平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice) as 最高价,min(bookPrice) as 最低价from bookwhere bookPublish = '机械工业出版社图书'15)查询读者的基本信息及借阅情况select reader.readerId,reader.readerName ,借阅表.bookId,book.bookName,book.bookPublishfrom reader , 借阅表,bookwhere reader.readerId = 借阅表.readerIdand book.bookId = 借阅表.bookIdand 借阅表.readerId ='1000000007'16)查询至少借阅过1本机械工业出版社出版的图书的读者的读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列select r.Rno,Rname,count(borrow.Bno) 借阅册数from borrow,b,rwhere b.bno=borrow.bno and press='机械工业出版社' and borrow.rno=r.rnogroup by r.rno,Rnameorder by count(borrow.Bno) desc17)查询与‘王小平’的办公电话相同的读者的姓名/* 使用“自连接方式”求解*/select b.readerName,b.readerId,a.readerOfficeTelfrom reader a, reader bwhere a.readerName like '王小平'and a.readerOfficeTel = b.readerOfficeTel/*18)查询所有单价小于平均单价的图书的书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select avg(bookPrice) as averagePricefrom book)19)查询‘科学出版社’的图书单价比‘机械工业出版社’最高单价还高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like '科学出版社' and bookPrice >(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')20)查询‘科学出版社’的图书中单价比‘机械工业出版社’最低单价高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')and bookPublish like '科学出版社'21)创建机械工业出版社图书的视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish = '机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者的读者号和总借阅本数CREATE VIEW CountViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2的读者号和总借阅本数CREATE VIEW 借阅统计视图ViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerIdHA VING COUNT(*) >2。
梁文娟目录实验1 用E-R图设计数据库 (3)实验2 熟悉SQL Server 2000环境 (4)实验3 创建数据库及表 (19)实验4 数据查询 (34)实验5 视图的定义和操作 (36)实验6 实现数据完整性 (38)实验7 实现数据库安全管理 (41)实验8 实现触发器 (45)实验9 数据库备份与恢复 (47)实验10 数据库设计综合应用 (48)实验1 用E-R图设计数据库实验目的与要求:1.掌握E-R模型的基本概念和图形的表示方法。
2.掌握将现实世界的事物转化成E-R图的基本技巧3.熟悉关系数据模型的基本概念。
4.掌握E-R图转化成关系表的基本方法实验环境:1.Windows 2000/XP2.SQL Server 2000实验内容:1.根据需求确定实体、属性和联系。
2.将实体、属性和联系转化为E-R图。
3.将E-R图转化为表。
实验步骤:1.设计能够表示学生、课程关系的数据库。
1)确定学生、课程实体的属性。
2)确定学生、课程实体的联系以及联系类型。
3)画出学生、课程关系的E-R图。
2.设计能够表示商品、顾客和商品生产厂家关系的数据库。
1)确定商品、顾客和商品生产厂家实体的属性。
2)确定商品、顾客和商品生产厂家的联系以及联系类型。
3)画出商品、顾客和商品生产厂家关系的E-R图。
讨论:E-R图和关系表之间的关系。
实验2 熟悉SQL Server 2000环境一、实验目的●掌握SQL Server 2000的安装●了解SQL Server 2000的组织结构和操作环境●熟悉SQL Server 2000的基本使用方法二、背景知识SQL Server 2000是Microsoft公司推出的高性能的客户端/服务器结构的关系数据库管理系统,它继承了SQL Server 7.0版本的高性能、可靠性、易用性和可扩充性的优点,同时又增加了一些新的特性,使其成为一种领先的数据库管理系统,可用于联机事务处理(OLTP)、数据仓库及电子商务等。
实验5 数据库的更新操作一、目的和要求(1) 学会在企业管理器中对数据库表进行插入、修改和删除数据操作。
(2) 学会使用T-SQL语句对数据库表进行单个数据插入、成批数据插入、修改和删除数据操作,掌握删除表的方法。
(3) 掌握在子查询的基础上创建新表。
(4) 了解数据更新操作时要注意数据完整性。
二、背景知识:(1)单个数据插入语句INSERTINTO 表名 [(属性列1,属性列2 … )]VALUES (常量1 ,常量2 … )(2)成批数据插入语句INSERTINTO 表名 [(属性列1,属性列2 … )]子查询(3)删除数据语句DELETEFROM 表名WHERE 删除限定条件(4)更新数据语句UPDATE 表名SET 属性列1=常量1,属性列2=常量2...WHERE 更新限定条件三、实验内容通过企业管理器或查询分析器,对XSGL数据库,利用增删改语句,对数据库进行数据维护。
四、实验步骤1.在企业管理器中向数据库XSGL的student表加入如表5-1所示的数据。
表 5-1 student表记录方法:在企业管理器中,展开“XSGL”数据库,单击“表”目录,在右面的详细窗格中,右击表“student”,在快捷菜单中选择“打开表”,并在其及联菜单上,单击“返回所有行”,将鼠标移动到空白记录上,逐字段输入各记录值,输入完后,关闭表窗口。
2.建立一个新表‘成教表’chengjiao,结构与student表相同。
CREATE TABLE chengjiao(SNO char (8) not null unique,SNAME char(10),SEX char(2),DNO char(8),AGE smallint,BIRTHDAY datetime)3.将一个新学生(学号:‘20067027’,姓名:‘张三’,年龄:20,所在系编号:‘0002’ )插入到学生表中。
INSERT INTO student(SNO,SNAME,AGE,DNO)VALUES ('20067027','张三',20,'0002')4.按如下语句插入另外两个同学的信息到成教表中。
实验五表连接查询1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。
select Sname,Cnamefrom supplier,commodity,supplyingwhere supplier.Sid=supplying.Sid and commodity.Cid=supplying.Cid2.使用连接查询查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select distinct(sname)from stock,Employee,supplierwhere stock.Eid=Employee.Eid and stock.Sid=supplier.Sid and Ename like'李云'3.使用关键字IN完成查询,要求查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select Snamefrom supplierwhere Sid in(select Sidfrom stockwhere Eid in(select Eidfrom Employeewhere Ename='李云'))4.使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。
select *from Employee left outer join stock on Employee.Eid=stock.Eid5.使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要求显示客户名称,商品名称,销售数量,商品单价,没有购买商品的客户也要显示。
select CUname,Cname,SDnumber,SDpricefrom customer left outer join sale on customer.CUid=sale.CUidleft outer join saleDetail on sale.SAid=saleDetail.SAidleft outer join commodity on saleDetail.cid=commodity.cid6.请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。
实验五数据查询1(2学时)
实验目的
1、熟练掌握SQL语句的基本格式
2、熟练使用SQL的SELECT语句在单表中进行数据查询。
实验内容
任务一:参考教学课件例题,掌握SQL语句的基本格式
任务二:使用SQL的SELECT语句在单表中进行数据查询
1.熟悉XSCJ数据库,清楚数据库中“班级表”、“课程信息表”、“成绩表”、“系部表”和“学生基本信息表”五个表各自的结构。
a. 班级表,包括班级编号、系部编号、班级名称
b.课程信息表,包括课程编号、课程名称、学分、学时、考核类型、任课教师、系部编号、上课时间、
c.成绩表,包括学号、课程编号、成绩
d.系部表,包括系部编号、系部名称
e.学生基本信息表,包括学号、姓名、性别、族别、出生日期、政治面貌、家庭住址、联系电话、邮政编码、班级编号
2.用sql语句完成下列数据的查找,并把相应代码记录下来。
1、查询学生基本信息表中姓名、家庭住址和联系电话三个字段的内容;
USE XSCJ
SELECT 姓名,家庭住址,联系电话
FROM 学生基本信息表
2、从学生基本信息表中查看政治面貌,要求取消政治面貌代码相同的行;
USE XSCJ
SELECT distinct 政治面貌
FROM 学生基本信息表
3、显示成绩表的前10行;
USE XSCJ
SELECT top 10*FROM 成绩表
4、显示课程信息表的前10行的课程名称和学分;
USE XSCJ
SELECT top 10课程名称,学分
FROM 课程信息表
5、查询学生基本信息表中学号为000034的家庭住址;
USE XSCJ
SELECT 家庭住址
from 学生基本信息表
where 学号=000034
6、查询学生基本信息表中学号为000034的姓名、家庭住址和联系电话;
USE XSCJ
SELECT 姓名,家庭住址,联系电话
from 学生基本信息表
where 学号=000034
7、从学生基本信息表中查看1985年1月1日以后出生的学生姓名、家庭住址和联系电话;
USE XSCJ
SELECT 姓名,家庭住址,联系电话
from 学生基本信息表
where 出生日期>'1985-01-01'
8、查询成绩在70分和80分之间的学生信息
USE XSCJ
SELECT*from 成绩表
where 成绩>70 and 成绩<80
方法二:where 成绩 between 70 and 80
9、查询学生基本信息表中学号为000056或者姓名为胡博的学生信息
USE XSCJ
SELECT*from 学生基本信息表
where 学号=000056 or 姓名='胡博'
10、为班级表、成绩表、课程信息表3个表各建立一个复本
USE XSCJ
SELECT* into 课程附表 from 课程信息表
SELECT* into 成绩附表 from 成绩表
SELECT* into 班级附表 from 班级表
11、利用drop语句删除班级表、成绩表、课程信息表3个表的复本
USE XSCJ
DROP table 课程附表
DROP table 成绩附表
DROP table 班级附表
12、查出民族为汉族或者回族的学生的所有基本信息
USE XSCJ
SELECT*from 学生基本信息表
where 族别 between '汉族' and '回族'
13、从成绩表中查看课程ID为‘002’、‘003’、‘006’的学生成绩信息;
USE XSCJ
SELECT*from 成绩表
where 课程编号=002 or 课程编号=003 or 课程编号=003
14、从学生基本信息表中查看新疆的学生基本信息;
USE XSCJ
SELECT*from 学生基本信息表
where 家庭住址 like '%新疆%'
15、查看伊犁的学生信息;
USE XSCJ
SELECT*from 学生基本信息表
where 家庭住址 like '%伊犁%'
16、查看所有姓马的学生的姓名、家庭住址和联系电话信息;
USE XSCJ
SELECT*from 学生基本信息表
where 姓名 like '马%'。