【数据库和表的管理】

数据库和表的管理

一、实验目的

  1. 了解MySQL数据库的逻辑结构和物理结构的特点。
  2. 学会使用SQL语句创建、选择、删除数据库。
  3. 学会使用SQL语句创建、修改、删除表。
  4. 学会使用SQL语句对表进行插入、修改和删除数据操作。
  5. 了解MySQL的常用数据类型。
    二、实验内容
  6. SQL语句创建、选择、删除数据库。
  7. SQL语句创建、修改、删除表。
  8. SQL语句对表进行插入、修改和删除数据操作。
    三、实验步骤
  9. 使用SQL语句创建数据库studentsdb。
    create database studentsdb;
    在这里插入图片描述

2.使用SQL语句选择studentsdb为当前使用数据库。
use studentsdb;
3. 使用SQL语句在studentsdb数据库创建数据表student_info、curriculum、grade,三个表的数据结构如表1-表3所示。
表1 student_info表结构
列名 数据类型 允许NULL值 主键
学号 char(4) 否 是
姓名 char(8) 否 否
性别 char(2) 是 否
出生日期 date 是 否
家族住址 varchar(50) 是 否
表2 curriculum表结构
列名 数据类型 允许NULL值 主键
课程编号 char(4) 否 是
课程名称 varchar(50) 是 否
学分 int 是 否

表3 grade表结构

列名 数据类型 允许NULL值 主键
学号 char(4) 否 是
课程编号 char(4) 否 是
分数 int 是 否

create table student_info(
学号 char(4) not null primary key,
姓名 char(8) not null,
性别 char(2),
出生日期 date,
家族住址 varchar(50)
)default charset=UTF8;
在这里插入图片描述

create table curriculum(
课程编号 char(4)not null primary key,
课程名称 varchar(50),
学分 int
)default charset=UTF8;
在这里插入图片描述

create table grade(
学号 char(4)not null,
课程编号 char(4)not null,
分数 int,
primary key(学号,课程编号)
)default charset=UTF8;
在这里插入图片描述

  1. 使用SQL语句INSERT向studentsdb数据库的student_info、curriculum、grade表插入数据,各表数据如表4-表6所示。(提示:
    方法1:多个INSERT语句
    INSERT INTO 表名 [ (列名1[,列名2……]) ]
    VALUES (值1[,值2……]) ;
    方法2:一个INSERT语句插入多条记录
    INSERT INTO 表名 [ (列名1[,列名2……]) ]
    VALUES (值1[,值2……])
    [,(值1[,值2……]),……,(值1[,值2……])]
    方法3:利用子查询向表中插入数据
    INSERT INTO 表名 [ (列名1[,列名2……]) ]
    SELECT语句

    表4 student_info表的数据
    学号 姓名 性别 出生日期 家族住址
    0001 张青平 男 2000-10-01 衡阳市东风路77号
    0002 刘东阳 男 1998-12-09 东阳市八一北路33号
    0003 马晓夏 女 1995-05-12 长岭市五一路763号
    0004 钱忠理 男 1994-09-23 滨海市洞庭大道279号
    0005 孙海洋 男 1995-04-03 长岛市解放路27号
    0006 郭小斌 男 1997-11-10 南山市红旗路113号
    0007 肖月玲 女 1996-12-07 东方市南京路11号
    0008 张玲珑 女 1997-12-24 滨江市新建路97号
    表5 curriculum表的数据
    课程编号 课程名称 学分
    0001 计算机应用基础 2
    0002 C语言程序设计 2
    0003 数据库原理及应用 2
    0004 英语 4
    0005 高等数学 4
    表6 grade表的数据
    学号 课程编号 分数
    0001 0001 80
    0001 0002 91
    0001 0003 88
    0001 0004 85
    0001 0005 77
    0002 0001 73
    0002 0002 68
    0002 0003 80
    0002 0004 79
    0002 0005 73
    0003 0001 84
    0003 0002 92
    0003 0003 81
    0003 0004 82
    0003 0005 75

insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0001’,‘张青平’,‘男’,‘2000-10-01’,‘衡阳市东风路77号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0002’,‘刘东阳’,‘男’,‘1998-12-09’,‘东阳市八一北路33号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0003’,‘马晓夏’,‘女’,‘1995-05-12’,‘长岭市五一路763号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0004’,‘钱忠理’,‘男’,‘1994-09-23’,‘滨海洞庭大道279号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0005’,‘孙海洋’,‘男’,‘1995-04-03’,‘长岛市解放路27号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0006’,‘郭小斌’,‘男’,‘1997-11-10’,‘南山市红旗路113号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0007’,‘肖月玲’,‘女’,‘1996-12-07’,‘东方市南京路11号’);
insert into student_info(学号,姓名,性别,出生日期,家族住址) values(‘0008’,‘张玲珑’,‘女’,‘1997-12-24’,‘滨江市新建路97号’);

