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

目录

[实验1 学习RDBMS的使用和创建数据库](#实验1 学习RDBMS的使用和创建数据库)

[一、 实验目的](#一、 实验目的)

二、实验内容

三、实验环境

四、实验前准备

五、实验步骤

六、实验结果

七、评价分析及心得体会

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

[一、 实验目的](#一、 实验目的)

二、实验内容

三、实验环境

四、实验前准备

五、实验步骤

六、实验结果

七、评价分析及心得体会


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

一、 实验目的

(1)熟悉某一RDBMS产品(如:SQL Server ) 的环境。

(2)掌握企业管理器的基本使用方法,对数据库及其对象有基本了解,了解对SQL Server 进行配置的方法。

(3)掌握查询分析器的基本使用方法以及在查询分析器中执行T-SQL语句的方法。

(4)了解SQL Server 数据库的逻辑结构和物理结构。

(5)学会在企业管理器中创建数据库及查看数据库属性。

(6)学会使用T-SQL语句创建数据库。

二、实验内容

(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)中建立的数据库进行修改和删除操作,并进一步查看物理磁盘目录。

三、实验环境

mysql-8.3.0-win64

MySQL Workbench 8.0 CE

四、实验前准备

下载并安装MySQL以及MySQL Workbench

五、实验步骤

可以使用Create a new scheme

使用语句

其他的均相同

六、实验结果

七、评价分析及心得体会

通过此次实验,我熟悉了MySQL Workbench的环境,掌握了企业管理器的基本使用方法,对数据库及其对象有基本了解,学会在企业管理器中创建数据库及查看数据库属性,学会使用MySQL语句创建数据库,并了解数据库的逻辑结构和物理结构。

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

一、 实验目的

(1)了解SQL Server 的基本数据类型、空值的概念,以及表的结构特点。

(2)学会使用T-SQL语句和企业管理器创建表结构和修改表结构。

(3)学会使用SQL Server 提供的数据完整性功能,并在创建表时定义表的数据完整性。通过实验进一步理解数据完整性的概念及分类。

二、实验内容

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

(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章习题6中的4张表:供应商表S、零件表P、工程项目表J和供应情况表SPJ,数据类型和长度自行设计,注意要同时定义主键、外键和其他的数据完整性。

(4)使用T-SQL语句在图书借阅管理数据库TSGL中建立图书、读者和借阅3个表,其结构为

图书(书号,书名,类别,出版社,作者,定价,出版时间)

读者(借书证号,姓名,单位,性别,地址,电话号码)

借阅(书号,借书证号,借阅日期)

要求为属性选择合适的数据类型,定义每个主键、外键,是否允许空值等数据完整性约束。

三、实验环境

mysql-8.3.0-win64

MySQL Workbench 8.0 CE

四、实验前准备

复习创建表的语句

五、实验步骤

(1)可以通过Create Table进行建表

(2)也可以用MySQL语句实现

student、course、sc

customers、goods、orders

s、p、j、spj

图书、读者、借阅

sql 复制代码
CREATE TABLE jwgl.student (
  Sno CHAR(8) NOT NULL,
  Sname VARCHAR(10) NOT NULL ,
  Sex CHAR(2) NOT NULL DEFAULT '男' CHECK (Sex='男' or Sex='女'),
  Age TINYINT(1) NOT NULL DEFAULT 20 CHECK (Age BETWEEN 15 AND 30),
  Phonenumber CHAR(12) NULL UNIQUE,
  Sdept VARCHAR(20) NOT NULL,
  PRIMARY KEY (`Sno`));

CREATE TABLE jwgl.course (
    Cno CHAR(10) NOT NULL,
    Cname VARCHAR(20) NOT NULL UNIQUE,
    Total_perior TINYINT UNSIGNED NOT NULL DEFAULT 64 CHECK (Total_perior BETWEEN 32 AND 108),
    Week_perior TINYINT UNSIGNED NOT NULL DEFAULT 4 CHECK (Week_perior BETWEEN 2 AND 7),
    credit TINYINT UNSIGNED NOT NULL DEFAULT 4 CHECK (credit BETWEEN 1 AND 7),
    Pcno CHAR(10),
    PRIMARY KEY (Cno)
);
CREATE TABLE jwgl.sc (
  Sno CHAR(8) NOT NULL,
  Cno CHAR(10) NOT NULL,
  Grade TINYINT(1) NULL CHECK (Grade BETWEEN 0 AND 100), 
  PRIMARY KEY (Sno, Cno),
  FOREIGN KEY (Sno) REFERENCES Student(Sno),
  FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

create table market.customers (
	CustomerID int not null auto_increment,
    CName varchar(8) not null,
    Address varchar(50),
    City varchar(10),
    Tel varchar(20) unique,
    Company varchar(50),
    Bithday date,
    Type tinyint default 1,
    primary key (CustomerID)
);

create table market.goods (
	GoodsID int not null,
    GoodsName varchar(20) not null,
    Price decimal(10,2),
    Description varchar(200),
    Storage int,
    Provider varchar(50),
    Status tinyint default 0,
    primary key(GoodsID)
);

create table market.orders(
	OrderID int not null auto_increment,
    GoodsID int not null,
    CustomerID int not null,
    Queantity int not null check ( Queantity>0),
    OrderSum decimal(10,2) not null,
    OrderDate datetime default  (now()),
    primary key (OrderID),
    foreign key( GoodsID) references goods(GoodsID) on delete cascade,
    foreign key(CustomerID) references customers(CustomerID) on update cascade on delete no action
);


create table spj.s(
	SNO CHAR(2) PRIMARY KEY,
   SNAME VARCHAR(50),
   STATUS INT,
   CITY VARCHAR(50)
);

create table spj.p(
	PNO char(2) primary key,
    PNAME varchar(50),
    COLOR varchar(20),
    WEIGHT float

);

create table spj.j(
	JNO char(2) primary key,
    JNAME varchar(50),
    CITY varchar(50)

);

create table spj.spj(
	SNO char(2),
    PNO char(2),
    JNO char(2),
    QTY int,
    primary key(SNO,PNO,JNO),
    foreign key(SNO) references s(SNO),
    foreign key(PNO) references p(PNO),
    foreign key(JNO) references j(JNO)

);

create table `tsgl`.`图书`(
	`书号` char(13) primary key,
    `书名` varchar(255) not null,
    `类别` varchar(50),
    `出版社` varchar(100),
    `作者` varchar(100),
    `定价` decimal(10,2),
    `出版时间` date
);

create table `tsgl`.`读者`(
	`借书证号` char(10) primary key,
    `姓名` varchar(50) not null,
    `单位` varchar(100),
    `性别` enum('男','女') not null,
    `地址` varchar(255),
    `电话号码` varchar(20)
);


CREATE TABLE `tsgl`.`借阅` (
    `书号` CHAR(13),
    `借书证号` CHAR(10),
    `借阅日期` DATE,
    PRIMARY KEY (`书号`, `借书证号`),
    FOREIGN KEY (`书号`) REFERENCES `图书`(`书号`) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (`借书证号`) REFERENCES `读者`(`借书证号`) ON DELETE CASCADE ON UPDATE CASCADE
);



 

六、实验结果

七、评价分析及心得体会

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

相关推荐
xixingzhe26 分钟前
秒杀库存三种缓存实现方案
数据库·redis·缓存
软件交付观察室15 分钟前
数据大屏总数与明细为什么对不上?2026项目开发排查指南
软件测试·数据库·sql·sqlite·数据可视化
倔强的石头_17 分钟前
数据集成软件怎么选 研究了一圈,我盯上了金仓KFS
数据库
ggaofeng22 分钟前
如何配置snat(让内网访问外网)和dnat(将外网请求转发到内网服务器)
运维·服务器·snat·dnat·局域网访问外网·外网访问局域网
正在走向自律24 分钟前
KingbaseES 列存储踩坑记:cstore_fdw 建表灌数全过程,以及数据改不动怎么办
数据库·国产数据库·kingbasees·金仓数据库·列存储
我科绝伦(Huanhuan Zhou)27 分钟前
Oracle 体系结构深度解析:从内存、进程到日志与事务一致性的全链路技术详解
数据库·oracle
一木 之林28 分钟前
LangChain 第8章 记忆系统:短期/长期记忆与 PostgreSQL 持久化
数据库·postgresql·langchain
qq_4523962329 分钟前
第七篇:《向量数据库选型:从 Chroma 到 Milvus 的落地对比》
数据库·milvus
云絮.30 分钟前
mybatis(二)
java·数据库·mybatis
yyuuuzz32 分钟前
云服务器搭建个人博客记录:一次访问超时的复盘
运维·服务器·数据库