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

目录

实验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

图书、读者、借阅

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提供的数据完整性功能,并在创建表时定义表的数据完整性,通过实验进一步理解数据完整性的概念及分类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/913636.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在线绘制cancer cell同款双向条形图展示富集结果

导读:将上调和下调pathway富集结果以双向条形图的形式在一张图中展示,不仅优化了绘图空间,还通过对称布局增强了图片的美观性。 《Cancer cell》文章“Cross-tissue human fibroblast atlas reveals myofibroblast subtypes with distinct ro…

Linux(文件特殊属性 + FACL 图片+大白话)

后面也会持续更新,学到新东西会在其中补充。 建议按顺序食用,欢迎批评或者交流! 缺什么东西欢迎评论!我都会及时修改的! 在这里真的很感谢这位老师的教学视频让迷茫的我找到了很好的学习视频 王晓春老师的个人空间…

json转excel,读取json文件写入到excel中【rust语言】

一、rust代码 将json文件写入到 excel中。(保持json :key原始顺序) use indexmap::IndexMap; use serde::Deserialize; use serde_json::{Value, from_str}; use std::error::Error; use std::io::{self, Write}; use std::path::{Path}; u…

理想火车站定位(字节青训)

题目 小F是A市的市长,正在计划在A市新建一个火车站以方便市民的日常出行。市区内的街道布局十分规整,形成网格状。从一个位置[x1, y1]到另一个位置[x2, y2]的距离计算方法为 |x1 - x2| |y1 - y2|,即曼哈顿距离。 在初步考察后,…

5位机械工程师如何共享一台工作站的算力?

在现代化的工程领域中,算力已成为推动创新与技术进步的关键因素之一。对于机械工程师而言,强大的计算资源意味着能够更快地进行复杂设计、模拟分析以及优化工作,从而明显提升工作效率与项目质量。然而,资源总是有限的,…

使用微信云开发,实现链接激活微信小程序(微信内部和外部H5访问)

首先小程序项目开发,需得支持云开发如何开通云开发?(网上教程很多,也很全面,这里仅带过) 配置云函数在项目根目录找到 project.config.json 文件,新增 cloudfunctionRoot 字段,指定本…

NVM 介绍及使用指南

在日常的开发工作中,我们往往会遇到需要在同一台机器上同时管理多个版本的 Node.js 的情况。为了解决这个问题,我一个同事推荐了NVM(Node Version Manager)。NVM 是一个用于管理 Node.js 版本的工具,可以方便地在不同的…

vscode 全局搜索的用法:

搜索栏最右边功能是区分大小写,全字匹配(比如搜索abc,就不会显示abcd或者ab这些内容),使用正则表达式。变成高亮就是开启对应功能。包含的文件:这栏里如果最右边高亮填入带路径的文件,指的是在文…

如何从 Nutanix 迁移至 SmartX 超融合?解读 4 类迁移方案和 2 例迁移实践

随着 Nutanix(路坦力)将大陆区域的销售和部分维保工作交由联想负责,不少用户也在寻求 Nutanix 的替代方案。现阶段是否有必要换掉 Nutanix?有哪些成熟的国产替代方案?这些方案在性能和功能上是否具备与 Nutanix 同等的…

C++常见概念问题(3)

C常见概念问题(3) 1. 构造函数的初始化顺序 基类构造函数:在派生类的构造函数中,基类的构造函数在派生类构造函数体执行之前调用。 成员变量初始化:类中的成员变量会按照其在类中声明的顺序进行初始化,而…

「QT」几何数据类 之 QVector2D 二维向量类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

运维智能化转型:AIOps引领IT运维新浪潮

1. AIOps是什么? AIOps(Artificial Intelligence for IT Operations),即人工智能在IT运维中的应用,通过机器学习技术处理运维数据(如日志、监控信息和应用数据),解决传统自动化运维…

C++练习 二维数组的应用

1&#xff09;超女有3个小组&#xff0c;每组有4名选手&#xff0c;请提供一个界面&#xff0c;输入每个超女的体重&#xff0c;然后&#xff0c;计算出每组的超女的平均体重和全部超女的平均体重。 #include <iostream> using namespace std;int main() {float sum1 0…

Vue3安装、创建到使用

vue安装 npm install vuenext # 全局安装 vue-cli npm install -g vue/cli #更新插件 项目中运行 vue upgrade --nextvue create 命令 vue create [options] <app-name> options 选项可以是&#xff1a; -p, --preset <presetName>&#xff1a; 忽略提示符并使用已…

JavaWeb:文件上传1

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…

第2章2.3立项【硬件产品立项的核心内容】

硬件产品立项的核心内容 2.3 硬件产品立项的核心内容2.3.1 第一步&#xff1a;市场趋势判断2.3.2 第二步&#xff1a;竞争对手分析1.竞争对手识别2.根据竞争对手分析制定策略 2.3.3 第三步&#xff1a;客户分析2.3.4 第四步&#xff1a;产品定义2.3.5 第五步&#xff1a;开发执…

视频播放相关的杂记

基于QT FFMPEG设计一款 RTMP协议推流、视频录制软件 实现的功能&#xff1a; &#xff08;1&#xff09;将摄像头视频流 麦克风音频流合并&#xff0c;并推到流媒体服务器 &#xff08;2&#xff09;将摄像头视频流 麦克风音频流保存到本地磁盘 基于QtFFMPEG设计一款RTM…

oracle如何创建两个数据库,以及如何用navicat连接,监听、数据泵

项目背景oracle11g, 已经非常老了&#xff0c; 2017年的左右&#xff1b;谨慎参考 W11直接搜索就行 dbca唯一需要注意的地方就是一定一定一定要以管理身份运行&#xff0c;否则会提示各种因为文件权限问题报的错误 然后弹出程序提示&#xff0c;图形化开始操作了&#xff1b; …

LeetCode 509.斐波那契数

动态规划思想 五步骤&#xff1a; 1.确定dp[i]含义 2.递推公式 3.初始化 4.遍历顺序 5.打印dp数组 利用状态压缩&#xff0c;简化空间复杂度。在原代码中&#xff0c;dp 数组保存了所有状态&#xff0c;但实际上斐波那契数列的计算只需要前两个状态。因此&#xff0c;我们…

Qml 中的那些坑(七)---ComboBox嵌入Popup时,滚动内容超过其可见区域不会关闭ComboBox弹窗

【写在前面】 最近在写信息提交 ( 表单 ) 的窗口时发现一个奇怪的 BUG&#xff1a; 其代码如下&#xff1a; import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Window 2.15Window {width: 640height: 480visible: truetitle: qsTr("Hello World")B…