前言
为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正!
一、实验目的
1、熟练掌握和使用 SQL 语言、SQL Server 企业管理器创建数据库、表、索引和修改表结构。
2、熟练掌握使用 SQL 语言和 SQL Server 企业管理器向数据库输入数据、修改数据和删除数据等操作。
二、实验要求
1、创建数据库和查看数据库属性。
2、创建表、确定表的主码、外码和约束条件。
3、通过 SQL Server 企业管理器向数据库表输入数据。
4、对数据库表中的数据进行数据插入、删除和修改等操作。
5、查看和修改表结构,维护修改结构后的数据库表的数据。
三、实验原理
1、基本操作实验
建立学生课程数据库,在 SQL Server 企业管理器中实现。库中表结构为:
学生(学号,姓名,年龄,性别,所在系);
课程(课程号,课程名,先行课);
选课(学号,课程号,成绩)
(1) 建立数据库
启动 SQL Server,选择开始菜单中的 Microsoft SQL Server 下的“SQL Server Management Studio”,启动 SQL Server,如图 1.1 所示。
出现“连接到服务器”界面。如图 1.2 所示,如果以 Windows 身份登录,点击“连接”按钮,进入 SQL Server Management Studio 主界面,如图 12, 1.3 所示。
点击左边“对象资源管理器”树状控制栏的+/-号可以打开和关闭 SQL Server 组中的本地服务项目,在选中“数据库”后,单击鼠标右键,出现数据库的菜单,如图 1.4 所示。
点击“新建数据库”,出现新建数据库窗口,如图 1.5 所示。输入数据库名称:ST,点击“确定”按钮。
如图 1.6、1.7 所示,刷新后,可看见新建的用户数据库 ST。
(2)建立表
点击数据库 ST 前面的+号,打开数据库的各种属性,如图 1.8 所示。
选中用户数据库 ST 下的“表”,单击鼠标右键,出现表的菜单,如图 1.9 所示。
点击“新建表”,出现新建表窗口,定义列,如图 1.10 所示。
输入列名,数据类型,长度等信息之后,按键Ctrl+S,出现选择表名窗口。如图 1.11
所示,输入表名,点击“确定”按钮,将新建的表存盘。
选中表 Student,单击鼠标右键,选择“设计”,可以重新打开 Student 表的结构窗口,如图 1.12 所示。
如图 1.10 所示,在 Student 表的结构窗口中,设定属性“Sno”为主码,点击
图标后退出 Student 表的结构窗口。
步骤同上,分别按建立 Course 表和 SC 表,设定属性“Cno”为 Course 表的主码,属性“Sno,Cno”为 SC 表的主码,同时设定 Sno,Cno 为外码如图 1.13、1.14 所示。
(3) 录入数据
在每个表中录入 10 条以上数据(参考教材上的数据库),录入数据时注意数据的录入顺序,先在被参照关系中录入数据,再在参照关系中录入数据。录入、修改数据时,选中服务器,展开数据库文件夹,进一步展开指定的数据库。单击表文件夹,找到需要更新数据的基本表。
1)选中表 Student,单击鼠标右键,选择“编辑前 200 行”,进入 Student 表的数据录入窗口。在该对话框中,数据以表格形式组织,每个字段就是表中的一列,每条记录是表中的一行。需要数据插入时,就在最后一条记录后输入一条记录。当鼠标点击其他行时,输入的记录会自动保存在表中。如图 1.15,1.16 所示。
2)需要修改记录时,直接对表中已有记录的数据进行改动,用新值替换原来值。
3)需要删除记录时,先用鼠标单击要删除行的左边灰色方块,使该记录成为当前行,然后按键。为了防止误操作,SQL Server 将弹出一个警告框,要求用户确认删除操作,单击“确认”按钮即可删除记录。也可通过先选中一行或多行记录,然后再按键的方法一次删除多条记录。
4)在表中单击鼠标右键时,会弹出一菜单,选择菜单项可执行相应的操作,如剪切、复制等操作。
5) 采用同样的方法录入 Course 表和 SC 表中的数据。
(3) 修改数据库
在 Course 表中添加一个授课教师列,列名为 Tname,类型为 varchar(8)
录入数据后,将表关闭。在 Microsoft SQL Server Management Studio 左侧的“对象资源管理器”下找到表 Course,单击鼠标右键,选择“设计”。在打开的窗口中添加列名为Tname,类型为 varchar(8)授课教师列,允许 Null 值,并点击保存。修改完成后的表Course如图 1.17 所示。
2、提高操作实验
(1)建立图书数据库,在 SQL Server 企业管理器中实现。库中表结构为:
图书(书号,类别,出版社,作者,书名,定价);
读者(编号,姓名,单位,性别,电话);
借阅(书号,读者编号,借阅日期)
要求:1)建库、建表和建立表间联系。
2)选择合适的数据类型。
3)定义必要的索引、列级约束和表级约束。
4) 通过企业管理器实现对图书数据库的数据增加、数据删除和数据修改操作。
要求每个表中各有 10 条以上的记录。
(2)将自设计的数据库、库中的表、索引和约束用 SQL 语句表达,并通过企业管理器或查询分析器实现建库、建表、建立表间联系和建立必要的索引、列级约束和表级约束的操作。
四、实验仪器
(1)硬件条件:个人计算机。
(2)软件条件:Windows; MS SQL Server。
五、实验步骤
(1)先按照实验方法中的要求,在老师指导下完成基本操作实验,即建立学生课程数
据库并修改。
(2)然后按照实验方法中的要求,独立完成提高操作实验。
实验一第一部分操作步骤如实验原理部分所示(已将图片更改为自己实验步骤的截图)
实验一第二部分:
1.建立librarydb
2.新建表Book,Reader和BORROW,并分别对其进行设计
Book
Reader
BORROW
3.在表BORROW建立外键,操作结果如下图所示
(2)
USE [master]
GO
/****** Object: Database [ST] Script Date: 2021-03-27 10:25:06 ******/
CREATE DATABASE [ST]
CONTAINMENT = NONE
ON PRIMARY
( NAME = N'ST', FILENAME = N'E:\SQL\SQL\MSSQL15.MSSQLSERVER\MSSQL\DATA\ST.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'ST_log', FILENAME = N'E:\SQL\SQL\MSSQL15.MSSQLSERVER\MSSQL\DATA\ST_log.ldf' , SIZE = 4224KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
WITH CATALOG_COLLATION = DATABASE_DEFAULT
GO
ALTER DATABASE [ST] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [ST].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [ST] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [ST] SET ANSI_NULLS OFF
GO
ALTER DATABASE [ST] SET ANSI_PADDING OFF
GO
ALTER DATABASE [ST] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [ST] SET ARITHABORT OFF
GO
ALTER DATABASE [ST] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [ST] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [ST] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [ST] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [ST] SET CURSOR_DEFAULT GLOBAL
GO
ALTER DATABASE [ST] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [ST] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [ST] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [ST] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [ST] SET DISABLE_BROKER
GO
ALTER DATABASE [ST] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [ST] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [ST] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [ST] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [ST] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [ST] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [ST] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [ST] SET RECOVERY SIMPLE
GO
ALTER DATABASE [ST] SET MULTI_USER
GO
ALTER DATABASE [ST] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [ST] SET DB_CHAINING OFF
GO
ALTER DATABASE [ST] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF )
GO
ALTER DATABASE [ST] SET TARGET_RECOVERY_TIME = 0 SECONDS
GO
ALTER DATABASE [ST] SET DELAYED_DURABILITY = DISABLED
GO
EXEC sys.sp_db_vardecimal_storage_format N'ST', N'ON'
GO
ALTER DATABASE [ST] SET QUERY_STORE = OFF
GO
USE [ST]
GO
/****** Object: Table [dbo].[Course] Script Date: 2021-03-27 10:25:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Course](
[Cno] [nchar](10) NOT NULL,
[Cname] [nchar](40) NULL,
[Cpno] [nchar](10) NULL,
[Ccredit] [smallint] NULL,
[Tname] [varchar](8) NULL,
CONSTRAINT [PK_Course] PRIMARY KEY CLUSTERED
(
[Cno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[SC] Script Date: 2021-03-27 10:25:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SC](
[Sno] [nchar](10) NOT NULL,
[Cno] [nchar](10) NOT NULL,
[Grade] [float] NULL,
CONSTRAINT [PK_SC] PRIMARY KEY CLUSTERED
(
[Sno] ASC,
[Cno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Student] Script Date: 2021-03-27 10:25:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Student](
[Sno] [nchar](10) NOT NULL,
[Sname] [nchar](20) NULL,
[Ssex] [nchar](10) NULL,
[Sage] [smallint] NULL,
[Sdep] [nchar](20) NULL,
CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED
(
[Sno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'001 ', N'Math ', NULL, 3, N'Mike')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'002 ', N'English ', NULL, 3, N'Alpha')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'005 ', N'DiscreteMath ', N'001 ', 2, N'Beta')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'006 ', N'Probabilitytheory ', N'001 ', 1, N'Charlie')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'120 ', N'C ', NULL, 3, N'Delta')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'121 ', N'C++ ', N'120 ', 4, N'Alpha')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'123 ', N'OS ', N'121 ', 4, N'Bravo')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'124 ', N'DataStructure ', N'121 ', 5, N'Charlie')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'126 ', N'DB ', N'124 ', 3, N'Detla')
INSERT [dbo].[Course] ([Cno], [Cname], [Cpno], [Ccredit], [Tname]) VALUES (N'127 ', N'Linux ', N'124 ', 2, N'Beta')
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'001 ', N'001 ', 90)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'001 ', N'120 ', 97)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'002 ', N'001 ', 95)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15121 ', N'120 ', 70)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15121 ', N'121 ', 80)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15121 ', N'123 ', 90)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15121 ', N'124 ', 95)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15121 ', N'126 ', 90)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15122 ', N'120 ', 85)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15122 ', N'121 ', 80)
INSERT [dbo].[SC] ([Sno], [Cno], [Grade]) VALUES (N'15122 ', N'123 ', 95)
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'001 ', N'王明 ', N'男 ', 19, N'IS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'002 ', N'张三 ', N'男 ', 19, N'CS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15121 ', N'李勇 ', N'男 ', 20, N'CS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15122 ', N'刘晨 ', N'女 ', 19, N'CS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15123 ', N'张敏 ', N'女 ', 18, N'MA ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15125 ', N'张立 ', N'男 ', 18, N'IS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15126 ', N'王晶晶 ', N'女 ', 17, N'MA ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15127 ', N'欧阳海 ', N'男 ', 18, N'IS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15128 ', N'欧阳夏丹 ', N'女 ', 20, N'CS ')
INSERT [dbo].[Student] ([Sno], [Sname], [Ssex], [Sage], [Sdep]) VALUES (N'15129 ', N'王力 ', N'男 ', 19, N'CS ')
ALTER TABLE [dbo].[SC] WITH CHECK ADD CONSTRAINT [FK_SC_Course] FOREIGN KEY([Cno])
REFERENCES [dbo].[Course] ([Cno])
GO
ALTER TABLE [dbo].[SC] CHECK CONSTRAINT [FK_SC_Course]
GO
ALTER TABLE [dbo].[SC] WITH CHECK ADD CONSTRAINT [FK_SC_Student] FOREIGN KEY([Sno])
REFERENCES [dbo].[Student] ([Sno])
GO
ALTER TABLE [dbo].[SC] CHECK CONSTRAINT [FK_SC_Student]
GO
USE [master]
GO
ALTER DATABASE [ST] SET READ_WRITE
GO
六、实验内容
实验内容同实验步骤截图
七、实验数据
实验一第一部分的数据输入结果:
Student
Course
SC
实验一第二部分的数据部分如下所示:
Book
Reader
BORROW
八、实验总结
1、用 SQL 语言表示图书读者数据库建库和建表(建索引)操作。
(1)创建一个数据库名为“librarydb”
Create database librarydb
Go
(2)打开数据库librarydb
Use librarydb
Go
(3)建立Reader表文章来源:https://www.toymoban.com/news/detail-457796.html
CREATE TABLE [dbo].[Reader](
[Rno] [int] NOT NULL,
[Rname] [nchar](20) NULL,
[Rdep] [nchar](20) NULL,
[Rgen] [nchar](4) NULL,
[Rtel] [nchar](18) NULL,
CONSTRAINT [PK_Reader] PRIMARY KEY CLUSTERED
(
[Rno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
2、指出图书读者数据库的主码、外码和数据约束。
Book主码:Bno
Reader主码:Rno
BORROW主码:Bno和Rno 外码:Bno和Rno
数据约束:输入的Bno和Rno必须要在Book表Bno和Reader表Rno的数据范围内
三表的数据须按照数据类型的要求(int、nchar(10)、date等)进行输入文章来源地址https://www.toymoban.com/news/detail-457796.html
到了这里,关于数据库第一次试验:数据库的建立与维护的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!