数据库上机实验报告

合集下载

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告数据库上机实验网络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、总结实验过程中遇到的问题及解决。

数据库第一次上机报告文档

数据库第一次上机报告文档

数据库第一次上机报告姓名:学号:班级:时刻:一、实验题目:1、用DDL语句创建习题中的数据库及大体表、约束、视图等数据库对象;2、用DML语句插入、删除、修改教材中的实例数据;3、选择完成作业中的查询(很多于10个);4、选做教材例题中的建库及查询。

二、实验目标:熟练把握SQL的查询建表语句,对数据库有一个整体的了解,同时查验作业当中显现的问题,并给予解决。

三、实验进程:一、对BANK数据库的实验建表:USE masterGOCREATE DATABASE BANKON PRIMARY( NAME='bank',FILENAME='D:\database\', SIZE=4,MAXSIZE=10,FILEGROWTH=1),FILEGROUP BANK_FG1( NAME = 'bank1',FILENAME ='D:\database\', SIZE = 1MB,MAXSIZE=10,FILEGROWTH=1),( NAME = 'BANK_FG1_Dat2', FILENAME = 'D:\database\', SIZE = 1MB,MAXSIZE=10,FILEGROWTH=1)LOG ON( NAME='bankDB_log',FILENAME = 'D:\database\',SIZE=1,MAXSIZE=10,FILEGROWTH=1)GOALTER DATABASE BANKMODIFY FILEGROUP BANK_FG1 DEFAULT二、对account建表USE [Economics]GO/****** 对象: Table [dbo].[account] 脚今日期: 03/31/2020 15:51:17 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[account]([account_number] [varchar](30) NOT NULL,[branch_name] [varchar](30) NULL,[balance] [int] NULL,CONSTRAINT [PK_account] PRIMARY KEY CLUSTERED([account_number] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[account] WITH CHECK ADD CONSTRAINT [FK_account_branch] FOREIGN KEY([branch_name])REFERENCES [dbo].[branch] ([branch_name]) GOALTER TABLE [dbo].[account] CHECK CONSTRAINT [FK_account_branch]/********************************************* *填凑数据account********************************************** */INSERT INTO account VALUES('A-101','Downtown',500);INSERT INTO account VALUES('A-102','Perryridge',400);INSERT INTO account VALUES('A-201','Brighton',900);INSERT INTO account VALUES('A-215','Mianus',700);INSERT INTO account VALUES('A-217','Brighton',750);INSERT INTO account VALUES('A-222','Redwood',700);INSERT INTO account VALUES('A-305','Round Hill',350);三、对borrower建表USE [Economics]GO/****** 对象: Table [dbo].[borrower] 脚今日期: 03/31/2020 16:10:44 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[borrower]([customer_name] [varchar](30) NULL,[loan_number] [varchar](30) NULL) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[borrower] WITH CHECK ADD CONSTRAINT[FK_borrower_customer] FOREIGNKEY([customer_name])REFERENCES [dbo].[customer] ([customer_name])GOALTER TABLE [dbo].[borrower] CHECK CONSTRAINT [FK_borrower_customer] GOALTER TABLE [dbo].[borrower] WITH CHECK ADD CONSTRAINT [FK_borrower_loan] FOREIGN KEY([loan_number])REFERENCES [dbo].[loan] ([loan_number])GOALTER TABLE [dbo].[borrower] CHECK CONSTRAINT [FK_borrower_loan]/****************************************填凑数据borrower*****************************************/INSERT INTO borrower VALUES('Adams','L-16');INSERT INTO borrower VALUES('Curry','L-93');INSERT INTO borrower VALUES('Hayes','L-15');INSERT INTO borrower VALUES('Jackson','L-14');INSERT INTO borrower VALUES('Jones','L-17');INSERT INTO borrower VALUES('Smith','L-11');INSERT INTO borrower VALUES('Smith','L-23');INSERT INTO borrowerVALUES('Williams','L-17');四、对branch建表USE [Economics]GO/****** 对象: Table [dbo].[branch] 脚今日期: 03/31/2020 15:44:24 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[branch]([branch_name] [varchar](30) NOT NULL,[branch_city] [varchar](30) NULL,[assets] [int] NULL,CONSTRAINT [PK_branch] PRIMARY KEY CLUSTERED([branch_name] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFF/*********************************************填凑数据branch********************************************** /INSERT INTO branchVALUES('Brighton','Brooklyn',7100000);INSERT INTO branchVALUES('Downtown','Brooklyn',9000000);INSERT INTO branchVALUES('Mianus','Horseneck',400000);INSERT INTO branchVALUES('North Town','Rye',3700000);INSERT INTO branchVALUES('Perryridge','Horseneck',1700000);INSERT INTO branchVALUES('Pownal','Bennington',300000);INSERT INTO branchVALUES('Redwood','Palo Alto',2100000);INSERT INTO branchVALUES('RoundHill','Horseneck',8000000);五、对customer建表USE [Economics]GO/****** 对象: Table [dbo].[customer] 脚今日期: 03/31/2020 16:16:46 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[customer]([customer_name] [varchar](30) NOT NULL,[customer_street] [varchar](30) NULL,[customer_city] [varchar](30) NULL,CONSTRAINT [PK_customer] PRIMARY KEY CLUSTERED([customer_name] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFF/****************************************填凑数据customer*****************************************/INSERT INTO customerVALUES('Adams','Spring','Pittsfield');VALUES('Brooks','Senator','Brooklyn');INSERT INTO customerVALUES('Curry','North','Rye');INSERT INTO customerVALUES('Glenn','Sand Hill','Woodside');INSERT INTO customerVALUES('Green','Walnut','Stamford');INSERT INTO customerVALUES('Hayes','Main','Harrison');INSERT INTO customerVALUES('Johnson','Alma','Plo Alto');INSERT INTO customerVALUES('Jones','Main','Harrison');INSERT INTO customerVALUES('Lindsay','Park','Pittsfield');INSERT INTO customerVALUES('Smith','North','Rye');VALUES('Turner','Putnam','Stamford');INSERT INTO customerVALUES('Williams','Nassau','Princeton');六、对depositor建表USE [Economics]GO/****** 对象: Table [dbo].[depositor] 脚今日期: 03/31/2020 16:44:26 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[depositor]([customer_name] [varchar](30) NOT NULL,[account_number] [varchar](30) NOT NULL) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[depositor] WITH CHECK ADD CONSTRAINT[FK_depositor_account1] FOREIGNKEY([account_number])REFERENCES [dbo].[account] ([account_number])GOALTER TABLE [dbo].[depositor] CHECK CONSTRAINT [FK_depositor_account1] GOALTER TABLE [dbo].[depositor] WITH CHECK ADD CONSTRAINT[FK_depositor_customer] FOREIGNKEY([customer_name])REFERENCES [dbo].[customer] ([customer_name])GOALTER TABLE [dbo].[depositor] CHECK CONSTRAINT [FK_depositor_customer]loan] 脚今日期: 03/31/2020 15:37:27 ******/ SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[loan]([loan_number] [varchar](30) NOT NULL,[branch_name] [varchar](30) NULL,[amount] [int] NULL,CONSTRAINT [PK_loan] PRIMARY KEY CLUSTERED([loan_number] ASC)WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF,IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET ANSI_PADDING OFFGOALTER TABLE [dbo].[loan] WITH CHECK ADD CONSTRAINT [FK_loan_branch] FOREIGN KEY([branch_name])REFERENCES [dbo].[branch] ([branch_name]) GOALTER TABLE [dbo].[loan] CHECK CONSTRAINT [FK_loan_branch]/**************************************填凑数据loan**************************************/INSERT INTO loan VALUES('L-11','Round Hill',900);INSERT INTO loan VALUES('L-14','Downtown',1500);INSERT INTO loan VALUES('L-15','Perryridge',1500);INSERT INTO loan VALUES('L-16','Perryridge',1300);INSERT INTO loan VALUES('L-17','Downtown',1000);INSERT INTO loan VALUES('L-23','Redwood',2000);INSERT INTO loan VALUES('L-93','Mianus',500);七、表图建完表后的关系图:Account:Borrower:Branch:Customer:Depositor:Loan:八、查询课件上的代码和作业代码/*find all loan number for loans made at the Perryridge branch with loan amounts greaterthan $1200*/SELECT loan_number,amountFROM loanWHERE branch_name = 'Perryridge' AND amount >'1200';/*find the name ,loan number and loan amount of all customer;rename the columnname loan_number as loan_id*/SELECT customer_name, AS loan_id,amountFROM borrower,loanWHERE = ;/*find the names of all branches that have greater assets than some branch located in Brooklyn*/SELECT DISTINCT , ,,FROM branch AS B1,branch AS B2WHERE > AND = 'Brooklyn';/*find the names of all customers whose street includes the substring "Main"*/SELECT customer_name,customer_streetFROM customerWHERE customer_street LIKE'%Main%';/*list in alphabetic order the names of all customers having a loan in Perryridge branch*/ SELECT DISTINCT customer_name,, , branch_nameFROM borrower,loanWHERE = AND branch_name='Perryridge'ORDER BY customer_name;/*find all customers who have a loan,an account,or both*/(SELECT customer_name FROM depositor) UNION(SELECT customer_name FROM borrower);/*find all customers who have both a loan and an account*/(SELECT customer_name FROM depositor) INTERSECT(SELECT customer_name FROM borrower);/*find all customers who have an account but no loan*/(SELECT customer_name FROM depositor) EXCEPT(SELECT customer_name FROM borrower);/*Aggregate Functions*/SELECT avg(balance)FROM accountWHERE branch_name = 'Perryridge';SELECT count(*)FROM customer;SELECT count(DISTINCT customer_name) FROM depositor;/*the group by*/SELECT branch_name, count(DISTINCT customer_name)FROM depositor,accountWHERE =GROUP BY branch_name;/*having clause*/SELECT branch_name,avg(balance) FROM accountGROUP BY branch_nameHAVING avg(balance) > 500;/*the in clause*/SELECT DISTINCT customer_name FROM borrowerWHERE customer_name IN(SELECT customer_name FROM depositor);SELECT DISTINCT customer_name FROM borrowerWHERE customer_name NOT IN( SELECT customer_name FROM depositor);/*有错误SELECT DISTINCT customer_nameFROM borrower,loanWHERE = AND branch_name = 'Perryridge' AND(branch_name,customer_name)IN(SELECTbranch_name,customer_nameFROM depositor,accountWHERE = ;*/SELECT branch_nameFROM branchWHERE assets > some(SELECT assetsFROM branchWHERE branch_city = 'Brooklyn');SELECT branch_nameFROM branchWHERE assets > all(SELECT assetsFROM branchWHERE branch_city = 'Brooklyn');SELECT branch_nameFROM accountGROUP BY branch_nameHAVING avg(balance) >= ALL(SELECT avg(balance)FROM accountGROUP BY branch_name);/*test for empty relation*/SELECT DISTINCT customer_nameFROM depositorWHERE EXISTS(SELECT *FROM accountWHERE =AND balance >700);/*Queries*/SELECT DISTINCT balanceFROM accountEXCEPTSELECTFROM account AS A1,account AS A2 WHERE < ;/*test for absence of Duplicate Tuples*/ /*SELECT DISTINCTFROM depositor AS D1WHERE UNIQUE(SELECTFROM account AS A,depositor AS D2 WHERE =AND = AND = 'Perryridge');*/十、有疑问的题目代码/*第一个有错误的查询语句*/SELECT DISTINCT customer_nameFROM borrower,loanWHERE = AND branch_name = 'Perryridge'AND(branch_name,customer_name)IN(SELECT branch_name,customer_name FROM depositor,accountWHERE = ;/*第二个有错误的查询语句*/SELECT DISTINCTFROM depositor AS D1WHERE UNIQUE(SELECTFROM account AS A,depositor AS D2WHERE =AND = AND = 'Perryridge');总结:可能是软件不能识别UNIQUE和IN这两个关键字。

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告摘要:本次数据库上机实验主要介绍了SQL语言在数据库中的应用,通过实际操作掌握了SQL语言的基本语法和常用命令,同时实践了数据库的建立、数据表的创建、数据插入、修改、删除、以及查询等操作。

本文将详细介绍实验中所使用的数据结构和算法,以及实验数据和结果的分析与总结。

一、实验目的本次实验的目的是对数据库相关的运用做一次实践操作,包括了数据库的建立、数据表的创建、数据插入、修改、删除、以及查询等操作。

力求将理论知识与实践经验相结合,为今后的数据库实践奠定基础。

二、实验原理本次实验中主要使用的是SQL语言对数据库进行管理。

SQL是一种结构化查询语言,可以对数据库进行查询、操作、管理等。

通过SQL语言对数据库中的数据进行增、删、改、查等操作,可以实现对数据的有效管理。

三、实验步骤1. 建立数据库首先在本地电脑建立数据库,可以通过使用全局管理工具进行实现。

2. 创建数据表在数据库中创建数据表,可以用CREATE TABLE命令来实现。

首先需要指定表的名称,其次需要指定表的字段名及其数据类型。

3. 插入数据表创建好之后,可以向表中插入数据。

可以使用INSERT命令将数据插入到表中,INSERT后面接表名和插入的数据。

4. 数据查询对于已经插入到数据库中的数据,可以进行查询操作。

可以通过SELECT语句对数据库进行查询。

SELECT后面需要指定要查询的字段名或者使用星号表示要查询全部字段。

5. 数据修改在数据库中,数据的修改一般是使用UPDATE命令来实现。

通过UPDATE语句可以修改已经存在的数据信息。

6. 数据删除表中的某个项不再需要时,可以通过DELETE语句来删除数据库中的数据项。

DELETE命令后面跟上要删除的数据。

四、实验结果通过SQL的基本命令,我们在本地电脑中成功的建立起了一个数据库,并把相关的数据插入到该数据库中。

在查询过程中,SQL可以只按照需要查询的数据来进行操作,使得数据的处理过程更加高效。

数据库系统原理上机实验报告(样例)

数据库系统原理上机实验报告(样例)

《数据库系统原理》上机实验一.实验目的围绕数据库设计和上机编程实践这两方面工作进行,通过对某种数据库产品及开发工具(Access,SQL Server,Oracle,VFP,PB,VB,VC,Delphi等)的熟悉和了解,对于给出的一个具体问题,首先通过对其综合分析,进行数据库的概念模型设计、关系数据库的逻辑结构设计,使其达到3NF或BCNF模式,然后进行在RDBMS下的设计和各个具体功能模块的编程,要求调试、测试成功,最后完成一个小型数据库应用系统。

二.实验内容对于给出的一个现实世界的实际应用项目,在正确分析问题的基础上,完成以下任务:1、用ER图方法设计概念数据库;2、用关系规范化方法设计数据库逻辑模型;3、用VFP(或任何一种关系型数据库产品)建立关系数据库;4、用PB(VFP, VB, VC,Delphi等)操纵数据库;5、用WEB数据库开发工具如JSP、ASP、操纵Web数据库(可选择)。

6、编制一个小型数据库应用系统。

三.实验过程实验一:概念数据库及逻辑数据库的设计,进一步熟悉VFP等编程语言,完成数据库的建立、数据的录入(至少5个记录,要求数据要典型)(一)问题的描述:一个图书借阅管理数据库要求提供下述服务:1)可随时查询书库中现有书籍的品种、数量与存放位置。