insert into curriculum values(‘0001’,‘计算机应用基础’,2);
insert into curriculum values(‘0002’,‘C语音程序设计’,2);
insert into curriculum values(‘0003’,‘数据库原理及应用’,2);
insert into curriculum values(‘0004’,‘英语’,4);
insert into curriculum values(‘0005’,‘高等数学’,4);

insert into grade values(‘0001’,‘0001’,80);
insert into grade values(‘0001’,‘0002’,91);
insert into grade values(‘0001’,‘0003’,88);
insert into grade values(‘0001’,‘0004’,85);
insert into grade values(‘0001’,‘0005’,77);
insert into grade values(‘0002’,‘0001’,73);

insert into grade values(‘0002’,‘0002’,68);
insert into grade values(‘0002’,‘0003’,80);
insert into grade values(‘0002’,‘0004’,79);
insert into grade values(‘0002’,‘0005’,73);
insert into grade values(‘0003’,‘0001’,84);
insert into grade values(‘0003’,‘0002’,92);
insert into grade values(‘0003’,‘0003’,81);
insert into grade values(‘0003’,‘0004’,82);
insert into grade values(‘0003’,‘0005’,75);
在这里插入图片描述

5.使用SQL语句ALTER TABLE修改curriculum表的“课程名称”列,使之为空。
(提示:修改表的语法结构:ALTER TABLE <表名>
MODIFY [COLUMN] <列名> <数据类型>
[DEFAULT <默认值>];
一次只能修改1列)
ALTER TABLE curriculum
MODIFY COLUMN 课程名称 VARCHAR(50)NULL;
SELECT * FROM curriculum;
截图:在这里插入图片描述

6.使用SQL语句ALTER TABLE修改grade表的“分数”列,使其数据类型为decimal(5,2)。
alter table grade
modify column 分数 decimal(5,2);
在这里插入图片描述

7.使用SQL语句ALTER TABLE为student_info表添加一个名为“备注”的数据列,其数据类型为varchar(50),默认值为“有特殊情况,请说明!”。
(提示:修改表的语法结构:ALTER TABLE <表名>
ADD [COLUMN] <列名> <数据类型>
[DEFAULT <默认值>];
一次只能增加1列)
alter table student_info
add 备注 varchar(50);
在这里插入图片描述

  1. 使用SQL语句创建数据库studb,并在此数据库下创建表stu,表结构与数据与studentsdb的student_info表相同。
    (提示:利用子查询来创建表
    CREATE TABLE <表名>
    SELECT语句;

    CREATE TABLE stu
    SELECT * FROM studentsdbst.udent_info;
    SELECT * FROM stu;
    截图:在这里插入图片描述

9.使用SQL语句删除表stu中学号为0004的记录。(提示:MySQL运行在SAFE_UPDATES模式下,该模式会导致非主键条件下无法执行UPDATEA或DELETE命令。需要执行命令 SET SQL_SAFE_UPDATES=0; 修改数据库模式。)
delete from stu where 学号=‘0004’;
在这里插入图片描述

10.使用SQL语句更新表stud中学号为0002的家庭住址为“滨江市新建路96号”。
update stu set 家族住址=‘滨江市新建路96号’
where 学号=‘0002’;
在这里插入图片描述

11.使用SQL语句ALTER TABLE删除student_info表中的“备注”列。
(提示:修改表的语法结构:ALTER TABLE <表名>
DROP [COLUMN] <列名>];
一次只能删除1列,删除的列无法恢复)
alter table stu
drop column 备注;
截图:
12.截断表(删除表中数据,保留表结构)
TRUNCATE TABLE stud
SELECTE * FROM stud
截图:在这里插入图片描述

