数据库 张 上机实验点评及参考答案2014

合集下载

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告数据库上机实验网络1002 3100610055一、实验目的1.通过上机操作,加深对数据库理论知识的理解。

2.通过使用具体的微机DBMS(SQL Server),了解一种实际的数据库管理系统,并掌握其操作技术。

3.通过实际题目的上机实验,提高动手能力,提高分析问题和解决问题的能力。

二﹑实验题目某供应商(S)供应(SPJ)某种零件(P)给某个工程项目(J),其中一个供应商可以供给多个项目零件,而每个项目可以使用多个供应商供应的零件,每种零件可由不同供应商供给,S﹑P﹑J﹑SPJ的数据见附表1。

三、实验报告实验报告按照各实验的实验报告内容来整理。

实验报告提交地址:ftp://202.195.168.13/(在“up”文件夹里的“《数据库系统原理A》上机实验”文件夹中找到班级文件夹)用户名:nianyi密码:123456实验报告命名规则:班级+学号+姓名,如“软件080101王鹏晓”。

四、考核上机实验采用书面分析、平时实验和最后抽查考核相结合的方法评定成绩。

实验一数据库的定义和建立一、实验目的要求学生熟练掌握和使用T-SQL﹑SQL Server对象资源管理器创建数据库﹑基本表和修改表结构,及向数据库输入数据的操作,学会创建和使用表的主码、外码和约束。

二、实验内容1﹑利用SQL Server对象资源管理器创建数据库和查看数据库属性;2﹑利用T-SQL创建基本表﹑确定表的主码、外码和相应的约束;3﹑利用SQL Server对象资源管理器创建表之间的关系图;4﹑利用T-SQL向数据库输入数据。

三、注意事项1﹑输入数据时要注意数据类型、主码和数据约束的限制。

2﹑注意数据库的主码﹑外码和数据约束的定义。

3、注意参照表和被参照表之间的关系,主码和外码间的关系。

四、实验报告内容1﹑创建基本表(包括表的主码、外码和相应的约束)的SQL语句;3﹑输入数据的SQL语句。

create table s(sno char(8) primary key,sname char(20) unique,statuss smallint,city char(20));create table p(pno char(8) primary key,pname char(20),color char(8),weightt smallint);create table j(jno char(8) primary key,jname char(20),city char(20));create table spj(sno char(8),pno char(8),jno char(8),qty smallint,primary key(sno,pno,jno),foreign key(sno) references s(sno),foreign key(pno) references p(pno), foreign key(jno) references j(jno));insertinto svalues('s1','精益','20','天津');insertinto svalues('s2','盛锡','10','北京');insertinto svalues('s3','东方红','30','北京'); insertinto svalues('s4','丰泰盛','20','天津'); insertinto svalues('s5','为民','30','上海');select*from s;insertinto pvalues('p1','螺母','红','12');insertinto pvalues('p2','螺栓','绿','17');into pvalues('p3','螺丝刀','蓝','14'); insert into pvalues('p4','螺丝刀','红','14'); insert into pvalues('p5','凸轮','蓝','40'); insert into pvalues('p6','齿轮','红','30'); select* from p;into jvalues('j1','三建','北京'); insert into jvalues('j2','一汽','长春'); insert into jvalues('j3','弹簧厂','天津'); insert into jvalues('j4','造船厂','天津'); insert into jvalues('j5','机车厂','唐山'); insert into jvalues('j6','无线电厂','常州');into jvalues('j7','半导体厂','南京'); select* from j;insertinto spjvalues('s1','p1','j1','200'); insertvalues('s1','p1','j3','100'); insert into spjvalues('s1','p1','j4','700'); insert into spjvalues('s1','p2','j2','100'); insert into spjvalues('s2','p3','j1','400'); insert into spjvalues('s2','p3','j2','200'); insert into spjvalues('s2','p3','j4','500'); insert into spjvalues('s2','p3','j5','400'); insert into spjvalues('s2','p5','j1','400'); insert into spjvalues('s2','p5','j2','100'); insert into spjvalues('s3','p1','j1','200'); insert into spjvalues('s3','p3','j1','200'); insert into spjvalues('s4','p5','j1','100'); insert into spjvalues('s4','p6','j3','300'); insert into spjvalues('s4','p6','j4','200'); insert into spjvalues('s5','p2','j4','100'); insertvalues('s5','p3','j1','200'); insert into spjvalues('s5','p6','j2','200'); insert into spjvalues('s5','p6','j4','500'); select* from spj;2﹑表之间的关系图;4、总结实验过程中遇到的问题及解决。

数据库上机实验报告

数据库上机实验报告

《数据库基础》课堂实验报告(2013-2014学年第1学期)班级:姓名:学号:上机前准备:充分不充分未准备上机考勤:全到缺次上机操作:认真不认真实验计划:完成部分完成未完成实验报告完成情况:全部按时完成,部分完成,基本未提交实验报告撰写质量:好较好差其它:综合评分:优良中及格不及格指导教师签名:年月日实验报告一SQL Server 2005 管理数据库专业:班级:姓名:学号:日期:成绩:一、实验的目的与要求:1. 目的通过本次实验,使学生理解和掌握用SQL Server 2005 创建数据库、管理数据库。

使学生理解和掌握用SQL Server 2005创建表、视图、索引等操作流程,掌握用企业管理器或查询分析器两种方式创建表、视图。

2. 要求每位学生要熟悉和理解SQL Server 2005创建数据库的流程,熟悉和理解SQL Server 2005创建表流程,了解6种常用的数据完整性约束,并通过实际操作和总结,独立撰写完成实验报告。

二、实验软件及系统:本次实验使用的软件是SQL Server 2005。

三、实验内容及步骤:1、通过企业管理器创建数据库(1)、在服务器的“数据库”文件夹下的数据库图标上单击右键,选择“新建数据库选项”,在弹出的“数据库属性”对话框中对数据库的基本信息进行填写,如图所示:(2)在“常规”选项卡的“名称”文本框中输入数据库的名称。

(3)在“数据文件”选项卡中,指定数据库文件的名称、存储位置、初始容量大小和所属文件组等属性,并进行数据库文件大小、扩充方式和容量限制设置。

(4)点击“确定”按钮,创建新数据库。

2、采用企业管理器创建表(1)、在study中选择“表”对象后,单击右键从快捷菜单中选择“新建表”选项,在弹出的定义数据表格结构对话框中填写数据。