所有各类书籍均可由书号唯一标识。

2)可随时查询书籍借还情况。

包括借书人单位、姓名、借书证号、借书日期和还书日期。

我们约定:任何人可借多种书。

任何一种书可为多个人所借。

借书证号具有惟一性。

3)当需要时,可通过数据库中保存的出版社的电报编号、电话、邮编及地址等信息向有关书籍的出版社增购有关书籍。

我们约定,一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。

(二)概念模型:满足上述需求的E-R图:(三)关系数据库模型:定义如下基本表:1)借书人(借书证号,姓名,单位)借书证号:读者编号,长度为4的字符型,要求唯一、非空姓名:读者姓名,长度为10的字符型单位:读者地址,长度为20的字符型2)图书(书号,书名,数量,位置,出版社名)书号:图书编号,长度为4的字符型,要求唯一、非空书名:图书书名,长度为20的字符型出版社名:出版社,长度为20的字符型,默认为’河北工业大学’作者:图书作者,长度为10的字符型价格:书价,带两位小数三位整数的数值型,要求大于0,并给出出错提示3)借阅(借书证号,书号,借书日期,还书日期)借书证号:读者编号,类型与借书人中的一致书号:图书编号,类型与图书中的一致借书日期:借阅日期,日期型,默认填写当天日期(提示:获取当前日期的函数为DATE())4)出版社(出版社名,电报,电话,邮编,地址)……(四)数据库的建立与记录的录入:1)VFP提供的开发环境:(练习基本操作)2)数据库操作:创建数据库:文件→新建→数据库→新建文件→输入库名和保存位置→建库(建立以上各表)关闭、打开、修改数据库:……往库中加入、删除表,表的修改:……3)组织数据入库:直接往数据库中录入:……通过自己开发的数据录入子系统录入:…………实验二:完成系统总体功能模块设计,利用VFP等操纵数据库,包括编程序设计一个人机交互界面,使之具有插入、修改、删除、查询等基本模块,有能力的同学可以进一步完成数据库的维护,包括权限设置、用户管理、系统维护、报表输出、数据库备份、恢复等功能。