13.删除表stud。
drop table stud;
在这里插入图片描述

14.删除数据库studb。
DROP DATABASE [IF EXISTS] studb;
在这里插入图片描述

四、实验思考

  1. 能通过一个CREATE DATABASE语句创建两个及以上的数据库吗?
    不能,一个sql语句一次只能创建一个数据库
    2.删除了的数据库表中的列能恢复吗?
    (不能)
    3.对于studentsdb数据库的student_info表而言,如果输入相同学号的记录将出现什么现象?为什么?
    出现学号重复记录,导致插入删除冲突。因为学号作为主键是不能有相同的
    4.已经打开的表能删除吗?

    5.在定义基本表语句时,NOT NULL参数的作用是什么?
    数据库字段属性,使用NOT NULL后该字段不接受NULL值
    6.主码可以建立在“值可以为NULL”的列上吗?
    不可以,主码的值不能为空
    五、实验总结
    1、收获
    通过实验,使我懂得了mysql数据库与数据表的基本操作。对数据库表的创建、修改、删除等操作进一步的深刻了解和掌握。
    2、存在的问题
    在写sql语句时容易忘记分号;
    初期时在安装老师给的MYSQL5.5时出现问题,安装成功但不能通过DOS命令行启动,然后通过同学的帮忙,安装了MYSQL5.0并成功启动。
    在创建表时,对表的完整性约束条件表达不够清楚,通过查阅书籍逐渐尝试而建表成功。
    使用Navicat时不够熟练,要多加练习,遇到问题要及时解决,并从中吸取经验。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7 种提升 SpringBoot 吞吐量神技!

7 种提升 SpringBoot 吞吐量神技&#xff01; 1、异步执行2、增加内嵌 Tomcat 的最大连接数3、使用 ComponentScan()4、默认 Tomcat 容器改为 Undertow5、使用 BufferedWriter 进行缓冲6、Deferred 方式实现异步调用7、异步调用可以使用 AsyncHandlerInterceptor 进行拦截 1、异…

[shell]实现多个shell脚本之间变量传递

一、需求 需要有一些变量要从一个shell文件向另一个shell文件传递。 二、方案 2.1通过入参形式传递 当A脚本中的变量需要传递到B脚本中时&#xff0c;可以在运行B脚本的基础上&#xff0c;将A脚本中的数据加入到B脚本的入参中&#xff0c;从而达到传递参数的目的。 2.2通过…

C++ 图形界面学习效果及代码

#include <stdio.h> #include<conio.h> #include <stdlib.h> #include<graphics.h> #define WIDTH 800 #define HEIGHT 480 #define SIZE 20 int main() {const char* str "人生就是由欲望不满足而痛苦和满足之后无趣这两者所构成";const …

1.你好, Python!

