《数据库原理与应用》课程实验报告一 数据库的定义和维护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).创建数据库
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第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.将表建,插入数据后如下图所示:
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第2张图片
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第3张图片
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第4张图片《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第5张图片
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第6张图片

2.进行数据修改后如下图所示:
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第7张图片

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

《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第8张图片
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第9张图片
《数据库原理与应用》课程实验报告一 数据库的定义和维护sql语句_第10张图片
2.进行数据修改后如下图所示:

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

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

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

你可能感兴趣的:(数据库原理与应用,数据库,sql,oracle,sqlserver)