数据库综合实训上机报告

数据库综合实训上机报告

一、实训背景随着信息技术的飞速发展,数据库技术已经成为各行各业不可或缺的基础技术。

为了提高学生的数据库应用能力,我们学院开展了数据库综合实训课程。

本次实训旨在通过上机实践,让学生全面掌握数据库设计、创建、查询、维护等基本操作,提高学生的数据库应用技能。

二、实训目标1. 掌握数据库设计的基本原则和方法;2. 熟练运用SQL语言进行数据库操作;3. 学会使用数据库管理系统(如SQL Server、MySQL等)进行数据库的创建、查询、维护等操作;4. 培养学生团队协作能力和沟通能力。

三、实训内容1. 数据库设计(1)需求分析:了解项目背景,分析项目需求,确定数据库功能。

(2)概念设计:根据需求分析,设计实体关系图(ER图),确定实体、属性和关系。

(3)逻辑设计:将ER图转换为关系模型,设计数据库表结构,确定表之间的关系。

(4)物理设计:选择合适的数据库管理系统,创建数据库,设计存储过程、触发器等。

2. 数据库创建与操作(1)创建数据库:使用SQL语句创建数据库,设置用户权限。

(2)创建表:根据设计好的表结构,使用SQL语句创建表,设置字段属性、约束等。