如图所示3、采用SQL语言建立表格打开查询编辑器,输入语法,建立表格,CREATE DATABASE TeachON(NAME=Teach_Data,FILENAME='D:\TeachData.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOG ON(NAME=Teach_Log,FILENAME='D:\TeachLog.ldf',SIZE=5,MAXSIZE=25,FILEGROWTH=5)如图:4、创建视图创建所有女同学的视图并查询a)企业管理器中创建过程:①右击【视图】,选择【新建视图】命令②在弹出的【添加表】选择Student表③选择Sno,Sname,Sbirthday,Ssex,Dno列。

数据库上机实验报告

数据库上机实验报告

数据库实验(第三次)题目1 实验内容:1. 检索上海产的零件的工程名称;2. 检索供应工程J1零件P1的供应商号SNO;3. 检索供应工程J1零件为红色的供应商号SNO;4. 检索没有使用天津生产的红色零件的工程号JNO;5. 检索至少用了供应商S1所供应的全部零件的工程号JNO;6. 检索购买了零件P1的工程项目号JNO及数量QTY,并要求对查询的结果按数量QTY降序排列。

1select jnamefrom jwhere jno in(select jnofrom spjwhere sno in(select snofrom swhere city ='上海'));2select snofrom spjwhere jno ='j1'and pno ='p1'3selectdistinct snofrom spjwhere pno in(select pnofrom pwhere color='红'and pno in (select pnofrom spjwhere jno ='j1'));4selectdistinct jnofrom spjwhere pno notin(select pnofrom pwhere color ='红'and pno in (select pnofrom spjwhere sno in(select snofrom swhere city ='天津')))5select jnofrom spjwhere sno ='s1'6select jno,qtyfrom spjwhere pno ='p1'orderby qty desc四﹑思考题1. 如何提高数据查询和连接速度。

建立视图2. 试比较连接查询和嵌套查询有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比嵌套查询高出很多当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告引言:数据库是一种用于存储和管理数据的工具,它在现代社会中的重要性无可忽视。

本次实验旨在通过实际上机操作,加深对数据库的理解,并熟悉其相关操作和功能。

一、实验背景在信息时代的大背景下,各种类型的数据呈现指数级增长。

为了有效地存储和管理这些数据,数据库被广泛采用。

数据库管理系统(DBMS)是一套软件工具,用于定义、创建、管理和检索数据库。

本次实验将使用一款流行的开源DBMS工具MySQL。

二、实验目的1. 了解数据库的基本概念和原理;2. 掌握数据库的基本操作;3. 理解并应用SQL语言;4. 通过实际操作,熟悉数据库的增删改查功能。

三、实验过程1. 数据库的创建与连接首先,在MySQL中创建一个新的数据库,并通过合适的用户名和密码连接到该数据库。

数据库连接作为与数据库通信的接口,是进行各种操作的基础。

2. 数据表的创建与设置创建数据表是数据库设计的核心部分。

在实验过程中,我们选择创建一个学生信息表格。

通过指定各个字段的数据类型、长度以及约束,定义了学生信息表的结构。

3. 数据的插入与查询在学生信息表中插入若干条测试数据,包括学生姓名、年龄、性别、学号等信息。

通过SQL语句,我们可以灵活地插入、查询和过滤数据。

例如,查询年龄大于20岁的学生或者查询特定学号的学生等。

4. 数据的更新与删除数据库的更新和删除操作是不可或缺的。

我们可以通过SQL语句,修改特定记录的字段值,或者删除某些记录,以实现数据的动态维护和管理。

四、实验结果与分析通过实验操作,我们成功创建了学生信息表格,并插入了若干测试数据。

在查询功能上,我们能够根据不同的条件,按照要求查询指定的学生信息。

此外,我们还尝试了数据的更新和删除操作,成功地修改了一部分学生的年龄和性别,并删除了一些无效的记录。

五、实验总结通过本次数据库上机实验,我对数据库的基本概念、原理和操作有了更深入的了解。

在实践中,我能熟练地使用创建数据库、创建数据表、插入数据、查询数据以及修改和删除数据等功能。

[训练]数据库实验1答案.docx

[训练]数据库实验1答案.docx

数据库上机实验答案下面的示例创建名为Sales的数据库。

因为没有使用关键字PRIMARY,第一个文件(Sales_dat)成为主文件。

因为Sales.dat文件的SIZE参数没有指定MB或KB,因此默认为MB,以兆字节为单位进行分配。

Sales_log文件以兆字节为单位进行分配,因为SIZE参数中显式声明了MB后缀。

USE masterGOCREATE DATABASE SalesON(NAME = Sales_dat,FILENAME 二'c:\program fi les\microsoft sqIserver\mssqI\data\saIedat. mdf',SIZE = 10,MAXSI ZE 二50,FILEGROWTH = 5 )LOG ON(NAME 二'Sales_log',FILENAME 二* c:\program fi les\microsoft sqIserver\mssqI\data\saIe丨og. Idf',SIZE = 5MB,MAXSI ZE 二25MB,FILEGROWTH 二5MB )GOB.指定多个数据文件和事务日志文件创建数据库下面的示例使用三个100 MB的数据文件和两个100 MB的事务日志文件创建了名为Archive的数据库。

主文件是列表中的第一个文件,并使用PR I MARY关键字显式指定。

事务日志文件在LOG ON关键字后指定"注意FILENAME选项中所用的文件扩展名:主要数据文件使用.nidf,次要数据文件使用.ndf,事务日志文件使用.IdfoUSE masterGOCREATE DATABASE ArchiveONPR I MARY ( NAME 二Archl,FILENAME 二'c:\program fi les\microsoft sqIserver\mssqI\data\archdat1. mdf',SIZE 二WOMB,MAXSI ZE 二200,FILEGROWTH = 20),(NAME 二Arch2,FILENAME 二1 c:\program fi les\microsoft sqIserver\mssqI\data'archdat2. ndf',SIZE = 100MB,MAXSI ZE = 200,FILEGROWTH 二20),(NAME 二Arch3,FILENAME 二'c:\program fi les\microsoft sqI server\mssqI\data\archdat3.ndf',SIZE 二WOMB,MAXSIZE 二200,FILEGROWTH 二20)LOG ON(NAME 二Archlogl,FILENAME 二’c:\program fi les\microsoft sqI server\mssqI\data\archIog1. Idf', SIZE 二100MB,MAXSI ZE 二200,FILEGROWTH 二20),(NAME 二Archlog2,FILENAME 二'c:\program fi les\microsoft sqI server\mssqI\data\archIog2.Idf',SIZE 二100MB,MAXSI ZE 二200,FILEGROWTH 二20)GO c.创建简单的数据库本例创建名为Products的数据库,并指定单个文件。

数据库第四次上机实验报告

数据库第四次上机实验报告

数据库第四次上机实验报告班级:姓名:学号:实验日期:一、实验目的熟悉掌握数据库设计开发的整个过程。

二、实验内容a.从需求分析入手,按数据库设计的方法和步骤设计并在计算机上实现一个数据库:供应商――零件――工程。

已知语义是:(1)一个供应商可以提供多种零件;而每种零件由多个供应商供应;(2)每种零件为多个工程使用,而每项工程又需要多种零件;(3)每个供应商有姓名、编号和住址;每种零件有零件名、编号、颜色;每项工程有工程(4)名、编号和地址。

b.在从此数据库基础上编写小应用程序实现以下查询功能:(1)给出为某项工程提供零件的全部供应商名;(2)给出使用某供应商所供零件的全部工程名;(3)给出使用红色零件的工程名;(4)给出住在A地而为不在A地、且不使用红色零件的工程提供零件的供应商名;(5)给出使用某供应商供应的全部零件的工程名。

三、实验步骤1、数据库关系设计E-R图根据任务描述,得到E-R图如下图所示。

2、给出数据模型和关系模式根据E-R图,需要建立S、P、J、SPJ共计4个关系模式来描述整个关系,他们包含:S(SNO,SNAME,CITY),分别代表供应商及其编号、名称、地址,主码为SNO。

P(PNO,PNAME,COLOR),分别代表零件及其编号、名称、颜色,主码为PNO。

J(JNO,JNAME,CITY),分别代表工程及其编号、名称、地址,主码为JNO。

SPJ(SNO,PNO,JNO),代表工程所需零件供应商关系。

3、录入数据SPJSPJ4、建立SQL,录入与查询(1)建立表格CREATE TABLE S( SNAME V ARCHAR (50) NOT NULL,SNO V ARCHAR(50) PRIMARY KEY,CITY V ARCHAR (50) NOT NULL);CREATE TABLE P( PNAME V ARCHAR (50)NOT NULL,SNO V ARCHAR (50) PRIMARY KEY,COLOR V ARCHAR (50)NOT NULL);CREATE TABLE J(JNAME V ARCHAR (50)NOT NULL,JNO VARCHAR(50) PRIMARY KEY,CITY V ARCHAR (50)NOT NULL);CREATE TABLE SPJ(SNO CHAR(50) NOT NULL,PNO CHAR(50) NOT NULL,JNO CHAR(50) NOT NULL);(2)录入信息INSERT INTO S V ALUES ('华为','S1','广东'); INSERT INTO S V ALUES ('小米','S2','上海'); INSERT INTO S V ALUES ('苹果','S3','江苏'); INSERT INTO S V ALUES ('三星','S4','北京');INSERT INTO P V ALUES ('芯片','P1','红'); INSERT INTO P V ALUES ('声卡','P2','绿'); INSERT INTO P V ALUES ('显示屏','P3','黑'); INSERT INTO P V ALUES ('显示屏','P4','蓝'); INSERT INTO P V ALUES ('耳机','P5','红'); INSERT INTO P V ALUES ('外壳','P6','白');INSERT INTO J V ALUES ('P30','J1','南京'); INSERT INTO J V ALUES ('PRO','J2','北京'); INSERT INTO J V ALUES ('GALAXY','J3','新疆'); INSERT INTO J V ALUES ('REDMI','J4','吉林'); INSERT INTO J V ALUES ('HONOR','J5','广东');INSERT INTO SPJ V ALUES ('S2','P2','J1'); INSERT INTO SPJ V ALUES ('S4','P3','J1'); INSERT INTO SPJ V ALUES ('S3','P6','J1'); INSERT INTO SPJ V ALUES ('S2','P1','J2'); INSERT INTO SPJ V ALUES ('S1','P3','J2'); INSERT INTO SPJ V ALUES ('S4','P5','J2'); INSERT INTO SPJ V ALUES ('S4','P2','J3'); INSERT INTO SPJ V ALUES ('S3','P4','J3'); INSERT INTO SPJ V ALUES ('S3','P5','J3');INSERT INTO SPJ V ALUES ('S2','P1','J4');INSERT INTO SPJ V ALUES ('S4','P4','J4');INSERT INTO SPJ V ALUES ('S1','P2','J4');(3)SQL查询1、给出为工程J1提供零件的全部供应商名SELECT DISTINCT SNAMEFROM S,SPJWHERE S.SNO=SPJ.SNO AND JNO=‘J1’;2、给出使用供应商S2所供零件的全部工程名SELECT JNAMEFROM JWHERE JNO IN (SELECT JNOFROM SPJWHERE SNO = ‘S2’);3、给出使用红色零件的工程名SELECT JNAMEFROM JWHERE JNO IN (SELECT JNOFROM SPJ, PWHERE COLOR = ‘红’ AND SPJ.PNO = P.PNO);4、给出住在北京而为不在北京、且不使用红色零件的工程提供零件的供应商名SELECT DISTINCT SNAMEFROM S, P, SPJWHERE S.SNO = SPJ.SNO AND P.PNO = SPJ.PNO AND SCITY = ‘北京’ AND S.CITY != J.CITYAND SPJ.PNO NOT IN(SELECT SPJ.PNOFROM P, SPJWHERE P.PNO = SPJ. PNO AND COLOR = ‘红’ );5、给出使用供应商S3供应的全部零件的工程名SELECT JNAMEFROM JWHERE NOT EXISTS(SELECT *FROM SPJWHERE NOT EXISTS(SELECT *FROM SPJWHERE SNO = ‘S3’);5、用户界面设计采用Delphi 7进行用户界面设计。

数据库上机实验8实验报告

数据库上机实验8实验报告

数据库上机实验8实验报告第一篇:数据库上机实验8实验报告上机实验八——完整性约束的实现一、实习目的:掌握SQL中实现数据完整性的方法,加深理解关系数据模型的三类完整性约束。

二、实习准备:1.复习“完整性约束SQL定义”2.完成习题四第10题中的各项操作的SQL语句。

3.了解SQL Server 中实体完整性、参照完整性和用户自定义完整性的实现手段三、实习内容:1.验证习题四第10题四个表结构的SQL语句。

表一:Sstudent CREATE TABLE Sstudent(Sno char(7)NOT NULL PRIMARY KEY, Sname VarChar(20)NOT NULL, Ssex Char(2)NOT NULL DEFAULT('男')check(Ssex IN('男','女')), Sage smallint check(Sage >14 AND Sage<65), Clno Char(5)NOT NULL REFERENCES Cclass(Clno)ON UPDATE CASCADE);表二:Ccourse CREATE TABLE Ccourse(Cno Char(1)NOT NULL PRIMARY KEY, Cname VarChar(20)NOT NULL, Credit Smallint CHECK(Credit IN(1,2,3,4,5,6)));表三:Cclass CREATE TABLE Cclass(Clno Char(5)NOT NULL PRIMARY KEY, Speciality VarChar(20)NOT NULL, Inyear Char(4)NOT NULL, Number Integer CHECK(Number>1 AND Number<100), Mointor Char(7)REFERENCES Student(Sno));表四:Ggrade CREATE TABLE Ggrade(Sno Char(7)NOT NULL REFERENCES Student(Sno)ON DELETE CASCADE ON UPDATE CASCADE, Cno Char(1)NOT NULL REFERENCES Course(Cno)ON DELETE CASCADE ON UPDATE CASCADE, GmarkNumeric(4,1)CHECK(Gmark>0 AND Gmark<100), PRIMARY KEY(Sno,Cno));2.SQL Server中提供了那些方法实现实体完整性、参照完整体和用户自定义完整性答:实体完整性:是通过主码的定义(PRIMARY KEY)来实现的;参照完整性:是利用外部码(REFERENCES)的说明,以限制相关表中某些属性的取值,当用户违反规则时,提供三种:RESTRICT (限制策略),CASCADE(级联策略),SET NULL(置空策略);用户自定义完整性:check约束,对元组的CHECK约束第二篇:数据库上机实验报告兰州理工大学学生上机报告学院计算机与通信学院课程名称数据库原理学生姓名侯予南学号05550204专业班级基地班05级1班上机日期2008年4月17日指导教师李明上机实验报告(一)实验内容:1、熟悉SQL Server 2000应用环境;熟悉查询分析器的使用方法;2、运行课堂示例:建立表T eacher , Course ;进行数据插入、查询、更新、建立视图、创建触发器等操作;3、完成作业(P108 第5题,P145第5题);4、完成实验报告。

数据库实验报告1

数据库实验报告1

《数据库》上机实验报告学 院:XXXXXX专业班级:XXXXXXXXXX学 号:XXXXXXXXXXXX学生姓名:XXXXX实验一SQL语句使用1. 实验目的掌握使用SQL语句完成数据的定义、查询和更改等功能。

2. 实验要求要求了解数据库表关联、视图等概念。

3. 实验内容(1)在SQL Server 2000查询分析器中使用SQL语句创建学生管理数据库,在数据库中创建三张表student、course、sc,表结构见书上P31页。

答:用SQL语句创建学生管理数据库:create database 学生管理数据库;在数据库中创建三张表student、course、sc:create table Student( Sno char(7) primary key,Sname char(10) not null,Ssex char(2),Sage tinyint,Sdept char(20))Create table Course( Cno char(10) primary key,Cname char(20) not null,Ccredit tinyint,Semester tinyint)Create table SC( Sno char(7) not null,Cno char(10) not null,Grade smallint,XKLB char(4),Primary key (Sno,Cno),Foreign key(Sno) references Student(Sno),foreign key(Cno) references Course(Cno))(2)打开企业管理器,向student、course、sc数据表中输入一些数据。

答:(3)完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询)(见P54页)答:单表查询:select * from Student Where Sdept='计算机系'连接查询:select Student.Sno,Sname,Ssex,Sage from Student join SC on Student.Sno=SC.Sno Where Sdept='计算机系'嵌套查询:select Sno,Sname,Ssex,Sage from Student Where Sno in (select Sno from SC where Cno='c04')集合查询:select Sno,Sname,Ssex,Sage from Student Where Sno in (select Sno from SC where XKLB='必修')(4)完成各类更新操作(插入数据,修改数据,删除数据)(见P54页)答:插入数据:修改数据:删除数据:(5)完成试图的创建(见P62页)答:create view 学生视图 (Sno ,Sname ,Grade) asselect Student .Sno,Sname,Gradefrom Student join SC on Student .Sno =SC.Snowhere Sdept = '计算机系'and o = 'c04'实验二 SQL Server 2000基本操作1. 实验目的(1) 熟悉SQL Server 2000操作环境和各种实用工具(2) 学会使用企业器管理器建立数据库和基本表,对表进行各种操作,(3) 完成数据库的安全管理和备份2. 实验要求要求了解数据库的组成,表结构的组成及每个属性的含义,角色和权限的管理3. 实验内容(1)熟悉SQL Server 2000操作环境和各种实用工具,(2)使用企业管理器创建教师授课管理数据库, 在数据库中创建三张表,表结构见书上第140页.答:打开数据库单击右键新建数据库建立教师授课管理数据库——>打开教师授课管理数据库在表的目录下单击右键新建表——>教师表、课程表、授课表。

数据库上机实验报告[页2]

数据库上机实验报告[页2]

数据库上机实验报告[页2]数据库上机实验报告数据库上机实验报告/*表级完整性约束条件,jno是外码,被参照表是j*/);2、数据表的更改在s表中添加一个concat列altertablesaddconcatvarchar(20)在s表中删除concat列altertablesdropcolumnconcat更改s表concat列的属性把长度由20改为30altertablesaltercolumnconcatvarchar(30)联系方式名字为concat修改属性为唯一的属性名为con_concataltertablesaddconstraintcon_concatunique(concat)删除约束关系con_concataltertablesdropconstraintcon_concat/*插入一个元组*/insertintosvalus(‘s1’,’精益’,20,’天津’)/*20不能写成’20’*/试验中的问题的排除与总结:1、在创建spj时有三个实体所以从3个实体中取主码,还有一个数量属性也要写上主码由那3个主码确定2、更改一个数据库中数据表时一定要先使该数据库处于正在使用状态3、constraint是可选关键字,表示primarykey、notnull、unique、foreignkey或check约束定义的开始。

约束是特殊属性,用于强制数据完整性并可以为表及其列创建索引。

4、--go可以不加但是要注意顺序注:go--注释提示错误5、注意添加一个空元素用null附sql备份--创建一个数据库studentcreatedatabasestudentgo--在数据库student中创建表studentcoursesc注意顺序usestudent---------------------------------------------------------------- createtablestudent(snochar(9)primarykey,/*sno是主码列级完整性约束条件*/ snamechar(10)unique,/*sname取唯一值*/ssexchar(2),sagesmallint,/*类型为smallint*/sdeptchar(20)/*所在系*/);/*;要加*/-----------。

数据库上机报告格式答案及评分标准

数据库上机报告格式答案及评分标准

上机报告一.课程名称:数据库技术及应用二.上机项目名称:学生信息管理系统开发三.上机目的:通过上机对大家熟悉的学生信息管理系统的开发,掌握利用Delphi 7开发完整的管理信息系统的步骤、过程和方法。

四.上机环境硬件:清华同方计算机软件: Windows XP ,Delphi 7 五、上机内容与上机步骤 (一)、内容:使用Delphi7进行学生信息管理系统开发 (二)、步骤: 1、系统设计1)系统功能分析:学生信息管理系统的所要完成的主要功能有:◆ 学生基本信息的录入,包括:学号、姓名、性别、班级、出生日期、籍贯等。

