[mysql]修改表和课后练习

目录

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.rhkb.cn/news/464981.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+ClickHouse集成

前面已经完成ClickHouse的搭建&#xff0c;创建账号&#xff0c;创建数据库&#xff0c;保存数据库等&#xff0c;接下来就是在SpringBoot项目中集成ClickHouse。 一&#xff0c;引入依赖 <!-- SpringBoot集成ClickHouse --> <dependency><groupId>com.baom…

搜维尔科技:【煤矿虚拟仿真】煤矿企业、高校、科研单位-多语言支持、数字孪生、交互式学习体验

品牌&#xff1a;SouVR 发票&#xff1a;支持专票、普票 单位&#xff1a;套 版本号&#xff1a;1.0 包装清单&#xff1a;软件1套 软件形式&#xff1a;U盘、光盘 运行环境&#xff1a;windows 应用对象&#xff1a;煤矿企业、高校、科研单位 系统配置&#xff1a;…

(五)Spark大数据开发实战:灵活运用PySpark常用DataFrame API

目录 一、PySpark 二、数据介绍 三、PySpark大数据开发实战 1、数据文件上传HDFS 2、导入模块及数据 3、数据统计与分析 ①、计算演员参演电影数 ②、依次罗列电影番位前十的演员 ③、按照番位计算演员参演电影数 ④、求每位演员所有参演电影中的最早、最晚上映时间及…

单链表的实现(数据结构)

一. 单链表的实现 我们在上一篇中简单的认识了链表的组成和结构&#xff0c;并打印出链表&#xff0c;那么今天就来具体实现一下单链表对于数据增加、删减、插入等。 接下来就是我们在链表中对于数据的增、删、插的实现&#xff0c;对于我们的链表来说在任何地方增加数据都需…

Golang | Leetcode Golang题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; func singleNonDuplicate(nums []int) int {low, high : 0, len(nums)-1for low < high {mid : low (high-low)/2mid - mid & 1if nums[mid] nums[mid1] {low mid 2} else {high mid}}return nums[low] }

算法: 链表题目练习

文章目录 链表题目练习两数相加两两交换链表中的节点重排链表合并 K 个升序链表K 个一组翻转链表 总结 链表题目练习 两数相加 坑: 两个链表都遍历完后,可能需要进位. class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode cur1 l1;ListNode…

深入Pillow:处理图像下载中的意外挑战

在当今数字化时代&#xff0c;获取和处理图像数据已经成为了许多应用程序的核心功能。从社交媒体到电子商务&#xff0c;图像的获取和处理对于用户体验至关重要。下载图片不仅能够丰富我们的内容&#xff0c;还能够通过分析图像数据为我们的应用提供更多价值。然而&#xff0c;…

零基础Java第十三期:继承与多态(一)

目录 一、继承 1.1. 继承的目的 1.2. 继承的概念 1.3. 继承的语法 1.4. 父类的访问 1.5. 继承中的重载与重写 1.6. 子类的构造方法 1.7. 再谈初始化 一、继承 1.1. 继承的目的 我们来定义一个Dog和Cat的类&#xff1a; public class Dog {public int age;public Strin…

【ONLYOFFICE文档】8.2版本测评

文章目录 引言ONLYOFFICE 产品简介PDF编辑器新功能1.协作编辑 PDF&#xff0c;让团队合作更高效2.为 PDF 表单添加签名3.改进的简洁界面4.性能优化&#xff1a;更快、更高效的体验 文档编辑器中的新功能域代码功能&#xff1a;自动更新文档中的动态数据协作功能&#xff1a;轻松…

【JAVA】java 企业微信信息推送

前言 JAVA中 将信息 推送到企业微信 // 企微消息推送messageprivate String getMessage(String name, String problemType, String pushResults, Long orderId,java.util.Date submitTime, java.util.Date payTime) {String message "对接方&#xff1a;<font color\…

【RK3588 Linux 5.x 内核编程】-GPIO设备驱动与点亮LED