(3)插入、删除、修改数据:使用SQL语句进行数据的增删改操作。

(4)查询数据:使用SELECT语句进行数据查询,包括简单查询、条件查询、多表查询等。

3. 视图与存储过程(1)创建视图:根据查询需求,使用SQL语句创建视图,简化查询操作。

(2)创建存储过程:封装常用操作,提高代码重用性。

4. 数据库维护与优化(1)备份与恢复:定期备份数据库,确保数据安全。

(2)索引优化:合理创建索引,提高查询效率。

(3)性能监控:监控数据库性能,及时发现问题并解决。

四、实训过程1. 组建实训小组:每组由3-5人组成,明确分工,提高团队协作能力。

2. 分阶段完成任务:按照实训内容,分阶段完成数据库设计、创建、操作、维护等任务。

3. 汇报与交流:每个小组定期汇报实训进度,分享经验,互相学习。

数据库上机实验报告

数据库上机实验报告

数据库实验(第三次)题目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. 试比较连接查询和嵌套查询有些嵌套查询是可以用连接来代替的,而且使用连接的方式,性能要比嵌套查询高出很多当查询涉及多个关系时,用嵌套查询逐步求解结构层次清楚,易于构造,具有结构化程序设计的优点。

数据库上机实验报告

数据库上机实验报告