◆ 学生基本信息的修改维护。

◆ 学生学籍变动情况的记录,包括:休学、复学、转系、结业、毕业等。

◆ 学生奖惩情况的记录和修改,包括:奖励和处罚。

◆ 学生信息的查询。

2)系统功能模块设计3)操作流程图2、数据库设计 1)数据库需求分析◆ 院系设置:院系编号、院系名称、院系领导、领导电话。

◆ 班级设置:班级编号、班级名称、班级创建时间、班主任、班主任电话。

◆ 学生基本情况:学号、姓名、性别、出生日期、籍贯。

◆ 学籍变更记录:记录号、学号、变更类别、记录时间。

学生信息管理系统学生基本信息管理学生信息查询处罚管理奖励管理 学籍变更管理班级管理院系设置 教务管理 院系、班级管理◆奖励记录:记录号、学号、奖励类别、记录时间。

◆处罚记录:记录号、学号、处罚类别、记录时间。

2)数据库概念结构设计院系编号院系名称院系领导领导电话院系局部E-R图全局E-R图3)数据库逻辑结构设计逻辑设计阶段的目标是产生合理的数据库模式,可分为三个阶段:分别是收集和分析用户需求、概念模式设计和逻辑模式设计。

数据库逻辑结构设计的任务就是把E-R图转换为关系模式。