快速介绍 Python 语法、变量赋值和数字! 这门课程涵盖了你在使用Python进行数据科学时所需的关键Python技能。该课程适合有一些先前编码经验的人,希望将Python添加到他们的技能库中。(如果您是第一次编码,建议您查看我们的编程入门课程,该课程专为完全初学者设计,希望开始…

07 整合SSM的快速理解

1.1 第一问&#xff1a;SSM整合需要几个IoC容器&#xff1f; 两个容器 本质上说&#xff0c;整合就是将三层架构和框架核心API组件交给SpringIoC容器管理&#xff01; 一个容器可能就够了&#xff0c;但是我们常见的操作是创建两个IoC容器&#xff08;web容器和root容器&…

Node 相关记录

Node 版本管理 nvm 卸载之前的 nodejs下载安装配置 settings.txt root: D:\nvm # nvm 安装路径 path: D:\nvm\nodejs # node 安装路径 proxy: # 淘宝镜像 node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/n…

2024年美赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

uni-app的组件(一)

scroll-view 可滚动视图区域。用于区域滚动 <scroll-view scroll-y"true" :scroll-top"scrollTop" class"scroll-y" scroll"scroll"><view id"demo1" class"scroll-view-item bg-red">A</view>…

【Linux笔记】进程等待与程序替换

一、进程的终止 1、进程退出码 在讲解进程的终止之前&#xff0c;先要普及一下进程的退出码概念。 我们父进程之所以要创建子进程&#xff0c;就是为了让子进程运行不一样的任务&#xff0c;那么对于子进程执行的这个任务执行完毕后的结果是否正确或者是否出差错&#xff0c…

View 自定义 - View 类中的方法

一、概念 View这个类代表用户界面组件的基本构建块。View在屏幕上占据一个矩形区域&#xff0c;并负责绘制和事件处理。View是用于创建交互式用户界面组件&#xff08;按钮、文本等&#xff09;的基础类。它的子类ViewGroup是所有布局的父类&#xff0c;它是一个可以包含其他vi…

将 pyparamvalidate 项目,发布至 pypi

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、编写 pyproject.toml 文件3、编写 LICENSE 文件4、编写 README.md 文件5、升级 pip、build、twine 工具6、打包发布的版本7、测试发布至 TestPyPI8、创建测试项目&#xff0c;测试发布结果9、正…

SQLite,ROOM 清空表数据并将自增量归零

1.先清空表数据&#xff1a; delete from [tablename]; 2.当数据库中包含自增列时&#xff0c;会自动建立一个名为 sqlite_sequence 的表。这个表包含两个列&#xff1a;name和seq。name记录自增列所在的表&#xff08;即tablename&#xff09;&#xff0c;seq记录当前序号&…

SSM框架学习笔记04 | SpringMVC

文章目录 一、SpringMVC简介二、 请求与响应1. 请求映射路径2. get请求与post请求3. 响应 二、REST风格1.简介 三、 SSM整合四、拦截器1. 定义拦截器2.配置拦截器3.拦截器执行顺序4.拦截器参数5.多个连接器工作流程分析6.拦截器链的运行顺序 一、SpringMVC简介 SpringMVC技术与…

AI嵌入式K210项目(3)-GPIO控制

文章目录 前言一、背景知识二、背景知识二、开始你的表演代码实现 总结 前言 前面介绍了开发板和环境搭建的基本情况&#xff0c;接下来我们开始学习使用C进行裸板开发&#xff0c;本节课先来学习下K210最基础的功能&#xff0c;引脚映射和点灯。 在开始具体学习之前&#xff…

java数据结构与算法刷题-----LeetCode96. 不同的二叉搜索树

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

TRB 2024论文分享:融合Transformer和自监督学习的长时交通流预测模型

TRB&#xff08;Transportation Research Board&#xff0c;美国交通研究委员会&#xff0c;简称TRB&#xff09;会议是交通研究领域知名度最高学术会议之一&#xff0c;近年来的参会人数已经超过了2万名&#xff0c;是参与人数和国家最多的学术盛会。TRB会议几乎涵盖了交通领域…

Ceph的介绍与部署

目录 存储基础 单机存储设备 DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; NAS&#xff08;网络附加存储&#xff0c;是通过网络附加到当前主机文件系统之上的存储&#xff09; SAN&#xff08;存储区域网络&#xff09; 单…

基于ssm的数学课程评价系统的设计与开发+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本数学课程评价系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

List转数组,使用toArray时,new String[0] 的数组空间大小怎么传?

我们在日常开发中&#xff0c;经常遇到List转数组&#xff0c;数组转List的场景。当我们List转数组时&#xff0c;一般使用这种方式&#xff1a; String[] queryTaskIdArr queryTaskIds.toArray(new String[0]); 但是toArray方法中的入参有什么需要注意的呢&#xff1f; 如下…

Hive日期函数详细讲解

Hive 提供了一系列的内建日期函数&#xff0c;用于处理日期和时间数据。以下是您提到的日期函数的详细讲解&#xff0c;包括案例和使用注意事项&#xff1a; FROM_UNIXTIME() 功能&#xff1a;将 Unix 时间戳&#xff08;秒为单位&#xff09;转换为日期时间格式。语法&#xf…