数据库上机实验报告数据库上机实验报告试验内容1、数据表的建立基本表《简单的》带有主键带有外码约束的(外码来自其他表或者本表)2、数据表的修改添加删除列修改列属性类型添加删除约束(约束名)元组的添加,修改,删除删除数据表试验过程1、create table student(sno char(9) primary key , /*sn o是主码列级完整性约束条件*/sname char(20) unique, /*sname 取唯一值*/ssex char(2),sage smallint, /*类型为smallint*/sdept char(20)/*所在系*/);create table course(cno char(4) primary key, /*列级完整性约束条件,cno是主码*/cname char(40),cpno char(4),/*cpno的含义是先行课*/ccredit smallint,foreign key (cpno) references course(cno)/*表级完整性约束条件,cpno是外码,被参照表是course,被参照列是cno*/);create table sc(sno char(9),cno char(4),grade smallint,primary key (sno,cno),/*主码有两个属性构成,必须作为表级完整性进行定义*/foreign key (sno) references student(sno),/*表级完整性约束条件,sno是外码,被参照表是student*/foreign key (cno) references course(cno),/*表级完整性约束条件,cno是外码,被参照表示course*/);例1、create table s(cno varchar(3), /*变长的字符串,输入2个字符就是两个字符不会补空格*/sname varchar(20),status int,city varchar(20),constraint pk_sno primary key(sno), /*约束条件的名字为pk_sno*/);create table p(pno varchar(3),pname varchar(20),color varchar(3),weight int,constraint pk_pno primary key (pno), /*约束条件的名字是pk_pno*/);create table j(jno varchar(3),jname varchar(20),city varchar(20),constraint pk_jno primary key(jno) /*约束条件的名字为pk_jno*/);例2、create table spj(sno varchar(3), /*第一个表中的主码*/pno varchar(3),jno varchar(3),qty int, /*数量*/constraint pk_spj primary key(sno,pno,jno), /*主码由3个属性组成*/foreign key(sno) references s(sno),/*表级完整性约束条件,sno是外码,被参照表是s*/foreign key(pno) references p(pno),/*表级完整性约束条件,pno是外码,被参照表是p*/foreign key(jno) references j(jno),/*表级完整性约束条件,jno是外码,被参照表是j*/);2、数据表的更改在s表中添加一个concat 列alter table s add concat varchar(20)在s表中删除concat 列alter table s drop column concat更改s表concat列的属性把长度由20改为30alter table s alter column concat varchar(30)联系方式名字为concat 修改属性为唯一的属性名为con_concatalter table s add constraint con_concat uniqu e(concat)删除约束关系con_concatalter table s drop constraint con_concat/*插入一个元组*/insert into s valus(‘s1’,’精益’,20,’天津’) /*20不能写成’20’*/试验中的问题的排除与总结:1、在创建spj时有三个实体所以从3个实体中取主码,还有一个数量属性也要写上主码由那3个主码确定2、更改一个数据库中数据表时一定要先使该数据库处于正在使用状态3、constraint是可选关键字,表示primary key、not null、unique、foreign key 或check 约束定义的开始。