并对转换后的关系进行优化。

把上面的E-R图转换为关系并把进行优化之后,得到6个关系模式(即数据库表)。

这些表的结构如下。

院系设置信息表(Department)学生基本信息表( Student )学籍变更记录表(Change)奖励记录表(Reward)4)数据库结构的实现根据逻辑设计和物理设计的结果,利用特定的DBMS在计算机系统上建立实际数据库结构、装入数据、测试和试运行的过程称为数据库系统的实现阶段。

数据库上机实验(有答案)

数据库上机实验(有答案)

数据库上机实验内容及要求(第二部分)1.建立工厂管理数据库工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息:(1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话;(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;(3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产;(4)一个车间制造多种零件,一种零件也可能为多个车间制造。

零件有零件号、重量和价格;(5)一种产品可由多种零件组成,一种零件也可以装配出多种产品;(6)产品和零件均存入仓库;(7)厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。

根据以上需求分析结果,按照下述要求,设计并建立工厂管理数据库。

◆分析实体及联系,设计E-R图。

◆将E-R图转换成关系模式,并规范化到3NF。

◆在Microsoft SQL Server2000中基于“企业管理器”建立数据库及相关对象(主码,外码,索引,约束等)。

◆测试数据入库2.基于“查询分析器”,完成并保存下述题目的SQL脚本(1)建立“工种”是“钳工”的所有职工详细信息的视图;create view View_工人_钳工asselect*from职工表where工种='钳工'with check option(2)建立“车间号”是“CJ01”的钳工详细信息的视图;create view View_钳工_CJ01asselect*from View_工人_钳工where车间号='CJ01'(3)建立使用了“零件号”是“LJ0002”的所有产品详细信息的视图;create view View_产品_零件LJ0002asselect产品表.产品号,价格,车间号,仓库号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(4)对零件表按照“零件号”建立唯一索引;create unique index Index_U_零件号on零件表(零件号)(5)对职工表按照“性别”建立聚簇索引;create clustered index Index_C_性别on职工表(性别)(6)查询使用了“零件号”是“LJ0002”的产品的生产车间号;select车间号from装配表,产品表where装配表.产品号=产品表.产品号and零件号='LJ0002'(7)查询“职工号”是“ZG0001”的职工所在车间的“车间主任姓名”和“联系电话”;select车间主任姓名,联系电话from职工表,车间表where职工表.车间号=车间表.车间号and职工号='ZG0001'(8)查询使用了“零件号”是“LJ0002”的所有产品的生产车间的“车间主任姓名”和“联系电话”;(连接查询、嵌套查询实现)select车间主任姓名,联系电话from产品表,装配表,车间表where产品表.产品号=装配表.产品号and产品表.车间号=车间表.车间号and装配表.零件号='LJ0002'select车间主任姓名,联系电话from车间表where车间号in(select车间号from产品表where产品号in(select产品号from装配表where零件号='LJ0002'))(9)查询使用了“零件号”是“LJ0002”的所有产品的“产品号”和“零件数量”,且查询结果按照“零件数量”降序排列;select产品号,零件数量from装配表where零件号='LJ0002'order by零件数量desc(10)查询使用了“零件号”是“LJ0002”的产品数;select count(*)as产品数from装配表where装配表.零件号='LJ0002'(11)查询“LJ0002”号零件装配产品的使用总量;select sum(零件数量)as使用总数from装配表where零件号='LJ0002'(12)查询使用了3种以上零件的产品号;select产品号from装配表group by产品号having count(*)>=3【注意】:下机时保存数据库文件(.mdf和.ldf)及SQL脚本文件到U盘。

数据库原理及应用最全上机实验及实验答案

数据库原理及应用最全上机实验及实验答案

实验一 SQL Server 2005 的安装和环境介绍一.实验目的与要求:1.掌握SQL Server 2005 服务器的安装方法2.了解SQL Server 2005 的环境3.了解数据库及其对象二.实验准备1.了解SQL Server 2005的版本2.了解SQL Server 2005各版本对硬件和软件的需求三.实验要求1.写出SQL SERVER 2005的功能与特点, 使用方法, 应用状况的报告2.完成SQL SERVER 2005的安装、启动、登录。

四.实验内容1.安装SQL Server 2005实验一 SQL Server 2005 的安装和环境介绍●实验指导——安装SQL Server 20051.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2005 DVD 插入 DVD 驱动器。

如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。

3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。

4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。

接受许可协议后即可激活“下一步”按钮。

若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。

如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2005 的必需软件。

有关组件要求的详细信息,请单击该页底部的“帮助”按钮。

若要开始执行组件更新,请单击“安装”。

更新完成之后若要继续,请单击“完成”。

6.在 SQL Server 安装向导的“欢迎”页上,单击“下一步”以继续安装。

7.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。

8.在“注册信息”页上的“姓名”和“公司”文本框中,输入相应的信息。

第四次上机实验参考答案.doc

第四次上机实验参考答案.doc

第四次上机实验参考答案•第1题:使用Microsoft Access建立一个数据库,命名为“用户”,该数据库包含一张“用户信息”表,结构如表4-1所示:表4-1用户信息表字段名称数据类型字段大小主键用户号数字整型YES用户名文本10所在地文本50街区文本50然后在用户信息表中输入如图4-1所示的5条记录。

图4-1运行界面实验步骤:1、建立数据库使用Access建立“用户”数据库,并创建“用户信息”表,然后在用户信息表中输入如图4-1所示的5条记录。

【创建过程略】。

2、设计用户界面建立一个Windows应用程序,在窗体上添加数据源控件BindingSource 1,实现和“用户”数据库的连接(连接步骤参见教材P240-243例10-3,注意将连接对象设置为“用户”数据库和“用户信息”表);添加DataGridViewl控件,将其与数据源BindingSourcel连接(连接步骤参见教材P243-244例10-4),实现对数据库信息的浏览。

程序界面如图4-2所示。

3、编程给退出按钮编程,可退出应用程序的运行。

【略】V bindingSourcel 通用户DataSet 匚丫用户信息BindingSource '图)用户信息TableAdapter图4-2程序界面设计•第2题:完成教材P245中的“4.编程题”,使用创建一个用户登录界面程序。

要求首先用Access 建立一个用户数据库users,并建立表:userinfo(username,password,address,email), 并输入记录(admin,123,信息系,123@)。

然后设计一个用户登录界面,当用户输入相关信息单击“登录”按钮时,从userinfo表中查找是否有该用户记录,如果有就显示“登录成功”;否则显示“用户名或密码错误”。

用户登录界面如下图所示。

【编程提示】:在Forml_Load事件中编写连接数据库、访问数据库表的代码;在“登录”按钮的单击事件中核对用户登录信息,并在窗体上用标签显示登录成功或失败的信息;在“重置”按钮的单击事件中清空本文框和标签中的显示信息,同时允许重新输入用户名和密码;在“退出”按钮的单击事件中关闭数据库连接,并退出应用程序。

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告
本次数据库上机实验主要涉及到数据库的设计、创建和查询,通过对实验内容的学习和实践,我对数据库的相关知识有了更深入的理解和掌握。

首先,我们学习了数据库的设计原理和方法。

在数据库设计的过程中,需要考虑到数据的完整性、一致性和安全性等因素,通过对实际案例的分析和设计,我了解到了如何根据需求确定实体、属性和关系,并进行逻辑设计和物理设计。

在实验中,我使用了ER图和关系模式图等工具,对数据库的结构和关系进行了清晰的描述和设计。

其次,实验中我们学习了数据库的创建和管理。

通过使用SQL语句,我成功创建了数据库和表,并进行了数据的插入、修改和删除操作。

在实验过程中,我深入了解了SQL语句的语法和用法,掌握了如何利用SQL语句对数据库进行有效的管理和操作。

最后,我们进行了数据库的查询操作。

通过学习和实践,我掌握了SQL语句中的SELECT语句的用法,能够实现对数据库中数据的查询和统计。

在实验中,我通过编写SQL语句,成功实现了对数据库中数据的查询和分析,对于复杂的查询需求也能够进行有效的处理和实现。

通过本次数据库上机实验,我不仅加深了对数据库设计、创建和查询的理解,还提高了对SQL语句的掌握和运用能力。

我相信这些知识和技能对我的未来学习和工作都将有很大的帮助。

总的来说,本次数据库上机实验内容丰富、操作性强,通过实际操作和实践,我对数据库的相关知识有了更深入的理解和掌握。

我相信这些知识和技能对我的未来学习和工作都将有很大的帮助。

希望通过不断的学习和实践,能够进一步提高自己的数据库技能,为将来的工作做好准备。

数据库与软件工程上机实验答案

数据库与软件工程上机实验答案

数据库与软件工程上机实验答案第一篇:数据库与软件工程上机实验答案《数据库与软件工程》上机实验答案实验三 SQL语言的DDL3.CREATE TABLE aa(Bb1 VARCHAR(30),Bb2 INT,Bb3 DECIMAL(6,2))4. ALTER TABLE aa ADD Bb4 varchar(20)5.DROP TABLE AA6. CREATE VIEWReaderView(借阅者)ASSELECT DISTINCT 读者编号FROM 借阅7. Drop ViewReaderView。

8.CREATE INDEX INDEX1 ON 读者(姓名 ASC,单位 ASC)CREATE INDEX INDEX3 ON 借阅(借阅日期 DESC)9. DROP INDEX 读者.INDEX1CREATE INDEX INDEX1 ON 读者(姓名 ASC)实验四 SQL语言的DML初步1. CREATE DEFAULT ZEROVALUE AS 0sp_bindefault ZEROVALUE, '图书.借出否'CREATE DEFAULT CURTIME AS getdate()sp_bindefault CURTIME, '借阅.借阅日期'2. CREATE RULE gender_ruleAS@value in('男','女')EXEC sp_bindrule 'gender_rule', '读者.性别'CREATE RULE lenddate_ruleAS@value > '2004-1-1'EXEC sp_bindrule 'lenddate_rule', '借阅.归还日期'3.用INSERT语句对“图书”表插入6条记录INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0001','计算机类','清华出版社','严蔚敏','数据结构', 20.11)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0002','计算机类','清华出版社','苗雪兰','数据库技术及应用',29.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0003','计算机类','清华出版社','李建中','软件工程',48.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价) VALUES('0004','计算机类','电子工业出版社','汤惟','WEB技术',32.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0005','自动化类','机械工业出版社','胡寿松','自动控制原理',52.00)INSERT INTO 图书(书号,类别,出版社,作者,书名,定价)VALUES('0006','自动化类','机械工业出版社','郑大钟','线性控制理论',32.00)用INSERT语句对“读者”表插入4条记录INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10001','张三','东华大学','男','67792312')INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10002','李四','东华大学','女','67792312')INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10003','王五','东华大学','男','67792312')INSERT INTO 读者(读者编号,姓名,单位,性别,电话)VALUES('10004','李明','东华大学','女','67792312')用INSERT语句对“借阅”表插入7条记录INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0001','10001','2006-04-19 09:58:03','2006-05-19 8:38:23')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0006','10002','2006-07-01 15:28:12','2006-07-18 9:14:02')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0002','10002','2006-07-01 15:28:30','2006-07-17 19:10:32')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0002','10003','2006-07-03 15:28:30','2006-08-09 15:28:30')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0004','10002','2007-05-01 11:28:24','2007-08-01 8:09:04')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0005','10002','2007-11-01 10:43:12','2007-12-01 14:09:56')INSERT INTO 借阅(书号,读者编号,借阅日期,归还日期)VALUES('0003','10004','2007-12-01 16:06:02','2007-12-29 13:17:09')4. UPDATE 借阅SET 借阅日期='2006-08-03 15:28:30'WHERE 读者编号='10003' AND借阅日期 BETWEEN '2006-07-03' AND '2006-07-04' AND 书号='0002'5. DELETE FROM 借阅WHERE 借阅日期<'2006-06-01'1. SELECT 书号,书名 as 名称,定价 as 价格 FROM 图书WHERE 类别='自动化类'2.方法1:SELECT * FROM 图书WHERE 类别='计算机类'UNIONSELECT * FROM 图书WHERE 出版社='电子工业出版社'方法2:SELECT * FROM 图书WHERE 类别='计算机类' OR 出版社='电子工业出版社'3. SELECT * INTO 计算机图书表 FROM 图书WHERE 类别='计算机类'4. SELECT DISTINCT 读者.* FROM 读者,借阅WHERE 读者.读者编号=借阅.读者编号5. SELECT 读者.读者编号,姓名,单位,图书.书号,书名,借阅日期FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号6. SELECT 图书.书号,书名,类别,借阅日期 FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND 姓名='张三'ORDER BY 借阅日期 DESC7. SELECT 读者.读者编号,姓名,书名,DATEDIFF(day,借阅日期,归还日期)as 借阅时间FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND DATEDIFF(day,借阅日期,归还日期)>20order by 借阅时间8. SELECT * FROM 读者WHERE NOT EXISTS(SELECT * FROM 图书WHERE 类别='自动化类' and NOT EXISTS(SELECT * FROM 借阅WHERE 读者编号=读者.读者编号 and 书号=图书.书号))1.SELECT 类别,COUNT(*)AS 数量, AVG(定价)AS平均价格,SUM(定价)AS 总价FROM 图书GROUP BY 类别ORDER BY 类别2. SELECT YEAR(借阅日期)as 年份,书号,COUNT(*)AS 借阅次数FROM 借阅GROUP BY YEAR(借阅日期),书号ORDER BY 借阅次数 DESC3. SELECT 读者.读者编号,COUNT(书号)AS 借阅次数 FROM 读者LEFT JOIN(SELECT * FROM 借阅 WHERE 借阅日期 BETWEEN '2006-7-1' AND '2007-10-1')AON 读者.读者编号=A.读者编号GROUP BY 读者.读者编号4. SELECT 读者编号,COUNT(*)AS 次数 FROM 借阅,图书WHERE 借阅.书号=图书.书号 AND 书名='数据库技术及应用'GROUP BY 读者编号ORDER BY 次数 DESC5.方法1:SELECT MAX(次数)AS 最多,MIN(次数)AS 最少,AVG(次数*1.0)AS 平均FROM(SELECT 图书.书号,COUNT(*)AS 次数 FROM 图书,借阅WHERE 图书.书号=借阅.书号 AND 类别='计算机类'GROUP BY 图书.书号)A方法2:SELECT 图书.书号,COUNT(*)*1.0 AS 次数 FROM 图书,借阅WHERE 图书.书号=借阅.书号 AND 类别='计算机类'GROUP BY 图书.书号COMPUTEMAX(COUNT(*)*1.0),MIN(COUNT(*)*1.0),AVG(COUNT(*)*1.0)6. SELECT 类别 FROM 图书GROUP BY 类别HAVING MAX(定价)>=ALL(SELECT 2*AVG(定价)FROM 图书GROUP BY 类别)7. SELECT 书号,书名,定价,出版社 FROM 图书WHERE 类别='计算机类'ORDER BY 出版社 DESCCOMPUTE COUNT(书号)BY 出版社COMPUTE COUNT(书号)实验七存储过程、触发器和数据库恢复1.(1)CREATE PROCEDURE 借阅情况@Readerno VARCHAR(8)ASSELECT 读者.读者编号,姓名,图书.书号,书名,借阅日期, 借出否AS 归还否FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND 读者.读者编号=@ReadernoEXEC 借阅情况‘10004’(2)CREATE PROCEDURE 借出情况@Bookno VARCHAR(10)ASSELECT 书名,姓名,借阅日期,归还日期FROM 读者,借阅,图书WHERE 读者.读者编号=借阅.读者编号AND 图书.书号=借阅.书号AND 图书.书号=@BooknoEXEC 借出情况 '0004'2.CREATE TRIGGER lendbookinsert ON 借阅FOR INSERTASIF(SELECT 借出否 FROM 图书 WHERE 书号 IN(SELECT 书号 FROM INSERTED))=1BEGINPRINT '该书已经借出'ROLLBACK TRANSACTIONENDELSEBEGINUPDATE 图书SET 借出否=1WHERE 书号 IN(SELECT 书号 FROM INSERTED)END第二篇:数据库上机实验(二)数据库上机实验内容及要求(第二部分)1.建立工厂管理数据库工厂(包括厂名和厂长名)需要建立一个管理数据库存储以下信息:(1)一个厂内有多个车间,每个车间有车间号、车间主任姓名、地址和联系电话;(2)一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种;(3)一个车间生产多种产品,产品有产品号和价格;每种产品只能由一个车间生产;(4)一个车间制造多种零件,一种零件也可能为多个车间制造。

