前言

2022/12/3 21:43

以下内容源自数据库原理实验
仅供学习交流使用

推荐

数据库原理

实验一 数据库及数据库中表的建立实验

一、 实验目的

实验1 学习RDBMS的使用和创建数据库

(1)熟悉某一RDBMS产品(如:SQL Server ) 的环境。
(2)掌握企业管理器的基本使用方法,对数据库及其对象有基本了解,了解对SQL Server 进行配置的方法。
(3)掌握查询分析器的基本使用方法以及在查询分析器中执行T-SQL语句的方法。
(4)了解SQL Server 数据库的逻辑结构和物理结构。
(5)学会在企业管理器中创建数据库及查看数据库属性。
(6)学会使用T-SQL语句创建数据库。

实验2 定义表和数据库完整性

(1)了解SQL Server 的基本数据类型、空值的概念,以及表的结构特点。
(2)学会使用T-SQL语句和企业管理器创建表结构和修改表结构。
(3)学会使用SQL Server 提供的数据完整性功能,并在创建表时定义表的数据完整性。通过实验进一步理解数据完整性的概念及分类。

二、实验内容

实验1 学习RDBMS的使用和创建数据库

(1)学会使用企业管理器和查询分析器管理工具。
(2)使用企业管理器创建数据库。
创建一个教务管理数据库,名称为JWGL,数据文件的初始大小为20MB,文件增长方式为自动增长,文件增长增量设为5MB,文件的增长上限为500MB。日志文件的初始大小为10MB,文件增长增量设为1MB,文件的增长限制设为100MB。数据文件的逻辑文件名和物理文件名均采用默认值,分别为JWGL_data和d:\Microsoft SQL Server\MSSQL\data\ JWGL_data.mdf;事务日志文件的逻辑文件名和物理文件名也采用默认值,分别为JWGL_log和d:\Microsoft SQL Server\MSSQL\data\JWGL_log.ldf。
(3)在查询分析器中使用T-SQL语句创建数据库。
创建一个名为Market的数据库(注意e盘下应存在sql_data目录)。

