【数据库和表的管理】

数据库和表的管理

一、实验目的

  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,一经查实,立即删除!

相关文章

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 …

07 整合SSM的快速理解

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

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…

将 pyparamvalidate 项目,发布至 pypi

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

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; 如下…

【架构】docker实现集群主从扩容【案例3/4】

实现集群主从扩容 当整个集群扛不住流量的情况时&#xff0c;需要给集群扩容增加设备&#xff0c;由3主3从&#xff0c;扩为4主4从。实现&#xff1a; 示意图如下&#xff1a; 第一步&#xff1a;新创建两个节点&#xff08;redis-node-7&#xff0c;端口6387和 redis-node…

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆显位个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的…

数据结构之list类

前言 list是列表类。从list 类开始&#xff0c;我们就要接触独属于 Python 的数据类型了。Python 简单、易用&#xff0c;很大一部分原因就是它对基础数据类型的设计各具特色又相辅相成。 话不多说&#xff0c;让我们开始学习第一个 Python 数据类型一list。 1. list的赋值 输…

【shell】读取表格文件的数据

碎碎念 shell在处理复杂问题的时候不具备优势&#xff0c;如果业务环境能够使用python的话用python又简单又好用&#xff0c;但是很多云平台的现场可能需要shell脚本文件&#xff08;还好是要求bash&#xff09; 但是现在有一个业务场景就是运维人员会把参数写在excel表格中 …

《教育》期刊是什么级别的期刊?是正规期刊吗?能评职称吗?

《教育》以教育行业的各类新闻为重点&#xff0c;积极推广各地教育部门改革经验及优秀成果&#xff0c;努力挖掘教育一线先进单位和个人&#xff0c;充分发挥新闻舆论的监督作用。 收录情况&#xff1a;知网收录 投稿方式&#xff1a;教育类&#xff5c;《教育》省级 出版周期&…

Java 常用加密解密

Java 常用加密解密 常见的加密算法可以分成三类&#xff0c;对称加密算法&#xff0c;非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后…

B端产品经理学习-B端产品的项目管理

项目管理的作用 指导Roadmap落地 每个节点的项目时间需要按照时间点落地&#xff0c;才不会影响后面的项目事件 为了明确需求&#xff0c;明确研发的工作 避免产研部门因为需求扯皮、研发部门抱怨需求文档不够清晰、在开发过程中增加很多细节需求、增加了研发的工作量、初次…