数据库实验报告实验二参考答案[最终版]

数据库实验报告实验二参考答案[最终版]

数据库实验报告实验二参考答案[最终版]第一篇:数据库实验报告实验二参考答案[最终版]1.你的老板要求你创建一个数据量为20G的数据库,但是你现在的硬盘上没有一个这么大空闲容量的分区,只有3个空闲容量为8G的分区,请问,你该如何完成这个任务?答:为该数据库创建3个数据文件,每个数据文件只需保存小于8G的数据,将这3个数据文件分别存储在不同的硬盘分区即可。

注:数据库中的数据都保存在该数据库的若干数据文件中,而非日志文件!2.你想创建一个初始大小为2MB的数据库,但是你却发现你创建的数据库的初始大小是5MB,而且不能小于这个值,请问是什么原因?答:系统数据库中的model数据库为用户创建数据库提供模板,也就是说,在创建数据库时,数据库引擎首先通过复制 Model 数据库中的内容来创建数据库的第一部分,然后再用空页填充新数据库的剩余部分。

因此,用户创建的数据库的初始大小不能小于model数据库的大小。

该问题的原因在于model数据库数据文件的初始大小被设定为5MB。

/***************************SQL语言部分*****************************/ /*创建数据库student*/create database studenton(name=student_data,filename='C:DATAstudent_data.mdf', size=3,maxsize=unlimited,filegrowth=1)log on(name=student_log,filename='C:DATAstudent_log.ldf',size =1,maxsize=20,filegrowth=10%)/*修改数据库student--添加数据文件*/alter database student add filegroup studata /*先增加一个文件组studata*/ goalter database studentadd file(Name=student_data1,filename='D:DATAstudent_data1.nd f',Size=50,Maxsize=500,Filegrowth=30%)to filegroup studata /*删除数据库student */ drop database student第二篇:SQL数据库实验报告实验二实验2SQL Server数据库的管理1.实验目的(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。

数据库上机实验部分题目及答案

数据库上机实验部分题目及答案

上机实验部分题目及答案一、实验目的1、基本表的定义、修改和删除2、视图的建立、删除和查询3、约束的命名、删除和重定义二、实验结果存放创建表homework8(result ),将每题的题目序号和SQL语句写到此表。

三、实验内容现有图书管理数据库的一个关系模式:book(总编号,分类号,书名,作者,出版单位,单价)1.利用SQL语句创建book的表结构,其中总编号为主码,书名的类型为char(50),并给主码的约束命名(主码约束命名参照第五章内容)。

2.利用SQL在book这个表中分别插入以下所给元组:34、为“数据库导论”设置“出版日期”的值为2009年6月5日,为“计算机基础”设置“出版日期”的值为2008年3月4日。

5、删除总编号为445503的元组。

6、删除列“出版日期”。

7、将列“书名”的类型改为char(100),其中修改列类型的语句为:alter table <表名>[modify 列名数据类型]8、删除book的主码约束(参照第五章)9、将表book中的总编码设置为主码(参照87页内容)。

11.建立表book1,其表结构与内容参照第2题。

12. 为表book1建立科学出版社所出图书的视图science13、删除表book1,其中删除表的格式为:drop table <表名>[restrict|cascade constraint] 其中restrict与cascade参数的含义参照87页14、为表book建立高等教育出版社所出图书的视图education15、查询视图education中的所有内容16、删除视图educationdrop table homework8drop table bookcreate table homework8(ti smallint,res char(400))create table book(总编码char(8) ,分类号char(7),书名char(50),作者char(30),出版单位char(200),单价char(8),constraint total primary key(总编码) )insertinto homework8(ti,res)values (1,'create table book(总编码char(8) ,分类号char(7),书名char(50),作者char(30),出版单位char(200),单价char(8),constraint total primary key(总编码) )')22222222insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('445501','TP3/12','数据库导论','王强','科学出版社','17.90')insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('445502','TP3/12','数据库导论','王强','科学出版社','17.90')insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('445503','TP3/12','数据库导论','王强','科学出版社','17.90')insertinto book(总编码,分类号,书名,作者,出版单位,单价)values ('332211','TP5/10','计算机基础','李伟','高等教育出版社','18.00')3333333alter table bookadd 出版日期char(20)alter table bookadd 页数char(5)444444444444444444444444444444444444444update bookset 出版日期='2009年6月5日'where 书名='数据库导论'update bookset 出版日期='2008年3月4日'where 书名='计算机基础'55555555555555555555555555555555555555 deletefrom bookwhere 总编号='445503'66666666666666666666666666666666666666 alter table bookdrop column 出版日期777777777777777777777777777777777777777 alter table bookmodify 书名char(100)8888888888888888888888888888888888888 alter table bookdrop constraint total9999999999999999999999999999999999999 alter table bookadd primary key (总编码)11 11 11 11 11 11 11 11 11 11 create table book1(总编码char(8) ,分类号char(7),书名char(50),作者char(30),出版单位char(200),单价char(8),constraint total primary key(总编码))12 12 12 12 12 12 12 12 CREATE VIEW scienceASSELECT 总编码,分类号,书名,作者,出版单位,单价FROM book1WHERE 出版单位='科学出版社'13DROP TABLE book114CREATE VIEW educationASSELECT 总编码,分类号,书名,作者,出版单位,单价FROM bookWHERE 出版单位='高等教育出版社'15SELECT *FROM education16DROP VIEW education。

数据库上机实验报告答案

数据库上机实验报告答案

数据库上机实验报告答案1.建立学生数据库模式学生表:student (sno 学号,sname 姓名,ssex 性别,sage 年龄,sdept 所在系)其中:sno 长度为4的字符串,为主码;sname 长度为8的字符串;ssex 长度为2的字符串,其值只取男、女;sage 整数,其值在0-150之间;sdept 长度为10的字符串。

2.建立课程数据库模式课程表:course ( cno课程号,cname课程名,ccredit学分)其中:cno 长度为4的字符串,为主码cname 长度为10的字符串,不能有重复课程名;ccredit 整数。

3.建立选课数据库模式。

选课表: sc (sno学号, cno课程号, grade成绩)其中:sno 长度为4的字符串,和student表sno外键关联,且级联删除cno 长度为4的字符串,course表cno外键关联,grade 整数,值或空或为0—100之间,(sno, cno) 联合作主码。

(1)创建上述三个表。

(2)将年龄的数据修改为15-30之间。

(3)为Student中sname添加列级完整性约束,不能为空。

(4)为SC建立按学号升序和课程号降序建立唯一索引.(5)在表student的sname字段建立一个升序索引。

(6)删除在表student的sname字段建立的索引。

(7)给student表增加一个地址(address)属性。

(8) 删除student表地址(address)属性。

(9)建立视图view1,要求有sno,sname,cname,grade四个字段。

1) create table studen(sno char(4) primary key,sname char(8),ssex char(2) check( ssex in('男','女')),sage int check(sage between 0 and 150),sdept char(10));create table course(cno char(4) primary key,cname char(10) unique,ccredit intcreate table sc(sno char(4),cno char(4),grade int check(grade between 0 and 100),primary key (sno,cno),foreign key(sno) references student(sno) on delete cascade, foreign key(cno) references course(cno));2) alter table studentadd constraint sage_con check(sage between 15 and 30);3) alter table studentmodify sname not null;4) create unique index index1on sc (sno asc,cno desc);5) create index index2on student(sname asc);6) drop index index2;7) alter table studentadd address char(30);8) alter table studentdrop column address;9) create view view1asselect A.sno,sname,cname,gradefrom student A,course B,sc Cwhere A.sno=C.sno and /doc/287635464.html,o=http://www.doczj .com/doc/287635464.html,o;(1)在上述三个表中输入若干记录。

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告实验名称:数据库上机实验报告实验目的:通过在数据库环境下进行上机实验,掌握数据库的基本操作和SQL语言的使用。

