《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句

《数据库原理与应用》课程实验报告一 数据库的定义和维护

1.实验内容

1.基本操作实验

(1)使用SQL Server Management Studio建立图书借阅数据库。
(2)在SQL Server Management Studio中查看图书借阅数据库的属性,并进行修改,使之符合要求。
(3)通过SQL Server Management Studio,在建好的图书借阅数据库中建立图书、读者和借阅3个表,
其结构为:
图书(书号,类别,出版社,作者,书名,定价);
读者(读者编号,姓名,单位,性别,电话);
借阅(书号,读者编号,借书日期,还书日期);
要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和
Default Value(缺省值)等列级数据约束。
(4)在SQL Server Management Studio建立图书、读者和借阅3个表的表级约束:每个表的Primary Key(主键)约束;借阅表与图书表间、借阅表与读者表之间的foreign key(外码)约束,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check(检查)约束。
(5)在图书借阅数据库的图书、读者和借阅3个表中各输入5条记录。要求记录不仅满足数据约束要求,还要有表间关联的记录。亦可以通过T-SQL语言实现对图书借阅数据库的图书、读者和借阅3个表中数据的插入、删除和修改操作。

2.提高操作实验

建立学生选课数据库操作,在SQL Server Management Studio实现。
数据库中表结构为:
学生(学号,姓名,年龄,性别,所在系);
课程(课程号,课程名,学分,先行课);
选课(学号,课程号,成绩);
要求:
(1)建库、建表、建立表间联系。
(2)选择合适的数据类型。
(3)定义必要的列级约束和表级约束。
(4)通过SQL Server Management Studio新建查询实现对学生选课数据库的数据增加、数据删除和数据修改操作。
要求学生、课程和选课表中各有5条以上记录。

2.实验过程

实验一:

(1).创建数据库
在这里插入图片描述
(2).利用sql语句进行操作

--建立图书表
create table Book1
(
  B_num  varchar(20) primary key, --主键
  B_sort varchar(20) , 
  B_publish varchar(20),
  B_author varchar(20),
  B_name varchar(20) not null,
  B_price numeric(5,2) --小数  
  )
  drop table  Book1;
--建立读者表
  create table  Reader1
  (
  R_num varchar(20) primary key, --主键
  R_name varchar(5) not null,
  R_unit varchar(10),
  R_sex varchar(4) default '男'   not null check (R_sex='男' or R_sex ='女'),
  R_tel varchar(11) 
  )
 drop table reader1;
 --建立借阅表
 create table Borrow1
 (
   B_num  varchar(20) ,
   R_num varchar(20),
   LonaDate date  not null,
   ReturnDate  date  default '2000-01-01' ,--默认时间 
   primary key (B_num,R_num),
   foreign key(R_num) references Reader1(R_num),
   foreign key(B_num) references Book1(B_num)
 )
 drop table Borrow1 ;

 --查看内容
 select * from book1;
 select * from reader1;
 select * from Borrow1;

  --插入数据
 insert into  book1 values ('00000001','计算机','中国工信集团','谢希任','计算机网络',49.00),
                      ('00000002','计算机','科学出版社','白中英','计算机组成',47.56),
				    ('00000003','小说','广西师范大学出版社','肖恩·白塞尔','书店日记',35.46),
				    ('00000004','小说','湖南科学技术出版社','卡洛·罗韦利','时间的秩序',56.00),
				    ('00000005','小说','南海出版公司','塔拉·韦斯特弗','你当像鸟飞往你的山',49.00)


 insert into  Reader1 values('01','李蛋',' ','男',12345678901),
							('02','翠花','财务 ','男',12345678901),
							('03','狗子','行政','男',12345678901),
							('04','张三','销售','男',12345678901),
							('05','张伟','研发','男',12345678901)

insert into   Borrow1 values('00000004','03','2018-07-03',GETDATE()),
                            ('00000001','03','2018-07-09',GETDATE()),
							('00000003','01','2019-12-03',GETDATE()),
							('00000004','01','2018-06-03',GETDATE()),
							('00000003','05','2019-05-03',GETDATE()),--当前时间
							('00000003','02','2019-05-03',GETDATE())
insert into   Borrow1(B_num,R_num,LonaDate)  values('00000005','02','2018-07-03') --实现默认时间

--删除数据
delete  from  Borrow1  where   B_num='00000004' and R_num='03'; 
--修改数据
update borrow1 set   B_num ='00000001'  where   B_num='00000005' and R_num='02'; 

实验二:

--创建学生表
create table student
(
  s_num  int PRIMARYKEY,
  s_name varchar(20)not null,
  s_age int check(s_age between 10 and 35),
  s_sex varchar(10) check(s_sex in('男', '女')) default '男', 
  s_unit varchar(20) not null
)
--插入数据
insert into student values (1815001,'张三',18,'男','机械学院'),
                          (1815002,'李白',30,'女','生工学院'),
						  (1815003,'后裔',11,'男','数计学院'),
						  (1815004,'翠花',25,'女','物理学院'),
						  (1815005,'狗蛋',21,'男','机械学院');
--创建课程表
create table course
(
c_num int PRIMARYKEY,
c_name varchar(20) not null,
c_credit  int check(c_credit in (1,2,3,4,5,6)),
先行课 varchar(20) )
--插入数据
drop table course
insert into  course values (001,'C语言',2,001),
							(002,'程序设计电路',2,001),
							(003,'数字电路',3,001),
							(004,'计算机组成',3,003),
							(005,'计算机网络',4,001);

select * from course
--创建选课表
create table selectCourse
(
 s_num  int,
 c_num int,
 score numeric(3,1)  not null   ,
 primary key (s_num,c_num),
 foreign key ( s_num) references student(s_num),
 foreign key (c_num) references course(c_num),
)
drop table selectCourse
--插入数据
insert into  selectCourse values(1815001,001,2),
                          (1815001,002,2),
						(1815001,003,3),
						(1815002,001,2),
						(1815004,001,2)
select * from  Course
--数据增加
insert into student values (1815006,'二狗',16,'男','体育学院');
--修改数据
update course set c_credit=5 where c_name='C语言'

3.实验结果

实验一:
1.将表建,插入数据后如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.进行数据修改后如下图所示:
在这里插入图片描述

实验二:
1.将表建,插入数据后如下图6,7,8所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.进行数据修改后如下图所示:

在这里插入图片描述
4.实验分析
①分析实验结果;
实验得到的结果和理论结果一致
②说明实验过程中遇到的问题及怎么解决。
1 .问题:用语句插入数据,想得到显示出自定义默认值,如下图所示的方法不行,实现不了
在这里插入图片描述
解决:只能通过数据特定列插入
在这里插入图片描述

③对错误方面进行分析;
一切要按sql语法进行合理的操作;插入数据时,要符合列级数据约束,否则报错

三、实验总结
本次实验完成度一般,相关的语法还不是熟悉,导致实验时速度慢,不能很快完成,在下面的学习中一定熟悉相关的语法,加强熟练度。

1、 Find the name, loan number and loan amount of all customers; rename the column name loan_number as loan_id. 2、 Find the names of all customers whose street includes the substring “Main”. 3、Find all customers who have a loan, an account, or both: 4、Find all customers who have both a loan and an account. 5、Find all customers who have an account but no loan. 6、Find the average account balance at the Perryridge branch. 7、 Find the number of tuples in the customer relation. 8、 Find the number of depositors in the bank. 9、 Find the number of depositors for each branch. 10、Find the names of all branches where the average account balance is more than $1,200. 11、Find all loan number which appear in the loan relation with null values for amount. 12、Find all customers who have both an account and a loan at the bank. 13、Find all customers who have a loan at the bank but do not have an account at the bank 14、Find all customers who have both an account and a loan at the Perryridge branch 15、Find all branches that have greater assets than some branch located in Brooklyn. 16、Find the names of all branches that have greater assets than all branches located in 1、创建一个School数据库,该数据库的主数据文件逻辑名称为SCHOOL_data,物理文件名为School.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为School_log,物理文件名为School.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB。 2、用SQL语句建立上述表,自定义主键和外键,对于student表建立约束条件:ssex仅能取male或female;sage在18和22之间。并完成下面的查询语句。 1、查询所有选修过“Bibliometrics”课的学生的姓名和成绩; 2、查询考试成绩不及格的学生的个数; 3、查询名字中至少含有一个“z”字符的学生的姓名、学号和性别; 4、查询选修了“Introduction to the Internet”课程的学生的学号及其成绩,查询结果按分数的降序排列; 5、查询“Zuo li”同学选修课程的总学时(time)数 6、查询年龄不大于20岁的学生的平均考试成绩; 7、查询 “computer science”专业学生选修 “Database System”的人数; 8、查询同时选修课程“Database System”和“Introduction to the Internet”的学生姓名; 9、查询选修的课程中含有“Wang gang”同学所有选修课程的学生姓名。 10、查询“Information Technology for Information Management”考试成绩为空的学生姓名及专业名称。 11、查询“computer science”专业学生每个人的选修课总学分。 12、查询个人考试平均成绩高于专业平均成绩的学生姓名 13、查询个人考试平均成绩高于女生平均成绩的男生姓名 14、查询比“computer science”专业所有学生年龄都大的学生姓名。 15、查询考试成绩仅有一科不及格学生姓名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值