[mysql]修改表和课后练习

news2024/11/6 14:30:15

目录

DDL数据定义语言

添加一个字段

添加一个字段到最后一个

添加到表中的第一个一个字段

选择其中一个位置:

修改一个字段:数据类型,长度,默认值(略)

重命名一个字段

删除一个字段

重命名表

删除表

清空表

DCL中事务相关内容

DCL中COMMIT和ROLLBACK的讲解

对比TRUNCATE TABLE 和DELETE FROM

创建管理表的课后练习

练习1

答案

练习2

解答


DDL数据定义语言

修改表

DESC myemp1

添加一个字段

添加一个字段到最后一个

ALTER TABLE myemp2

ADD phone_test VARCHAR(11) FIRST#默认添加到表中的最后一个字段

添加到表中的第一个一个字段

ADD phone_test VARCHAR(11) FIRST#FIRST

选择其中一个位置:

ALTER TABLE myemp2

ADD email_test varchar(45) AFTER phone_test;

 DESC myemp2

修改一个字段:数据类型,长度,默认值(略)

我们一般会修改数据类型吗,我们一般都不会做了,如果我们把邮箱写成字符串,或者把小数写成字符串类型,里面已经有小数的数据了,那么我们也不适合改,也不会成功,总之,数据类型我们改的不多

我们一般就只会修改长度

ALTER TABLE myemp2

MODIFY phone_test varchar(20)

默认值:
ALTER TABLE myemp2

MODIFY phone_test varchar(20) default ‘aaa’

就是没有指定这个字段的时候默认就是aaa

重命名一个字段

ALTER TABLE myemp2

CHANGE salary salary_test int(5)

ALTER TABLE myemp2

CHANGE salary_test salary varchar(12)

我们是可以发现,我们改名的时候是可以修改类型和长度的,所以在这个过程中也是存在MODIFY的行为.

删除一个字段

ALTER TABLE myemp2

DROP COLUMN email_test

重命名表

重命名有两种方式,大家记一个就行,第一个比较标准,建议记这个,第一个RENAME TABLE myemp2 TO myemp22

第二种修改

ALTER TABLE myemp22

RENAME TO myem12

删除表

DROP TABLE IF EXISTS myemp12

#如果存在就删除,不存在就算了.和之前我们如果不存在就创建是一样的关键词

那么大家会不会好奇,这个操作可以撤销,或者说回滚吗,不能我们如果删除是不能回滚的.那就得看你有没有日志文件了,就得跑路了

清空表

删除表DROP意味着不光将表结构删除了,将表数据也删除了.而我们的TRUNCATE TABLE只是将表内容删除,表结构还在.

TRUNCATE TABLE

DCL中事务相关内容

DCL中COMMIT和ROLLBACK的讲解

COMMIT:提交数据,一旦执行COMMIT数据就被永久保存内容,意味数据不可以回滚

ROLLBACK:回滚数据,一旦ROLLBACK撤销,就可以回滚到最近的一次COMMIT之后,如果COMMIT的之前就不能撤销了.

比如C1运行一次comitc2运行一次commit c3没有运行,那么c3就会被撤销

事务我们先不解释,那么我们先把这两个和

对比TRUNCATE TABLE 和DELETE FROM

相同点:都可以实现对表的数据删除,表结构还在

不同点:

TRUNCATE TABLE表数据全部清除,同时数据不可以回滚

DELECT FROM 一旦执行此操作,表数据可以全部清除.不带WHERE就可以全部清除,可以实现回滚,也可以不实现,我们就可以引入

DDL数据定义语言和DML数据操作语言

DDL的操作,创建表,删除表,创建数据库,删除数据库一旦运行,就不能撤回

DML的操作,默认情况下一旦执行也是不能回滚但是我们可以修改参数SET autocommit =FALSE,则执行DML操作就可以进行回滚,

也就是这个参数值只对DML生效

演示:

DELETE FROM 我们建立一个表

CREATE TABLE myemp3

AS

SELECT * FROM employees

我们先COMMIT一下

然后取消一下不能撤销关键词

SET autocommit =FALSE

删除一下表