实验内容:1. 创建数据库首先创建一个数据库,可以使用MySQL、Oracle或其他数据库管理系统的命令行或可视化工具创建。

命名为“example”。

2. 创建表在“example”数据库中创建一个新表,表名为“students”。

定义表结构,包括学生的学号、姓名、性别、年龄、班级等字段。

3. 插入数据向“students”表中插入若干条学生数据,包括学号、姓名、性别、年龄、班级等信息。

4. 查询数据使用SQL语句查询“students”表中的数据,例如查询年龄小于20岁的学生、查询班级为一班的学生等。

5. 更新数据使用SQL语句更新“students”表中的数据,例如将年龄小于18岁的学生的班级改为2班。

6. 删除数据使用SQL语句删除“students”表中的数据,例如删除性别为女的学生、删除班级为三班的学生等。

7. 关闭数据库使用命令或可视化工具关闭数据库连接。

实验步骤:1. 打开MySQL命令行或可视化工具,创建名为“example”的数据库。

2. 通过CREATE TABLE语句在“example”数据库中创建名为“students”的表,并定义表结构。

3. 使用INSERT INTO语句向“students”表中插入学生数据。

4. 使用SELECT语句查询“students”表中的数据。

5. 使用UPDATE语句更新“students”表中的数据。

6. 使用DELETE语句删除“students”表中的数据。