数据库上机实验报告

数据库上机实验报告

数据库上机报告(一)上机实验项目名称:库以及表的基本操作学号:项目学时:姓名:班级:目录一、实验目的二、实验内容三、设计步骤以及实验结果四、实验总结一、实验目的(1)熟悉SQL Sever数据库组成(2)了解如何创建、导入以及删除数据库(3)熟悉表的创建与管理二、实验内容:(1)数据库由包含数据的基本表和其他对象(视图、索引、存储过程和触发器)组成。

系统数据库包括master数据库(记录所有其他的数据库以及相关信息)tempdb数据库(保存所有的临时表和临时存储过程)msdb数据库。

(2)建立所需要的数据库(3)建立学生表课程表以及选课表三、设计步骤以及实验结果(3.2.1)新建数据库操作:打开SQL Sever软件点开资源管理器下数据库标志左侧的加号,在下拉菜单中右键点击,(见右上图)之后点击新建数据库之后在弹出的对话框中数据库名称一栏输入你所要的数据库名称;单击确定,建立数据库完成。

(3.2.2)导入数据库一种方法是将数据库的两个源文件放在数据库存放源文件的文件夹里,之后在数据库上右击点击附加,在弹出的窗口选择添加,会弹出另一个窗口选择你要附加的数据库的源文件将其导入进来。