DELETE FROM myemp3

我们查询之后就没有数据了

我们回滚一下再查询

发现回滚有效,是不是就ROLLBACK到我们COMMIT之后.

现在我们再进行一下TRUNCATE TABLE

实际DDL有一个自动的COMMIT操作,这个操作不会收到关键词 AUTOCOMMIT影响

因为他只影响DML

所以使用DDL一定要谨慎.

DCL中和事务相关的内容我们就说到这,剩下的我们下篇再继续说事务的事

那么大家对DCL和DML,DDL的区别大家就应该明白了,如果我们想删除一个表,你是要使用TRUNCATE,还是DELECT FROM表.由于TRUNCATE比DELETE(由于要备份)的速度快,而且使用的系统和事务资源扫,但TRUNCATE无事务部且不触发TRIGGER,有可能造成事故,对于实际项目中,核心数据如果用TRUNCATE 删除了那就非常危险,所以我们还是使用DELECT比较好,就算因为备份会导致占用资源.

创建管理表的课后练习

DCL数据控制语言和DDL数据定义语言的课后练习

练习1

#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作 #2. 创建表dept01 /* 字段     类型 id NAME */ INT(7) VARCHAR(25)

#3. 将表departments中的数据插入新表dept02中

#4. 创建表emp01 /* 字段         类型 id INT(7) first_name VARCHAR (25) last_name VARCHAR(25) dept_id INT(7) */

#5. 将列last_name的长度增加到50

#6. 根据表employees创建emp02

#7. 删除表emp01

#8. 将表emp02重命名为emp01

#9.在表dept02和emp01中添加新列test_column,并检查所作的操作

#10.直接删除表emp01中的列 department_i

这里的难度会比查询中低很多,只要你知道关键词就一定可以做出来,但是之前查询就算你知道

SELECT PASSWORD('mysql') FROM DuaL

SELECT ENCODE('mysql','你好'),DECODE(ENCODE('mysql','你好'),'你好') FROM DuaL

DCL数据控制语言和DDL数据定义语言的课后练习

答案

#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作

CREATE DATABASE  test01_office

USE test01_office

 #2. 创建表dept01 /* 字段     类型 id NAME */ INT(7) VARCHAR(25)

 CREATE TABLE dept01 (id INT(7),`NAME` VARCHAR(25))

#3. 将表departments中的数据插入新表dept02中

CREATE TABLE dept02

AS

SELECT *

FROM atguigudb.departments

#4. 创建表emp01 /* 字段         类型 id INT(7) first_name VARCHAR (25) last_name VARCHAR(25) dept_id INT(7) */

CREATE TABLE emp01(id INT(7), first_name VARCHAR (25) ,last_name VARCHAR(25) ,dept_id INT(7))

#5. 将列last_name的长度增加到50

ALTER TABLE emp01

MODIFY last_name VARCHAR(50)

#6. 根据表employees创建emp02

CREATE TABLE emp02

AS

SELECT *

FROM atguigudb.employees

#7. 删除表emp01

DROP TABLE emp01

#8. 将表emp02重命名为emp01

RENAME TABLE emp02 TO emp01

#ALTER TABLE emp002 RENAME TO emp01

#9.在表dept02和emp01中添加新列test_column,并检查所作的操作

ALTER TABLE dept02

ADD COLUMN test_column VARCHAR(12);

ALTER TABLE emp01

ADD COLUMN test_column VARCHAR(12)

#10.直接删除表emp01中的列 department_id

desc emp01;

ALTER TABLE emp01

DROP COLUMN department_id

练习2

# 1、创建数据库 test02_market

 # 2、创建数据表 customers

# 3、将 c_contact 字段移动到 c_birth 字段后面

# 4、将 c_name 字段数据类型改为 varchar(70)

 # 5、将c_contact字段改名为c_phone

# 6、增加c_gender字段到c_name后面,数据类型为char(1)

 # 7、将表名改为customers_info

 # 8、删除字段c_city

解答

# 1、创建数据库 test02_market

CREATE DATABASE test02__market

USE test02__market

 # 2、创建数据表 customers