7. 关闭MySQL连接。

实验结果:1. 创建“example”数据库成功。

2. 创建“students”表成功,包括学生的学号、姓名、性别、年龄、班级等字段。

3. 成功插入若干条学生数据。

4. 成功查询“students”表中的数据,符合查询条件的学生数据被正确显示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上机实验三——基本表的建立和修改三、实习内容:1.启动MSSQL Server服务,打开Enterprise Manager和Query Analyzer。

2.在Query Analyzer中用CREATE TABLE命令在实验二创建的GradeManager数据库中定义基本表:学生表(Student)、课程表(Course),利用Enterprise Manager的图形化功能建立班级表(Class)以及成绩表(Grade)。

create table Student( Sno char(7) primary key ,Sname varchar(20) not null ,Ssex char(2) not null,Sage Smallint ,Clno char(5)not null);create table Class( Clno char(5) primary key,Speciality varchar(20) not null,Inyear char(4) not null,Number integer ,Monitor char(7) );create table Course(Cno char(1) primary key,Cname varchar(20) not null,Credit Smallint );create table Grade(Sno char(7) references student(sno),Cno char(1) references course(cno),Gmark numeric,Primary key(sno,cno));四、针对以上四个表,用SQL语言完成以下各项操作。

①给学生表增加一属性Nation(民族),数据类型为Varchar(20);②删除学生表中新增的属性Nation;③向成绩表中插入记录(”2001110”,”3”,80);④修改学号为”2001110”的学生的成绩为70分;⑤删除学号为”2001110”的学生的成绩记录;⑥为学生表创建一个名为IX_Class的索引。

