【数据库和表的管理】

news2024/12/28 15:22:18

数据库和表的管理

一、实验目的

  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.coloradmin.cn/o/1386814.html

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

相关文章

多维时序 | Matlab实现GRO-CNN-LSTM-Attention淘金算法优化卷积神经网络-长短期记忆网络结合注意力机制多变量时间序列预测

多维时序 | Matlab实现GRO-CNN-LSTM-Attention淘金算法优化卷积神经网络-长短期记忆网络结合注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现GRO-CNN-LSTM-Attention淘金算法优化卷积神经网络-长短期记忆网络结合注意力机制多变量时间序列预测效果一览基本介绍程序设…

vivado 使用Vitis HLS源、使用模型生成器源、使用系统生成器源

使用Vitis HLS源 AMD Vitis™ 高级综合&#xff08;HLS&#xff09;工具将C规范转换为寄存器传输级&#xff08;RTL&#xff09;实现&#xff0c;您可以将其合成到AMD设备中。你可以写CC、C或SystemC中的规范&#xff0c;AMD设备提供了大规模并行与传统处理器相比&#xff0c;…

Android的setContentView流程

一.Activity里面的mWindow是啥 在ActivityThread的performLaunchActivity方法里面&#xff1a; private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {ActivityInfo aInfo r.activityInfo;if (r.packageInfo null) {r.packageInfo getP…

11 # 类:抽象类与多态

抽象类 抽象类是不允许被实例化的&#xff0c;只能被继承 abstract class Animal {}let animal new Animal(); // 错误: 不能创建一个抽象类的实例 class Dog {constructor(name: string) {this.name name;}name: string;run() {} }let dog new Dog(Tom);抽象类的好处就…

【野火i.MX6NULL开发板】ARM-GCC 和开发板的 HelloWorld(ubuntu主机和野火开发板debian交叉编译)、开发板的/mnt里没文件

0、前言 参考资料&#xff1a; 《野火 Linux 基础与应用开发实战指南基于 i.MX6ULL 系列》PDF 第24章 参考视频&#xff1a; https://www.bilibili.com/video/BV1JK4y1t7io?p26&vd_sourcefb8dcae0aee3f1aab700c21099045395 注意&#xff0c;一定要记得把虚拟机的网络适配…

【扩散模型】10、ControlNet | 用图像控制图像的生成(ICCV2023)

论文&#xff1a;Adding Conditional Control to Text-to-Image Diffusion Models 代码&#xff1a;https://github.com/lllyasviel/ControlNet 出处&#xff1a;ICCV2023 Best Paper | 斯坦福 时间&#xff1a;2023.02 一、背景 文本到图像的生成尽管已经有很好的效果&…

拦截器的配置

1、什么是拦截器&#xff1f; Spring MVC中的拦截器&#xff08;Interceptor&#xff09;类似于Servlet中的过滤器&#xff08;Filter&#xff09;&#xff0c;它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、判断用户是否登录等。 拦截器依赖于web框…

Git仓库管理笔记

问题&#xff1a; hint: the same ref. If you want to integrate the remote changes, use Done 解决&#xff1a; 解决方法&#xff1a; 1、先使用pull命令&#xff1a; git pull --rebase origin master 2、再使用push命令&#xff1a; git push -u origin master

关于Python —— Python教程

开始 Python 是一个易于学习、使用和高效阅读的编程语言。它具有简洁的英文语法&#xff0c;编写更少的代码&#xff0c;让程序员专注于业务逻辑而不是语言本身。 本教程将从深度、专注细节上去理解 Python 这门语言。初学者可以参考此教程理解相应的内容&#xff0c;本教程将…

服务异步通讯——RabbitMQ

文章目录 RabbitMQ异步通讯技术对比 安装RabbitMQ下载镜像 安装MQRabbitMQ消息模型入门案例publisher实现consumer实现总结 SpringAMQPBasic Queue 简单队列模型消息发送消息接收 WorkQueue消息发送消息接收测试总结 发布/订阅Fanout声明队列和交换机消息发送消息接收 Direct基…

数据结构学习 jz66 构建乘积数组

关键词&#xff1a;数学 双指针 方法一&#xff1a;这个题目我一开始做不知道不能用除法。我做的&#xff1a;[ 用时: 12 m 12 s ] 用了除法 分类讨论 方法二&#xff1a;后来看了提示&#xff0c;双指针&#xff0c;两边各开始乘。 方法三&#xff1a;然后又看了答案可以节…

特征工程-特征处理(二)

特征处理 二、时间特征处理 将原本的具体时间拆分为年月日等多个特征变量&#xff0c;同时可以引入在一天的某个时间段&#xff0c;或者是当天是否为节假日等其他条件&#xff0c;还可以进一步结合其他特征&#xff0c;进行前后一个时间段或是多个时间段时间的特征差值。 dt.…

常见的反爬虫风控 | 验证码风控

一.前言 在当今信息技术迅速发展的背景下&#xff0c;网站和在线服务面临着日益增长的自动化访问威胁&#xff0c;这些大多来自于各类爬虫程序。这种大量的自动化访问不仅对网站的正常运行构成压力&#xff0c;还可能导致敏感数据的泄露&#xff0c;甚至被用于不正当竞争和恶意…

【华为OD机试真题2023CD卷 JAVAJS】查找一个有向网络的头节点和尾节点

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 查找一个有向网络的头节点和尾节点 知识点图DFS搜索 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节…

ubuntu22: nvtop no gpu to monitor.

解决方法&#xff1a; 重新下载nvtop sudo apt update sudo apt -y install nvtop真是逆天 &#xff0c;ubuntu系统的nvidia driver突然坏了&#xff0c;然后我重装了nvidia driver, 之后用nvtop就出现这个问题了&#xff0c;但是逆天的是我竟然没有搜到一篇中文的帖子讲这个问…

自己动手写一个 Arthas 在线诊断工具系列说明

相关文章&#xff1a; 自己动手写一个分库分表中间件&#xff08;十&#xff09;线上优化之数据库连接超时优化自己动手写分布式任务调度框架自己动手写 Java 虚拟机&#xff08;二&#xff09;-查找 Class 文件自己动手调试 JDK&#xff08;CLion&#xff09;Java Agent 的简…

Linux网络文件共享服务之FTP协议

目录 一、存储类型 1、直连式存储&#xff08;DAS&#xff09; 2、存储区域网络&#xff08;SAN&#xff09; 3、网络附加存储&#xff08;NAS&#xff09; 二、 FTP文件传输协议 1、FTP协议的工作原理 1.1 FTP协议的工作流程 1.2 FTP协议的两种工作模式 1.2.1 主动模…

6314A/B/C 稳定光源

01 6314A/B/C 稳定光源 产品综述&#xff1a; 6314系列稳定光源包括6314A稳定光源(1310NM单波长)、6314B稳定光源(1550NM单波长)、6314C稳定光源(1310NM &1550NM双波长)。6314系列稳定光源采用高精度自动功率控制技术和自动温度控制技术。6314系列稳定光源配备多种模块&…

Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

场景 Mysql中怎样设置指定ip远程访问连接&#xff1a; Mysql中怎样设置指定ip远程访问连接_navicat for mysql 设置只有某个ip可以远程链接-CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式&#xff0c;如果通过可视化工具比如Navicat来实现。 注&#xff1a…

二叉树题目:从前序与后序遍历序列构造二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;从前序与后序遍历序列构造二叉树 出处&#xff1a;889. 从前序与后序遍历序列构造二叉树 难度 7 级 题目描述…