CREATE TABLE customers(

c_num int,

 c_name varchar(50),

 c_contact varchar(50),

 c_city varchar(50),

  c_birth date)

 # 3、将 c_contact 字段移动到 c_birth 字段后面

 ALTER TABLE customers

 CHANGE  c_phone c_contact varchar(50)  AFTER c_birth

 DESC customers

 #注意只有AFTER没有BEFORE

ADD SELECT c_contact1 FROM c_contact1BEFORE c_birth

# 4、将 c_name 字段数据类型改为 varchar(70)

 ALTER TABLE customers

MODIFY c_name varchar(70)

 DESC customers

 # 5、将c_contact字段改名为c_phone

 ALTER TABLE customers

CHANGE c_contact c_phone varchar(70)

 DESC customers

 # 6、增加c_gender字段到c_name后面,数据类型为char(1)

  ALTER TABLE customers

ADD c_gender CHAR(1) AFTER c_name

 # 7、将表名改为customers_info

 RENAME TABLE customers TO customers_info

 # 8、删除字段c_city

 ALTER TABLE customers_info

 DROP COLUMN c_city

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

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

相关文章

秒杀系统的设计与压测

环境准备 数据库 完成demo至少需要两个数据表,一个customer表示秒杀的用户,一个sec_product表示被秒杀的商品。 create database sec_kill;use sec_kill; create table customer(id int primary key auto_increment not null,name varchar(20),phone …

SpringBoot健身房管理系统:用户体验至上

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

一:时序数据库-Influx应用

目录 0、版本号 1、登录页面 2、账号基本信息 3、数据库案例 4、可视化 5、java案例 0、版本号 InfluxDB v2.4.0 1、登录页面 http://127.0.0.1:8086/signin 账号:自己账号 密码:自己密码 2、账号基本信息 查看用户id和组织id!&…

SpringBoot day 1105

ok了家人们&#xff0c;今天继续学习spring boot&#xff0c;let‘s go 六.SpringBoot实现SSM整合 6.1 创建工程&#xff0c;导入静态资源 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

深入实践:Langchain-Chatchat大型语言模型本地知识库的部署难题、解决方案及应用指南

检索增强生成(RAG)实践&#xff1a;基于LlamaIndex和Qwen1.5搭建智能问答系统 什么是 RAG LLM 会产生误导性的 “幻觉”&#xff0c;依赖的信息可能过时&#xff0c;处理特定知识时效率不高&#xff0c;缺乏专业领域的深度洞察&#xff0c;同时在推理能力上也有所欠缺。 正是…

鸿蒙5.0时代:原生鸿蒙应用市场引领开发者服务新篇章

前言 10月22日原生鸿蒙之夜发布会宣布HarmonyOS NEXT正式发布&#xff0c;首个版本号&#xff1a;鸿蒙5.0。这次“纯血鸿蒙”脱离了底层安卓架构成为纯国产的独立系统&#xff0c;仅凭这一点就有很多想象空间。 目前鸿蒙生态设备已超10亿&#xff0c;原生鸿蒙操作系统在中国市…

Spark的容错机制

1&#xff0c;Spark如何保障数据的安全 1、RDD容错机制&#xff1a;persist持久化机制 1&#xff09;cache算子 - 功能&#xff1a;将RDD缓存在内存中 - 语法&#xff1a;cache() - 本质&#xff1a;底层调用的还是persist&#xff08;StorageLevel.MEMORY_ONLY&#xff09;&…

Web3对社交媒体的影响:重新定义用户互动方式

随着互联网的发展和人们对隐私、安全、所有权的需求不断提高&#xff0c;Web3 的概念逐渐深入人心。Web3 的出现标志着一个去中心化、用户主导的网络时代的到来&#xff0c;这也将对社交媒体产生深远的影响。Web3 不仅推动社交媒体从中心化模式向用户主导的去中心化模式转变&am…

高通Quick板上安装编译Ros1 noetic,LeGO_LOAM,FAR_Planner和rslidar_sdk

环境要求&#xff1a; 这里quick板上安装的是Ubuntu20.04版本 Ros Noeti安装&#xff1a; 1.设置软件源&#xff1a; 官方提供的软件源&#xff1a; sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.…

解决Knife4j 接口界面UI中文乱码问题

1、查看乱码情况 2、修改 编码设置 3、删除 target 文件 项目重新启动 被坑死了

HTML 标签属性——<a>、<img>、<form>、<input>、<table> 标签属性详解

文章目录 1. `<a>`元素属性hreftargetname2. `<img>`元素属性srcaltwidth 和 height3. `<form>`元素属性actionmethodenctype4. `<input>`元素属性typevaluenamereadonly5. `<table>`元素属性cellpaddingcellspacing小结HTML元素除了可以使用全局…

仿真APP助力汽车零部件厂商打造核心竞争力

汽车零部件是汽车工业的基石&#xff0c;是构成车辆的基础元素。一辆汽车通常由上万件零部件组成&#xff0c;包括发动机系统、传动系统、制动系统、电子控制系统等&#xff0c;它们共同确保了汽车的安全、可靠性及高效运行。 在汽车产业快速发展的今天&#xff0c;汽车零部件…

.NET周刊【11月第1期 2024-11-03】

国内文章 .NET 9 AOT的突破 - 支持老旧Win7与XP环境 https://www.cnblogs.com/lsq6/p/18519287 .NET 9 引入了 AOT 支持&#xff0c;使得应用程序能够在编译时优化&#xff0c;以在老旧 Windows 系统上运行。这项技术通过静态编译&#xff0c;消除运行时的 JIT 编译&#xf…

江协科技STM32学习- P36 SPI通信外设

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

Type-C接口 PD 受电端(sink)快充协议芯片,XSP08Q应用小家电领域的方案

前言 在智能家居浪潮的推动下&#xff0c;小家电作为日常生活中不可或缺的一部分&#xff0c;其供电方式的创新与优化正逐步成为行业关注的焦点。随着快充技术的普及&#xff0c;特别是Power Delivery&#xff08;PD&#xff09;协议的广泛应用&#xff0c;一种新型供电模式—…

Memento 备忘录模式

备忘录模式 意图结构适用性实例Java Web开发中的简单示例Originator 类Memento 类Caretaker 类 文本编辑器示例1. Originator (发起人) - TextEditor2. Memento (备忘录) - TextMemento3. Caretaker (负责人) - History4. 使用示例输出 备忘录模式&#xff08;Memento Pattern&…

网络应用技术 实验二:交换机VLAN 应用(华为ensp)

目录 一、实验简介 二、实验目的 三、实验需求 四、实验拓扑 五、实验任务及要求 1、任务 1&#xff1a;在交换机上创建VLAN 并测试通信 2、任务 2&#xff1a;路由交换机实现VLAN 之间通信 六、实验步骤 1、完成任务 1 2、完成任务 2 一、实验简介 在交换机上配置 VLAN&#x…

大模型应用:新时代的多模态交互

引言 如果把大模型接入到终端设备&#xff0c;会怎么样&#xff1f; &#xff08;1&#xff09;智能交互回顾 历史文章《[智能交互复兴&#xff1a;ChatGPT 终端&#xff08;奔驰/Siri&#xff09; &#xff1f;]》中提到&#xff1a;大模型遍布多个应用场景 其中有智能对话…

一周内从0到1开发一款 AR眼镜 相机应用?

目录 1. &#x1f4c2; 前言 2. &#x1f4a0; 任务拆分 2.1 产品需求拆分 2.2 开发工作拆分 3. &#x1f531; 开发实现 3.1 代码目录截图 3.2 app 模块 3.3 middleware 模块 3.4 portal 模块 4. ⚛️ 拍照与录像 4.1 前滑后滑统一处理 4.2 初始化 View 以及 Came…

信息安全工程师(76)网络安全应急响应技术原理与应用

前言 网络安全应急响应&#xff08;Network Security Incident Response&#xff09;是针对潜在或已发生的网络安全事件而采取的网络安全措施&#xff0c;旨在降低网络安全事件所造成的损失并迅速恢复受影响的系统和服务。 一、网络安全应急响应概述 定义&#xff1a;网络安全应…