CREATE DATABASE Market
ON
   (NAME = Market_Data,
    FILENAME = 'e:\sql_data\Market_Data.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 10%)
LOG ON
    (NAME = Market_Log,
    FILENAME = 'e:\sql_data\ Market__Log.ldf',
    SIZE = 5,
    MAXSIZE = 15,
    FILEGROWTH = 10%);    
 

(4)使用T-SQL语句或企业管理器创建一个图书借阅管理数据库,数据库名为TSGL,数据文件和日志文件的初始大小、增长方式、文件的增长上限等均可采用默认值。
(5)使用T-SQL语句或企业管理器创建第2章习题10的SPJ数据库,可以自行定义文件大小、增长方式等。
(6)查看物理磁盘目录,理解并分析SQL Server 数据库的存储结构。
(7)使用企业管理器查看数据库属性。
(8)使用T-SQL语句或企业管理器对于(2)~(5)中建立的数据库进行修改和删除操作,并进一步查看物理磁盘目录。

实验2 定义表和数据库完整性

(1)用企业管理器在教务管理数据库JWGL中创建学生表Student、课程表Course、学生选课表SC,它们的表结构如表B.1所示。
表B.1教务管理数据库的表结构
学生表Student
在这里插入图片描述
课程表Course
在这里插入图片描述
学生选课表SC
在这里插入图片描述

(2)用T-SQL语句在Market数据库中创建客户基本信息表Customers、货品信息表Goods、订单信息表Orders,它们的定义如下

 CREATE TABLE Customers(
         CustomerID  int  IDENTITY(1,1)  PRIMARY  KEY,
         CName  varchar(8)  NOT  NULL ,
         Address  varchar(50),
         City  varchar(10),
         Tel  varchar(20)  UNIQUE,
         Company  varchar(50),
         Birthday  datetime,
         Type  tinyint  DEFAULT 1);
CREATE TABLE Goods (
         GoodsID int  CONSTRAINT  C1 PRIMARY  KEY ,
         GoodsName  varchar(20)  NOT  NULL,
         Price  money,
         Description  varchar(200),
         Storage   int,
         Provider  varchar(50),
         Status  tinyint  DEFAULT(0));
CREATE TABLE Orders (
         OrderID  int  IDENTITY(1,1)  CONSTRAINT  C2  PRIMARY  KEY ,
         GoodsID  int  NOT NULL  REFERENCES Goods(GoodsID)  ON  DELETE
             CASCADE,
         CustomerID  int  NOT NULL  FOREIGN KEY(CustomerID)
             REFERENCES Customers (CustomerID)  ON  UPDATE  CASCADE
ON DELETE NO ACTION,
         Quantity  int  NOT NULL  CONSTRAINT  C3  CHECK(Quantity >0),
         OrderSum  money  NOT NULL,
         OrderDate  datetime  DEFAULT(getdate()) );

(3)使用T-SQL语句在SPJ数据库中创建第2章习题10中的4张表:供应商表S、零件表P、工程项目表J和供应情况表SPJ,数据类型和长度自行设计,注意要同时定义主键、外键和其他的数据完整性。
(4)使用T-SQL语句在图书借阅管理数据库TSGL中建立图书、读者和借阅3个表,其结构为
图书(书号,书名,类别,出版社,作者,定价,出版时间)
读者(借书证号,姓名,单位,性别,地址,电话号码)
借阅(书号,借书证号,借阅日期)
要求为属性选择合适的数据类型,定义每个主键、外键,是否允许空值等数据完整性约束。

三、实验环境

MySQL+SQLyog

四、实验前准备

(1)熟悉SQLsever使用环境;
(2)熟悉SQL的语法格式,学会使用create语句创建,模式和基本表。

五、实验步骤

按上述实验内容,分别完成实验一和实验二

六、实验结果

实验1 学习RDBMS的使用和创建数据库

S表
在这里插入图片描述

P表
在这里插入图片描述

J表
在这里插入图片描述

SPJ表
在这里插入图片描述

实验2 定义表和数据库完整性

(1)教务管理系统

学生表

在这里插入图片描述

课程表
在这里插入图片描述

学生选课表
在这里插入图片描述

(2)Market数据库

客户基本信息表
在这里插入图片描述

货品信息表
在这里插入图片描述

订单信息表
在这里插入图片描述

(3)图书借阅管理数据库

图书
在这里插入图片描述

读者
在这里插入图片描述
借阅

在这里插入图片描述

七、评价分析及心得体会

实验1 学习RDBMS的使用和创建数据库

通过本次实验,我熟悉了SQL Server的环境;掌握了企业管理器的基本使用方法,对数据库及其对象有了基本了解,了解了对SQL Server 进行配置的方法;掌握了查询分析器的基本使用方法以及在查询分析器中执行T-SQL语句的方法;了解了SQL Server 数据库的逻辑结构和物理结构;学会了在企业管理器中创建数据库及查看数据库属性;学会了使用T-SQL语句创建数据库。

实验2 定义表和数据库完整性

在本次实验中,我了解了SQL Server的基本数据类型、空值的概念,以及表的结构特点;学会了使用T-SQL语句和企业管理器创建表结构和修改表结构;学会了使用SQL Server 提供的数据完整性功能,并在创建表时定义表的数据完整性。通过实验进一步理解了数据完整性的概念及分类。

八、附录

spj.sql

CREATE DATABASE `spj` ;

USE `spj`;


CREATE TABLE `j` (
  `JNO` VARCHAR(10) NOT NULL COMMENT '工程项目代码',
  `JNAME` VARCHAR(10) NOT NULL COMMENT '工程项目名',
  `CITY` VARCHAR(10) DEFAULT NULL COMMENT '工程项目所在城市',
  PRIMARY KEY (`JNO`)
) ;


CREATE TABLE `p` (
  `PNO` VARCHAR(10) NOT NULL COMMENT '零件代码',
  `PNAME` VARCHAR(10) NOT NULL COMMENT '零件名',
  `COLOR` VARCHAR(2) DEFAULT NULL COMMENT '颜色',
  `WEIGHT` INT NOT NULL COMMENT '重量',
  PRIMARY KEY (`PNO`),
  CONSTRAINT `p_chk_1` CHECK ((`WEIGHT` >= 0))
) ENGINE=INNODB DEFAULT CHARSET=utf8mb3;


CREATE TABLE `s` (
  `SNO` VARCHAR(10) NOT NULL COMMENT '供应商代码',
  `SNAME` VARCHAR(10) NOT NULL COMMENT '供应商姓名',
  `STATUS` INT NOT NULL COMMENT '供应商状态',
  `CITY` VARCHAR(10) DEFAULT NULL COMMENT '供应商所在城市',
  PRIMARY KEY (`SNO`)
) ;


CREATE TABLE `spj` (
  `SNO` VARCHAR(10) NOT NULL COMMENT '供应商代码',
  `PNO` VARCHAR(10) NOT NULL COMMENT '零件代码',
  `JNO` VARCHAR(10) NOT NULL COMMENT '工程项目代码',
  `QTY` INT DEFAULT NULL COMMENT '供应数量',
  PRIMARY KEY (`SNO`,`PNO`,`JNO`),
  KEY `PNO` (`PNO`),
  KEY `JNO` (`JNO`),
  CONSTRAINT `spj_ibfk_1` FOREIGN KEY (`SNO`) REFERENCES `s` (`SNO`),
  CONSTRAINT `spj_ibfk_2` FOREIGN KEY (`PNO`) REFERENCES `p` (`PNO`),
  CONSTRAINT `spj_ibfk_3` FOREIGN KEY (`JNO`) REFERENCES `j` (`JNO`),
  CONSTRAINT `spj_chk_1` CHECK ((`QTY` >= 0))
) ;



jwgl.sql


CREATE DATABASE `jwgl` ;


CREATE TABLE `student` (
  `Sno` CHAR(8) NOT NULL COMMENT '主键',
  `Sname` VARCHAR(10) NOT NULL,
  `Sex` CHAR(2) NOT NULL DEFAULT (_utf8mb3'男') COMMENT '只能"男"或"女"',
  `Age` TINYINT(1) NOT NULL DEFAULT (20) COMMENT '只能是15~30',
  `Phonenumber` CHAR(12) DEFAULT NULL COMMENT '取值唯一',
  `Sdept` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`Sno`),
  UNIQUE KEY `Phonenumber` (`Phonenumber`)
);