第二种方法是新建一个数据库,名字最好与你即将要导入进来的数据库名称一致,在所建立好的数据库上单击右键选择任务--还原--数据库,选择设备选项,接着将要导入的源文件都添加进来点击确定(3.2.3)删除数据库首先需要在你所要删除的数据库上单击右键选择任务--分离,之后要在存放数据库源文件的根目录下将有关其数据库的内容删除掉(根目录具体位置见上图)。

(3.3)创建学生表,课程表以及选课表并且对其进行适当的约束(3.3.1)创建学生表展开已经创建好的数据库student,在【表】上单击右键,选择【新建表】在前5列设计写入列名为Sno,Sname,Ssex,Sage,Sdept数据类型分别为nchar(10) ,varchar(50) ,nchar(2),int,nchar(10),其中后四项可以为null值,且将学生号Sno设为主键。

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

数据库实验报告(所有实验)院系:信息科学与工程学院专业:网络工程电子商务班级:姓名:学号:指导老师:年月日一、实验目的熟练掌握SQL语句的插入、修改、删除、查询等相关语法。

能够使用Microsoft SQL Server和MySQL软件进行相关的数据库操作。

二、实验内容1数据库的创建和使用;2表的创建和使用;3数据的插入、删除和修改;4数据的查询;5.视图的创建和使用。

实验一、创建学生成绩管理数据库在学生成绩管理数据库中,包括基本的三个关系:student,course,sc 。

(1)student(sno,sname,ssex,sage,sdept),表示学号,姓名,性别,年龄,所在系。

主键学号,姓名唯一,系默认cs。

(2)Course (cno,cname,cpno,ccredit),表示课程号,课程名,先行课程号,学分。

主键课程号(3)SC (sno,cno,grade),表示学号,课程号,成绩。

外键,学号和课程号。

创建该数据库代码及其最后结果图如下:create table student(sno char(20) primary key,sname char(10) unique,ssex char(2),sage smallint,sdept char(12) default'cs')create table course(cno char(10) primary key,cname char(20),cpno char(10),ccredit char(6))create table sc(sno char(20),cno char(10),grade smallint,primary key(sno,cno),foreign key(sno) references student(sno), foreign key(cno) references course(cno))实验二、在实验一的结果上进行各种操作练习及其代码一修改表结构,对学生表增加,电话号码一列,删除年龄一列。

alter table studentadd pnumber char(22)alter table studentdrop column sage二简单查询例1.查询全体学生详细记录select *from student例2.查询信息系所有男生的学号、姓名、出生年份select sno,sname,sagefrom studentwhere ssex='男'例3.查询选修过课的学生的学号select snofrom sc例4. 查询年龄在25-30之间的学生姓名及性别。

select sname,ssexfrom studentwhere sage between 25 and 30例5. 查询姓“欧阳”的学生。

select snamefrom studentwhere sname like '欧阳%'例6. 查询信息系IS,数学系MA和计算机系CS的学生。

select snamefrom studentwhere sdept='is' or sdept='ma' or sdept='cs'例7 查询所有学生的成绩及姓名select grade,snamefrom student,scwhere sc.sno=student.sno例8 查询‘95001‘学生的所选的课程,成绩和专业select cname,grade,sdeptfrom student,sc,coursewhere student.sno=sc.sno and o=o and student.sno='95001'实验三、四关系模式如下:数据内容如下:创建数据库并使用数据库创建表EMPLOYEE并插入数据创建表DEPARTMENT并插入数据创建表PROJECT并插入数据创建表WORKS_ON并插入数据创建表DEPT_LOACTION并插入数据创建表DEPENDENT并插入数据查询操作实验五、附加MSSQL2000的示例数据库pubs数据库1.使用演示脚本创建表、插入数据,查找以‘x%’开头的数据。

