【数据库和表的管理】

数据库和表的管理

一、实验目的

  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.mfbz.cn/a/323565.html

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

相关文章

玩转硬件之MP3的破解

MP3播放器是一种能播放音乐文件的播放器&#xff0c;主要由存储器&#xff08;存储卡&#xff09;、显示器&#xff08;LCD显示屏&#xff09;、中央处理器MCU&#xff08;微控制器&#xff09;或解码DSP&#xff08;数字信号处理器&#xff09; 等组成。 其中微控制器是播放器…

k8s存储卷之动态

动态pv需要两个组件 1、卷插件&#xff0c;k8s本身支持的动态pv创建不包含NFS&#xff0c;需要声明和安装一个外部插件 Provisioner 存储分配器&#xff0c;动态创建pv&#xff0c;然后根据pvc的请求自动绑定和使用 2、StorageClass&#xff0c;用来定义pv的属性&#xff0c…

金蝶云星空单据转换插件-选单

文章目录 金蝶云星空单据转换插件-选单 金蝶云星空单据转换插件-选单 选单使用标识报错 应该使用实体属性

LeetCode 每日一题 Day 44 || 哑节点去重

82. 删除排序链表中的重复元素 II 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复数字的节点&#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,3,4,4,5] 输出&#xff1a;[1,2,5] 示例 2&#x…

内存泄漏问题

内存泄漏是一种常见的问题&#xff0c;它可能导致系统内存不断增加&#xff0c;最终耗尽可用内存。解决内存泄漏问题通常需要进行调试和分析。下面是一些可能有助于解决内存泄漏问题的步骤&#xff1a; 1. 监控内存使用情况&#xff1a; a. 使用 malloc 记录日志&#xff1a;…

MyBatisPlus学习笔记二

接上&#xff1a;MyBatisPlus学习笔记一&#xff1a; MyBatisPlus学习笔记一-CSDN博客 1、条件构造器 MyBatisPlus支持各种复杂的where条件&#xff0c;可以满足日常开发的所有需求。 1.1、集成体系 1.2、实例 查询 lambda查询 更新 1.3、总结 2、自定义sql 我们可以利用MyB…

Rust-NLL(Non-Lexical-Lifetime)

Rust防范“内存不安全”代码的原则极其清晰明了。 如果你对同一块内存存在多个引用&#xff0c;就不要试图对这块内存做修改&#xff1b;如果你需要对一块内存做修改&#xff0c;就不要同时保留多个引用。 只要保证了这个原则&#xff0c;我们就可以保证内存安全。 它在实践…

入门Docker1: 容器技术的基础

目录 服务器选型 虚拟机 基于主机(物理机或虚机)的多服务实例 基于容器的服务实例 Docker Docker三要素 Docker安装 Docker基本使用 基本操作 仓库镜像 容器 服务器选型 在选择服务器操作系统时&#xff0c; Windows 附带了许多您需要付费的功能。 Linux 是开放源代…

光K8S的目录结构就够你学一天!

Kubernetes Project Layout设计 Kubernetes项目由Go语言编写。Go语言官方对项目的结构设计没有强制要求&#xff0c;早期的Go语言开发者都喜欢将包文件代码放置在项目的src/目录下&#xff0c;如nsqio开源项目&#xff0c;开发者喜欢将入口文件放入apps/目录。不同开发者的喜好…

使用WAF防御网络上的隐蔽威胁之CSRF攻击

在网络安全领域&#xff0c;除了常见的XSS&#xff08;跨站脚本&#xff09;攻击外&#xff0c;CSRF&#xff08;跨站请求伪造&#xff09;攻击也是一种常见且危险的威胁。这种攻击利用用户已经验证的身份在没有用户知情的情况下&#xff0c;执行非授权的操作。了解CSRF攻击的机…

运筹说 第45期丨多目标规划发展及其提出者—— Abraham Charnes和William W. Cooper

经过前面的学习&#xff0c;相信大家已经对运筹学的运输问题有了更加全面的了解&#xff0c;接下来小编将带你学习新一章的内容&#xff0c; 先来看看多目标规划的发展简史&#xff0c;然后再带你领略该理论两位提出者的传奇一生&#xff01; 01目标规划发展简史 Vilfredo Pa…

Vue2.组件通信

样式冲突 写在组件中的样式默认会全局生效。容易造成多个组件之间的样式冲突问题。 可以给组件加上scoped属性&#xff0c;让样式只作用于当前组件。 原理&#xff1a; 给当前组件模板的所有元素&#xff0c;加上一个自定义属性data-v-hash值&#xff0c;用以区分不同的组件。…

【Axure高保真原型】移入放大对应区域的饼图

今天和大家分享移入放大对应扇形区域的饼图的原型模板&#xff0c;鼠标移入时&#xff0c;对应扇形区域的会放大&#xff0c;并且的项目和数据弹窗&#xff0c;弹窗可以跟随鼠标移动。这个原型是用Axure原生元件制作的&#xff0c;所以不需要联网或者调用外部图表……具体效果可…

一篇教你生成密钥给自己打的exe添加密钥

一篇教你生成密钥给自己打的exe添加密钥 我这里是自己写了一个python 打包exe,说总是给我报毒什么的 文章目录 一篇教你生成密钥给自己打的exe添加密钥前言一、使用java jdk 自带的keytool&#xff1f;二、进行转换2.把证书密钥写入到你的exe 总结 前言 生成密钥并为自定义 .…

上海市税务局:买卖虚拟货币需缴税!中国仍未有放松加密政策的迹象?

自2021年央行等十部委下发禁止虚拟货币交易的通知以来&#xff0c;国内虚拟货币交易平台几乎销声匿迹。然而&#xff0c;最近一则关于个人所得税的释义再次引起了人们的关注。 1月5日&#xff0c;国家税务总局上海市税务局在官方公众号发布《个人所得税经营所得和分类所得常见误…

Win10专业版系统搭建DNS解析服务

Win10专业版 纯新手&#xff0c;也没弄过Linux的。不喜勿喷&#xff0c;有问题请指出 第一天一头雾水整了几个小时没结果&#xff0c;第二天豁然开朗&#xff0c;10分钟明白了第一天的问题所在。 Win10 安卓&#xff1a; iOS&#xff1a; 搭建DNS服务器的意义&#xff1a; 屏蔽…

关于Python —— Python教程

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

高精度磁导航传感器MGS系列RS232|RS485|CANBUS通讯连线方法

高精度磁导航传感器MGS系列&#xff0c;包含&#xff1a;CNS-MGS-080N、CNS-MGS-160N等&#xff0c;具有1mm的检测精度&#xff0c;特别适应于⾼精度磁条导航。利⽤检测磁场相对位置来进⾏AGV的辅助定位对接&#xff0c;获得更⾼的导航、定位、驻⻋精度。 MGS系列磁导航传感器⽀…

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

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