[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

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

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

相关文章

MinerU容器构建教程

一、介绍 MinerU作为一款智能数据提取工具,其核心功能之一是处理PDF文档和网页内容,将其中的文本、图像、表格、公式等信息提取出来,并转换为易于阅读和编辑的格式(如Markdown)。在这个过程中,MinerU需要利…

使用 OpenCV 实现图像的透视变换

概述 在计算机视觉领域,经常需要对图像进行各种几何变换,如旋转、缩放和平移等。其中,透视变换(Perspective Transformation)是一种非常重要的变换方式,它能够模拟三维空间中的视角变化,例如从…

三十二、Python基础语法(面向对象其他语法-上)

一、权限 权限:在 Python 中,可以对方法和属性设置访问权限,,即规定在什么地方可以使用这些属性和方法。 1.公有 公有:可以在任意的地方通过对象调用,按照之前的方式,直接定义的属性和方法都是公有的。 …

Jmeter命令监控CPU等指标

JMeter 命令行执行脚本得到的报告中,是没有CPU、内存使用率等监控数据的,但是可以使用JMeter插件帮忙。 一、下载jmeter-plugins-manager.jar 下载后将文件放到jmeter安装包lib/ext目录下。打开Jmeter》菜单栏》选项》Plugins Manager 二、安装PerfMon…

【IF-MMIN】利用模态不变性特征进行缺失模态的鲁棒多模态情感识别

代码地址:github地址传送 文章是基于MMIN的改进 -> MMIN传送 abstract 多模态情感识别利用跨模态的互补信息来获得性能。然而,我们不能保证所有模式的数据总是存在于实践中。在跨模态数据缺失预测研究中,异质性模态之间的固有差异即模态…

vueui vxe-form 分享实现表单项的联动禁用,配置式表单方式的用法

官网文档:https:/vxeui.com 实现表单项的联动禁用 在使用 vxe-form 时,有时候需要将表单项直接进行关联操作,比如某一项选择后,另外一项设置为禁用状态不可选择,使用插槽的话神容易实现,本章是分享配置式的…

架构师备考-系统分析与设计(面向对象方法)

定义 面向对象开发方法将面向对象的思想应用于软件开发过程中,指导开发活动,是建立在“对象”概念基础上的方法学。面向对象方法的本质是主张参照人们认知一个显示系统的方法,完成分析、设计与实现一个软件系统,提倡用人类…

【Melty是一款开源的AI编程助手,基于codellama,媲美cusor】

https://github.com/meltylabs/melty.git 对话进行代码重构

java项目之校园周边美食探索及分享平台(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园周边美食探索及分享平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 校园周边美食…

在Vue和OpenLayers中使用移动传感器实现飞机航线飞行模拟

项目实现的核心代码 项目概述 该项目的目标是使用Vue.js作为前端框架,结合OpenLayers用于地图显示,实时获取来自手机传感器的数据(如经纬度、高度、速度)来模拟飞机在地图上的飞行轨迹。整体架构如下: Vue.js 用于构建…

【系统配置】信创终端操作系统如何彻底禁用ssh _ 统信 _ 麒麟 _ 方德

原文链接:【系统配置】信创终端操作系统如何彻底禁用ssh | 统信 | 麒麟 | 方德 Hello,大家好啊!今天带来一篇关于如何在信创终端操作系统中彻底禁用SSH的文章。在某些安全性要求较高的环境中,禁用SSH服务可以防止未经授权的远程访…

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大

新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大 时间:2023年 机构:北京邮电大学 发表在:IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 25, 2023 代码源码地址: pytorch版本:https://github.com/dyh…

如何编写PHP代码以减少冗余?

在编程中,代码的冗余是一个常见的问题,不仅增加了代码的复杂性,还降低了可读性和可维护性。对于PHP这样的语言来说,减少代码冗余同样重要,尤其是当项目规模变得越来越大时。本文将探讨如何有效地减少PHP代码的冗余&…

苍穹外卖Bug集合

初始化后端项目运行出现以下问题 以上报错是因为maven和jdk版本不符合,需要将jdk改成17,mavne改成3.9.9

NC313 两个数组的交集

NC313 两个数组的交集 添加链接描述 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * param nums1 int整型ArrayList * param nums2 int整型ArrayList * return int整型A…

【Unity】【游戏开发】Sprite背景闪烁怎么解决

【现象】 VR游戏中,给作为屏幕的3D板子加上Canvas后再加背景image,运行时总是发现image闪烁不定。 【分析】 两个带颜色的object在空间上完全重合时也遇到过这样的问题,所以推测是Canvas的image背景图与木板的面重合导致。 【解决方法】 …

【优选算法 — 双指针】双指针小专题

和为 s 的两个数 和为s的两个数 题目描述 解法一:暴力枚举 暴力枚举,先固定一个数,然后让这个数和另一个数匹配相加, 如果当前的数 所有剩余的数 target,则返回这两个数,否则固定下一个数&#…

鸿蒙原生应用开发及部署:首选华为云,开启HarmonyOS NEXT App新纪元

目录 前言 HarmonyOS NEXT:下一代操作系统的愿景 1、核心特性和优势 2、如何推动应用生态的发展 3、对开发者和用户的影响 华为云服务在鸿蒙原生应用开发中的作用 1、华为云ECS C系列实例 (1)全维度性能升级 (2&#xff…

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

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

VMWARE ESXI VMFS阵列故障 服务器数据恢复

1:河南用户一台DELL R740 3块2.4T硬盘组的RAID5,早期坏了一个盘没有及时更换,这次又坏了一个,导致整组RAID5处于数据丢失的状态, 2:该服务器装的是VMware ESXI 6.7,用户把3块硬盘寄过来进行数据…