--建表create table test(col varchar(10))--插入数据insert into test values('x_yz')insert into test values('[xyz]')insert into test values('x%yz')insert into test values('xyz')练习及其代码如下:--练习1--找出pubs数据库titles表中计算机类图书中价格最高的图书的价格。

USE pubsSELECT max(price) FROM titleswhere type='popular_comp'--练习2--查询titles表中有几类图书。

USE pubsSELECT count(distinct type) FROM titles--练习3--按照州进行分类,查找每个州有几名作者。

USE pubsSELECT state, count(*) FROM authorsgroup by stateorder by 1--练习4--要求按照出版商id进行分类,查找每个出版商的书到目前为止的销售额总和(ytd_sales)。

USE pubsSELECT pub_id, sum(ytd_sales) FROM titlesgroup by pub_idorder by 1--练习5--在pubs数据库的titles表中,找出平均价格大于18美元的书的种类。

USE pubsSELECT pub_id,avg(price) '平均价格' FROM titlesGROUP BY pub_idHAVING avg(price) > 18-练习6 --在pubs数据库的titles表中,找出最高价大于20美元的书的种类。

USE pubsSELECT type,max(price) '平均价格' FROM titlesGROUP BY typeHAVING max(price) > 20--练习7 -- 找出title_id和pub_name的对应关系。

Use pubsSelect titles.title_id, publishers.pub_nameFrom titles JOIN publishersON titles.pub_id=publishers.pub_id--练习8 --找出title_id, title和pub_name的对应关系。

Use pubsSelect titles.title_id, titles.title,publishers.pub_nameFrom titles JOIN publishersON titles.pub_id=publishers.pub_id--练习9 --查询每个作者的编号,姓名,所出的书的编号,并对结果排序。

Use pubsSelect authors.au_id,authors.au_fname + '.' + authors.au_lname 'name',titleauthor.title_idFrom authors JOIN titleauthorON authors.au_id=titleauthor.au_idorder by authors.au_id10. 从authors表中选择state,city列,从publisher表中选择state,city列,并把两个查询的结果合并为一个结果集,并对结果集按city列、state列进行排序。

use pubsselect state,city from publishersunionselect state,city from authorsorder by 1,211. 对上面的查询语句作修改,保留所有重复的记录。

Selectauthors.city,authors.state,publishers.city,publishers.state from publishers,authors12.显示所有来自CA州的作家的全部作品和作家代号。

(使用IN,和连接两种方法)use pubsselect title_id,au_idfrom titleauthorwhere au_id in( select au_id from authors where state = 'CA')order by title_iduse pubsselect t.title_id,t.au_idfrom titleauthor t join authors a on t.au_id = a.au_idwhere a.state = 'CA'order by title_id13.查找由位于以字母B 开头的城市中的任一出版商出版的书名:(使用exists 和in两种方法)USE pubsSELECT title FROM titlesWHERE EXISTS(SELECT *FROM publishersWHERE pub_id = titles.pub_id AND city LIKE 'B%')USE pubsSELECT title FROM titlesWHERE pub_id IN (SELECT pub_id FROM publishers WHERE city LIKE 'B%')实验六、修改数据练习一用sql命令插入数据(1)创建一个表STU,有三列:id int,name varchar(10),class_id char;要求id列为自动增长,class_id列具有默认值‘0801’。

create table stu(id int identity(1,1),name varchar(10),class_id char(10) default('0801'))(2)并为此表插入数据:‘zhj’,'0801'‘Wxm’,'0801'‘Mbb’,'0801'‘Wd’,'0802'insert into stu(name,class_id)values('zhj','0801')insert into stu(name,class_id)values('Wxm','0801')insert into stu(name,class_id)values('Mbb','0801')insert into stu(name,class_id)values('Wd','0802')二:使用insert …select语句,建立一个新表:CA_author,这个表只包含家在CA州的作者的au_id, name(包括fname和lname), phone, address。

相关文档
最新文档