CREATE TABLE `course` (
  `Cno` CHAR(10) NOT NULL COMMENT '主键',
  `Cname` VARCHAR(20) NOT NULL COMMENT '取值唯一',
  `Total_perior` TINYINT(1) DEFAULT (64) COMMENT '只能为32~108',
  `Week_perior` TINYINT(1) DEFAULT (4) COMMENT '只能为2~7',
  `credit` TINYINT(1) NOT NULL DEFAULT (4) COMMENT '只能为1~7',
  `Pcno` CHAR(10) DEFAULT NULL,
  PRIMARY KEY (`Cno`),
  UNIQUE KEY `Cname` (`Cname`)
) ;


CREATE TABLE `sc` (
  `Sno` CHAR(8) NOT NULL COMMENT '主键,外键',
  `Cno` CHAR(10) NOT NULL COMMENT '主键,外键',
  `Grade` TINYINT(1) DEFAULT NULL COMMENT '只能为0~100',
  PRIMARY KEY (`Sno`,`Cno`),
  KEY `Cno` (`Cno`),
  CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sno`) REFERENCES `student` (`Sno`),
  CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cno`) REFERENCES `course` (`Cno`)
) ;


market.sql


CREATE DATABASE `market` ;

USE `market`;

CREATE TABLE `customers` (
  `CustomerID` INT NOT NULL AUTO_INCREMENT,
  `CName` VARCHAR(8) NOT NULL,
  `Address` VARCHAR(50) DEFAULT NULL,
  `City` VARCHAR(10) DEFAULT NULL,
  `Tel` VARCHAR(20) DEFAULT NULL,
  `Company` VARCHAR(50) DEFAULT NULL,
  `Birthday` DATETIME DEFAULT NULL,
  `Type` TINYINT DEFAULT (1),
  PRIMARY KEY (`CustomerID`),
  UNIQUE KEY `Tel` (`Tel`)
) ;