GPIO设备驱动与点亮LED 文章目录 GPIO设备驱动与点亮LED1、Linux中的GPIO介绍2、GPIO库和工具3、Linux内核GPIO操作步骤3.1 验证GPIO3.2 请求GPIO3.3 导出GPIO到sysfs(可选)3.4 设置GPIO为输入/输出3.5 更改GPIO的电平(值)3.6 读取GPIO的值(电平)3.7 释放GPIO4、GPIO驱动…

金华迪加 现场大屏互动系统 mobile.do.php 任意文件上传漏洞复现

0x01 产品简介 金华迪加现场大屏互动系统是一种集成了先进技术和创意设计的互动展示解决方案,旨在通过大屏幕和多种交互方式,为观众提供沉浸式的互动体验。该系统广泛应用于各类活动、展览、会议等场合,能够显著提升现场氛围和参与者的体验感。 0x02 漏洞概述 金华迪加 现…

[VUE]框架网页开发1 本地开发环境安装

前言 其实你不要看我的文章比较长&#xff0c;但是他就是很长&#xff01;步骤其实很简单&#xff0c;主要是为新手加了很多解释&#xff01; 步骤一&#xff1a;下载并安装 Node.js 访问 Node.js 官网&#xff1a; Node.js — Download Node.js 下载 Windows 64 位版本&…

[signal] void QComboBox::currentTextChanged(const QString text)

[signal] void QComboBox::currentTextChanged(const QString &text) This signal is sent whenever currentText changes. The new value is passed as text. This function was introduced in Qt 5.0. Note: Notifier signal for property currentText. 属性currentText的…

Unity中实现伤害飘字或者提示飘字效果(DoTween实现版本)

&#xff01;&#xff01;&#xff01;在实现以下效果之前&#xff0c;一定要往项目中导入DoTween插件。 一、搭建测试场景 1、在场景中新建一个带有Text组件的游戏物体A&#xff0c;并把这个游戏物体A中Text组件的Color属性中alpha值为0&#xff0c;让文字在场景中隐藏。 …

掌握PyQt5图形界面化工具及绑定爬虫程序

PyQT5——图形化界面 文章目录 PyQT5——图形化界面集成化图形界面工具为什么使用 \$ProjectFileDir$?示例场景其他 Varaiablespyuic参数解释整体含义示例使用PyQt5和pyuic 创建pyqt5的程序创建一个窗口app.exec\_()和sys.exit(app.exec_())的区别1. app.exec_()2. sys.exit(a…

从零开始在本地服务器上安装OnlyOffice并进行跨地域协同编辑文件

文章目录 前言1. 安装Docker2. 本地安装部署ONLYOFFICE3. 安装cpolar内网穿透4. 固定OnlyOffice公网地址 前言 本篇文章讲解如何使用Docker在本地Linux服务器上安装ONLYOFFICE&#xff0c;并结合cpolar内网穿透实现公网访问本地部署的文档编辑器与远程协作。 Community Editi…

20241102在荣品PRO-RK3566开发板的预置Android13下适配宸芯的数传模块CX6603N

20241102在荣品PRO-RK3566开发板的预置Android13下适配宸芯的数传模块CX6603N 2024/11/2 18:04 在WIN10使用程序&#xff1a;ViewLink-4.0.7_0708-windows-x64.exe 在荣品PRO-RK3566开发板的预置Android13下使用&#xff1a;ViewLink-2023_12_21-release-0.2.6.apk adb install…

智能AI合同审查系统如何优化合同风险管理的案例解读

在合同管理和合规性要求日趋严格的法律行业&#xff0c;智能合同审查系统能够大幅提升合同数据管理的效率和准确性。法律行业中&#xff0c;合同涉及金额、产品参数和条款细节较多&#xff0c;同时对合规性有极高的要求。特别是在高度受监管的行业&#xff08;如金融、医疗、制…

C++《list的模拟实现》

在上一篇C《list》专题当中我们了解了STL当中list类当中的各个成员函数该如何使用&#xff0c;接下来在本篇当中我们将试着模拟实现list&#xff0c;在本篇当中我们将通过模拟实现list过程中深入理解list迭代器和之前学习的vector和string迭代器的不同&#xff0c;接下来就开始…