1.ALTER TABLE StudentADD Nation varchar(20);2.ALTER TABLE StudentDROP COLUMN Nation;3.Insert into grade(sno,cno,gmark) values(‘2001110’,’3’,80)点评:该语句没有语法错误,但好多同学在执行时出现了问题,是对的。

但同学们要知道为什么会出现这个问题。

4.UPDATE GradeSET Gmark=70WHERE Sno='2001110';5.DELETEFROM GradeWHERE Sno='2001110';6.CREATE INDEX IX_ClassON Student(Clno Asc);7.DROP INDEX Student.IX_Class;五、思考题在定义基本表语句时,NOT NULL参数的使用有何作用?答:Not Null参数,可以保证在插入数据时,该属性列的取值不为空。

上机实验四——SELECT语句的使用(一)三、实习内容:完成以下各项操作的SQL语句:①找出所有被学生选修了的课程号;select distinct cno from grade;该语句实现的路径应该是Grade表, Course表中可能有某门课,一个学生都没有选修的。

所以不能是查询Course表的Cno。

②找出01311班女学生的个人信息;select * from studentwhere Ssex = '女' and clno = '01311' ;③找出01311班、01312班的学生姓名、性别、出生年份;select Sname,Ssex,2012- Sage as birthfrom studentwhere clno = '01311' or clno = '01312';OR:select Sname,Ssex,2012- Sage as birthfrom studentwhere clno in('01311', '01312');OR:(在T-SQL中,超大纲了,呵呵)Select sname,sex,year(getdate())-sageFrom studentWhere clno in (‘01311’,’01312’);④找出所有姓李的学生的个人信息;select * from studentwhere Sname like '李%';⑤找出学生李勇所在班级的学生人数;Select count(*) from studentWhere clno in (Select clno from studentWhere sname=”李勇”);Or: Select number from classWhere clno in (Select clno from studentWhere sname=”李勇”);Or: Select number from class,studentWhere sname=’李勇’ and class.clno=student.clno;⑥找出课程名为操作系统的平均成绩、最高分、最低分;Select avg(gmark),Max(gmark),Min(gmark)From grade,courseWhere cname=”操作系统” and o=o;Or: Select avg(gmark),Max(gmark),Min(gmark)From gradeWhere cno=(Select cno from course where cname=”操作系统”);⑦找出选修了课程的学生人数;select count(distinct Sno)from grade;⑧找出选修了课程操作系统的学生人数。

Select count(sno) From gradeWhere cno=(Select cno from course Where cname=”操作系统” );Or: Select count(sno) From grade,courseWhere o=o and cname=”操作系统”; (9)找出2000级计算机软件班的成绩为空的学生姓名。

select Snamefrom Studentwhere Clno in(select Clnofrom Classwhere Speciality='计算机软件' and Inyear=2000)and Sno in (select Sno from Grade where gmark is null);四、思考题:什么情况下需要使用关系的别名?别名的作用范围是什么?答:一般几种两种情况下使用别名:1.关系名太长,为了简化;2.为了做自身连接查询。

3.在同一个SQL语句中,为了对某个表进行2次扫描。

别名的作用范围是当前该SQL语句,离开当前SQL语句,别名就不在存在。

上机实验五——SELECT语句的使用(二)三、实习内容:完成以下各项操作的SQL语句:①找出与李勇在同一个班级的学生信息;②找出所有与李勇有相同选修课的学生信息;③找出年龄介于学生李勇和25岁之间的学生信息;(已知李勇年龄小于25岁)④找出选修了课程操作系统的学生学号和姓名⑤找出没有选修1号课程的学生姓名⑥找出选修了全部课程的学生姓名;①找出与李勇在同一个班级的学生信息;Select * from studentWhere clno=(Select clno from student where sname=’李勇’);②找出所有与学生李勇有相同选修课程的学生信息select * from Studentwhere Sno in(select Sno from Gradewhere Cno in(select Cno from Gradewhere Sno in(select Sno from Studentwhere Sname='李勇'))) and Sname <>'李勇';③找出年龄介于学生李勇和25岁之间的学生信息;Select * from studentWhere sage between(Select sage from studentWhere sname=’李勇’)And 25;④找出选修了课程操作系统的学生学号和姓名;Select sno,sname from studentWhere sno in( Select sno from gradeWhere cno =( Select cno from courseWhere cname =’操作系统’));⑤找出所有没有选修1号课程的学生姓名;Select sname from studentWhere not exist(Select sno from gradewhere cno=’1’ and sno=student.sno);OR: Select sname from studentWhere sno not in(Select sno from gradeWhere cno=’1’);⑥找出选修了全部课程的学生姓名(提示:可找出这样的学生,没有一门课程是他不选修的。

)下面这个编程的思路有问题,是错误的哦:SELECT SnameFROM StudentWHERE Sno IN (SELECT Sno FROM Grade WHERE Cno=1) ANDSno IN(SELECT Sno FROM Grade WHERE Cno=2) ANDSno IN(SELECT Sno FROM Grade WHERE Cno=3) ANDSno IN(SELECT Sno FROM Grade WHERE Cno=4) ANDSno IN(SELECT Sno FROM Grade WHERE Cno=5) ANDSno IN(SELECT Sno FROM Grade WHERE Cno=6) ANDSno IN(SELECT Sno FROM Grade WHERE Cno=7)解一:Select sname from studentWhere not exists(Select * from coursewhere not exists(Select * from gradeWhere sno=student.sno and cno=o);解二:Select sname from studentWhere sno in(Select sno from gradeGroup by snoHaving count(*)=Select count(*) from course);OR: Select sname from studentWhere (Select count(cno) from grade Group by sno )=(Select count(*) from course);解法三:Select SnameFrom StudentWHERE not exists(Select CnoFrom CourseexceptSelect CnoFrom GradeWHERE Student.Sno=Grade.Sno);类似表达的还有:--1.SELECT Sname FROM StudentWHERE (select count(cno) from course)=(SELECT count(sno) FROM GradeGROUP BY Sno)--2.SELECT Sname FROM StudentWHERE Sno=ANY(SELECT Sno FROM GradeGROUP BY SnoHAVING(COUNT(*)=(SELECT COUNT(*) FROM Course)))ORDER BY Sname;(1)查询选修了3号课程的学生学号及成绩,并按成绩的降序排列select Sno,Gmark from Gradewhere Cno='3'order by Gmark desc;(2)查询全体学生信息,要求查询结果按班级号升序排列,同一班级学生按年龄降序排列select * from Studentorder by Clno,Sage desc;(3)求每个课程号及其相应的选课人数select Cno,count(Sno) as 选课人数 from Gradegroup by Cno;(4)查询选修了3门以上课程的学生学号select Sno,count(Cno) as 选课门数 from Gradegroup by Snohaving count(Cno)>3;select sno from Grade gwhere (select COUNT(cno) from Gradewhere Sno=g.Sno)>3;五、思考题:1.用UNION或UNION ALL将两个SELECT命令结合为一个时,结果有何不同?2.当既能用连接词查询又能用嵌套查询时,应该选择哪种查询较好?为什么?3.库函数能否直接使用在:SELECT选取目标、HAVING子句、WHERE子句、GROUP BY 列名中?上机实验六——SQL的存储操作三、实习内容:完成以下各项操作的SQL语句:①将01311班全体学生的成绩置零;②删除2001级计算机软件的全体学生的选课记录;③学生李勇已退学,从数据库中删除有关他的记录;④对每个班,求学生的平均年龄,并把结果存入数据库。

相关文档
最新文档