CREATE TABLE `goods` (
  `GoodsID` INT NOT NULL,
  `GoodsName` VARCHAR(20) NOT NULL,
  `Price` FLOAT DEFAULT NULL,
  `Description` VARCHAR(200) DEFAULT NULL,
  `STORAGE` INT DEFAULT NULL,
  `Provider` VARCHAR(50) DEFAULT NULL,
  `STATUS` TINYINT DEFAULT (0),
  PRIMARY KEY (`GoodsID`)
) ;

/*Table structure for table `orders` */

DROP TABLE IF EXISTS `orders`;

CREATE TABLE `orders` (
  `OrderID` INT NOT NULL AUTO_INCREMENT,
  `GoodsID` INT NOT NULL,
  `CustomerID` INT NOT NULL,
  `Quantity` INT NOT NULL,
  `OrderSum` FLOAT NOT NULL,
  `OrderDate` TIMESTAMP NULL DEFAULT (NOW()),
  PRIMARY KEY (`OrderID`),
  KEY `GoodsID` (`GoodsID`),
  KEY `CustomerID` (`CustomerID`),
  CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`GoodsID`) REFERENCES `goods` (`GoodsID`) ON DELETE CASCADE,
  CONSTRAINT `orders_ibfk_2` FOREIGN KEY (`CustomerID`) REFERENCES `customers` (`CustomerID`) ON UPDATE CASCADE,
  CONSTRAINT `C3` CHECK ((`Quantity` > 0))
) ;


tsgl.sql


CREATE DATABASE `tsgl` ;

USE `tsgl`;


CREATE TABLE `book` (
  `book_id` INT NOT NULL AUTO_INCREMENT COMMENT '书号',
  `book_name` VARCHAR(20) NOT NULL COMMENT '书名',
  `book_type` VARCHAR(10) DEFAULT (NULL) COMMENT '类别',
  `book_publishing_company` VARCHAR(15) DEFAULT (NULL) COMMENT '出版社',
  `book_author` VARCHAR(10) NOT NULL COMMENT '作者',
  `book_price` FLOAT DEFAULT NULL COMMENT '定价',
  `book_publishing_date` DATE DEFAULT NULL COMMENT '出版时间',
  PRIMARY KEY (`book_id`),
  UNIQUE KEY `book_name` (`book_name`),
  CONSTRAINT `book_chk_1` CHECK ((`book_price` > 0))
) ;


CREATE TABLE `read_book` (
  `read_book_bid` INT NOT NULL COMMENT '书号',
  `read_book_rid` INT NOT NULL COMMENT '借书证号',
  `read_book_date` DATE NOT NULL COMMENT '借阅日期',
  PRIMARY KEY (`read_book_bid`,`read_book_rid`),
  KEY `read_book_rid` (`read_book_rid`),
  CONSTRAINT `read_book_ibfk_1` FOREIGN KEY (`read_book_bid`) REFERENCES `book` (`book_id`),
  CONSTRAINT `read_book_ibfk_2` FOREIGN KEY (`read_book_rid`) REFERENCES `reader` (`reader_id`)
) ;

CREATE TABLE `reader` (
  `reader_id` INT NOT NULL AUTO_INCREMENT COMMENT '借书证号',
  `reader_name` VARCHAR(10) NOT NULL COMMENT '姓名',
  `reader_unit` VARCHAR(20) DEFAULT NULL COMMENT '单位',
  `reader_sex` CHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
  `reader_address` VARCHAR(30) DEFAULT NULL COMMENT '地址',
  `reader_pnumber` VARCHAR(20) DEFAULT NULL COMMENT '电话',
  PRIMARY KEY (`reader_id`)
) ;


最后

2022/12/3 22:00

这篇博客能写好的原因是:站在巨人的肩膀上

这篇博客要写好的目的是:做别人的肩膀

开源:为爱发电

学习:为我而行

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