当前位置: 首页 > news >正文

【数据库和表的管理】

数据库和表的管理

一、实验目的

  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时不够熟练,要多加练习,遇到问题要及时解决,并从中吸取经验。

相关文章:

  • 人大金仓 KingBase 表添加自增主键
  • Hadoop分布式文件系统(三)
  • Java复习
  • 学习笔记:在华为昇腾NPU上进行深度学习项目【未完待续】
  • 【Linux】各目录说明
  • Microsoft Remote Desktop for Mac 中文正式版下载 微软远程连接软件
  • 【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程
  • 阿里云高性能云服务器_云主机_云服务器详解
  • 初识 Elasticsearch 应用知识,一文读懂 Elasticsearch 知识文集(4)
  • 59道SpringCloud面试题详解含答案(值得珍藏)
  • 多线程——定时器
  • mac 使用brew卸载node
  • Oracle AWR报告的生成和解读
  • 【全】OpenSSL创建生成CA证书、服务器、客户端证书及密钥说明
  • 蓝桥杯备赛 | 洛谷做题打卡day2
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • GraphQL学习过程应该是这样的
  • HTTP那些事
  • Javascript设计模式学习之Observer(观察者)模式
  • Kibana配置logstash,报表一体化
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Vue2.x学习三:事件处理生命周期钩子
  • 不上全站https的网站你们就等着被恶心死吧
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 浅谈web中前端模板引擎的使用
  • 算法-图和图算法
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一些css基础学习笔记
  • 字符串匹配基础上
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​卜东波研究员:高观点下的少儿计算思维
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (2)nginx 安装、启停
  • (30)数组元素和与数字和的绝对差
  • (4)logging(日志模块)
  • (Python) SOAP Web Service (HTTP POST)
  • (安卓)跳转应用市场APP详情页的方式
  • (分布式缓存)Redis持久化
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (接口自动化)Python3操作MySQL数据库
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • .NET 解决重复提交问题
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net开发时的诡异问题,button的onclick事件无效
  • /*在DataTable中更新、删除数据*/
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法