• Mysql: 创建表 和 管理表


    Mysql: 创建表 和 管理表

    在这里插入图片描述

    每博一文案

    人生之事,不如意十之八九。
    我们生活的每一天,或多或少的都会遇到一些烦心的事,我们有跌倒
    的瞬间,我们有委屈的时候,但这些经历都丰富了,我们的人生,
    生活中的苦,让我们品尝了苦涩的滋味。更让我们懂得珍惜人生的甜蜜。
    漫漫人生路,不管是好与坏,苦与甜都是人生的调味剂。
    凡是打不到我们的终将让我们变得强大,生活的艰难终将成为
    余生的经验。人生百般不如意,睡得着就过得去。岛上书店中说。
    每个人的生命中都有最艰难的一年,等你迈过去了,人生就会变得高远
    辽阔。
    当我们熬过黑夜,便不惧黑夜,当我们穿过磨难,便能驾驭磨难。
    人间的事,只要生机不灭,即使重遭天灾人祸,攒满足以,终有抬头
    的日子。 
                                ——————   一禅心灵庙语
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13


    创建表

    创建好数据库后,我们就可以为数据库创建数据表了。

    关于如何创建数据库,大家可以移步到 🔜🔜🔜 Mysql :创建数据库和管理数据库

    这里我们只是单纯的介绍如何创建表,关于表中的 数据类型 以及约束条件不作介绍

    关于表的创建我们有两种方式:

    第一种方式 :

    我们称之为 白手起家,使用 CREATE TABLE 命令操作。在( ) 内使用空格分开列名和数据类型,以及约束条件,各个列之间使用 “,"(逗号) 分隔。注意: 的是最后一个列(字段),不要加逗号分隔开,不然会报错的

    CREATE TABLE 语句的语法格式如下

    CREATE TABLE IF NOT EXISTS 表名
    (
    列名1 数据类型  该列所需的约束条件,
    列名2 数据类型  该列所需的约束条件,
    列名3 数据类型  该列所需的约束条件
    );
    
    /* 注意的一点就是,最后一个列(字段),不要加逗号分隔开,不然会报错 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    该方式创建表有以下特点:

    1. 如果创建的表没有指定对应的字符集,默认使用的是所在数据库的字符集
    2. 如果创建的表,不存在,则创建该表,如果创建的表,已经存在了,则不会创建表,不会报错,而是默默的给予警告。

    还可以通过 CRARACTER SET 指明创建的表的字符集

    格式如下:

    CREATE TABLE IF NOT EXISTS 表名
    (
    	列名1 数据类型
    	列名2 数据类型
    	列名3 数据类型
    	
    )CHARACTER SET '设定的字符集';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    如创建表myemp9 字符集为gbk

    CREATE TABLE IF NOT EXISTS myemp9 
    (
    	id INT,
    	`name` VARCHAR(25),
    	salary INT
    ) CHARACTER SET 'gbk';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查看结果:

    SHOW CREATE TABLE myemp9;  /* 查看创建的数据库的字符集 */
    
    • 1

    在这里插入图片描述


    当然你可以把 IF NOT EXTSTS 去了创建表

    格式如下:

    CREATE TABLE  表名
    (
    列名1 数据类型  该列所需的约束条件,    /* 当列名于关键字冲突时,需要使用着重号 */
    列名2 数据类型  该列所需的约束条件,
    列名3 数据类型  该列所需的约束条件
    );
    /* 注意的一点就是,最后一个列(字段),不要加逗号分隔开,不然会报错 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    该方式创建的表,如果表已经存在了,你再创建表的话,会报错。


    如在数据库 test01中创建一个名为 myemp1的表,省略约束条件

    首先切换到该数据库中去

    USE test01;
    
    • 1

    创建表:

    CREATE TABLE IF NOT EXISTS myemp1 (
    id INT,
    emp_name VARCHAR(15),
    hire_date DATE           /* 最后一个不要加逗号,分隔,不然报错 */
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    当我们创建的表中字段名与 关键字 冲突时,要使用 着重号用于区分,

    着重号: 在键盘的左上角,波浪号,数字 1 的左边

    如下: 创建表 myemp4 ,字段命为 name ,使用着重号区分

    CREATE TABLE IF NOT EXISTS myemp4
    (
     `name` VARCHAR(15),     /* name 与 关键字冲突,使用着重号区分 */
     id INT                  /* 最后一个不要加逗号分隔,不然报错 */
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建表以后,我们可以使用 show 来显示数据库下的所有的表

    显示当前数据库下的所有的表

    格式如下:, 注意是 tables 多了一个 s

    SHOW TABLES;
    
    • 1

    在这里插入图片描述


    显示指定数据库下的所有的表

    格式如下:

    SHOW TABLES
    FROM +指定的数据库名
    
    • 1
    • 2

    如: 显示 test01数据库下的所有的表

    SHOW TABLES
    FROM test01;
    
    • 1
    • 2

    在这里插入图片描述


    使用 DESC 显示表的结构

    格式如下:

    DESC 表名;
    
    • 1

    如: 显示 myemp1的表结构

    DESC myemp1;  
    /* desc 查看表结构,也是降序 */
    
    • 1
    • 2

    在这里插入图片描述


    显示表的字符集属性

    使用 show 查看表的字符集属性

    格式:

    SHOW CREATE TABLE 你要查看的表名;
    
    • 1

    如: 查看 myemp1 表的字符集属性

    SHOW CREATE TABLE myemp1;
    
    • 1

    在这里插入图片描述


    第二种方式

    我们称为 ”查询结果创建表“ ,就是配合查询同时会把查询到的结果导入创建的表中

    格式:

    CREATE TABLE 表名
    AS 
    查询
    SELECT 
    FROM ;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意: 当查询中的表不在所在的数据库中时,需要定位到对应的数据库中去数据库 .表名

    如: 创建一个表 myemp02 基于employees 表中的数据

    CREATE TABLE myemp2
    AS
    SELECT employee_id, last_name, salary
    FROM atguigudb.`employees`; /* 注意employees 表是在 atguigudb 表中的,需要数据库.表名的索引 */
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述


    当该表已经存在时,再创建表时,会报错,如下:

    在这里插入图片描述


    查看表,是否创建成功

    SHOW TABLES
    FROM test01;
    
    • 1
    • 2

    在这里插入图片描述


    查看表中的数据

    SELECT *
    FROM myemp2;
    
    • 1
    • 2

    在这里插入图片描述

    从结果上看和 employees 表中的数据一模一样

    查看表的结构

    DESC myemp2;
    
    • 1

    在这里插入图片描述


    注意: 当在查询上使用了字段的别名,其创建的表中的字段会以别名为 准创建表字段,如下:

    创建表 myemp3 把 表employees 中的表别名使用上,以别名创建表字段

    CREATE TABLE myemp3
    AS                      /* 这里 name 于关键字冲突了,需要使用着重号 区分*/
    SELECT employee_id id , last_name `name`, salary
    FROM atguigudb.`employees`;        /* employees 表是在 atguigudb 数据库中的需要 数据库.表名索引 */
    
    • 1
    • 2
    • 3
    • 4

    创建好后,查看表结构

    DESC myemp3;
    
    • 1

    在这里插入图片描述

    就是以表别名为准创建表字段的。


    那,如何创建一个表的结构,我们不想要把表的数据导入到新创建的表中,只要该表的结构如何做呢,

    这就简单,我们只要在查询语句 SELECT 中增加一个永远为 假(false) 的筛选条件,就可以了,需要 注意 的是 一定要为假 比如: 2 < 1 ,0 = 6 这样,这么做的原因就是让查询是结果为空,就不会导入数据。这让我想起了,一句话: 山无棱,天地合,乃敢与君绝。
    需要注意的一点就是,该方式复制创建的表,并不会把原表中的存有的全部约束给复制过来了,可能只是复制了原表约束的一部分 比如:其中 not null 非空约束可能复制过来了,但是其中的 PRIMARY KEY 主键约束,可能就没有被复制过来了。

    如下:

    CREATE TABLE myemp6
    AS
    SELECT employee_id, last_name, salary
    FROM atguigudb.`employees` /* employees 在 atguigudb 数据库中不在当前数据库中,需要数据库.表名索引*/
    WHERE 2 < 1;    /* 筛选条件,永远为 假 false,查询不到数据 */
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建表后,查看数据是否有导入

    SELECT *
    FROM myemp6;
    
    • 1
    • 2

    在这里插入图片描述

    从查询结果上看并没有导入数据


    修改表

    修改表指的是修改数据库中已经存在的数据表的结构。

    使用 ALTER TABLE 语句可以实现:

    • 向已有的表中添加列
    • 修改现有的表中的列
    • 删除现有表中的列
    • 重命名现有表中的列

    增加一个列

    格式如下:

    ALTER TABLE 你要增加的字段的表名
    ADD 字段 数据类型 
    
    • 1
    • 2

    注意: 不要把数据类型给完了。

    默认添加到已有字段的最后面

    如下: 为 myemp 表中添加字段 salary 数据类型为 int

    首先查看 myemp的表结构,好用于添加后的对比

    DESC myemp1;
    
    • 1

    在这里插入图片描述


    添加:

    ALTER TABLE myemp1
    ADD salary INT;
    
    • 1
    • 2

    添加完后,查看 myemp1 的表结构

    DESC myemp1; 
    
    • 1

    在这里插入图片描述

    添加成功,默认添加到已有字段的最后面


    将字段添加到最开头

    使用关键字 FIRST

    格式如下:

    ALTER TABLE 你要修改的表名
    ADD 你要添加的字段 数据类型 FIRST;
    
    • 1
    • 2

    如: 将字段 num 添加到表 myemp1 的字段最开头处

    ALTER TABLE myemp1
    ADD num INT FIRST;
    
    • 1
    • 2
    DESC myemp1;
    
    • 1

    在这里插入图片描述

    从结果上看,我们添加成功了


    将字段添加到指定的位置字段的后面

    使用 关键字 AFTER ,可以将添加的字段,添加到指定字段的后面

    格式如下:

    ALTER TABLE 你要修改的表名
    ADD 添加的字段 数据类型 AFTER 对应字段名的后面;
    
    • 1
    • 2

    如: 将email 字段添加到 myemp1 表中 字段 id 的后面

    ALTER TABLE myemp1
    ADD emial VARCHAR(25) AFTER id;
    /* 注意不要把数据类型给忘记了 */
    
    • 1
    • 2
    • 3
    DESC myemp1;
    
    • 1

    在这里插入图片描述

    从结果上看,添加到指定位置处成功


    修改一个列

    对于修改一个列中是数据类型呢,这个风险很大,因为如果你在已有的表中修改字段的数据类型,可能会导致数据的丢失,如把一个 varchar 修改成了 int ,就会报错,而如果把一个 double 类型的字段修改为了 int 就会把 小数就会丢失了。所以对于表中的类型的修改需要慎重再慎重。

    MODIFY 修改表中的数据类型

    格式:

    ALTER TABLE 修改的表名
    MODIFY 修改的字段 修改的数据类型;
    
    • 1
    • 2

    如: 将表myemp1 中的字段 id 的数据类型修改为 varchar(20)

    首先查看表中的结构,用于比较修改后的数据类型

    DESC myemp1;
    
    • 1

    在这里插入图片描述


    修改

    ALTER TABLE myemp1
    MODIFY id VARCHAR(25);
    
    • 1
    • 2
    DESC myemp1;
    
    • 1

    在这里插入图片描述

    从结果上看修改成功了


    MODIFY 配合 AFTER 可以修改字段的位置

    格式:

    ALTER TABLE 修改的表名
    MODIFY 移动的字段 数据类型  AFTER 移动某个字段的后面;
    
    • 1
    • 2

    如: 将myemp1表中的 id 移动到 hire_date 的后面

    ALTER TABLE myemp1
    MODIFY id VARCHAR(25) AFTER hire_date;
    
    • 1
    • 2

    在这里插入图片描述


    MODIFY 配合 FIRST 可以将指定的字段移动到最开头位置

    格式:

    ALTER TABLE 修改的表名
    MODIFY 需要移动的字段名 数据类型  FIRST;
    
    • 1
    • 2

    如: 将myemp1表中的 id 移动到 最开头

    ALTER TABLE myemp1
    MODIFY id VARCHAR(25) FIRST;
    
    • 1
    • 2
    DESC myemp1;
    
    • 1

    在这里插入图片描述


    MODIFY 配合 DEFAULT 可以修改字段的初始值

    格式: 注意: 如果赋予修改的初值是字符或时间日期需要使用 单引号括起来,单纯是数值的话,不用

    ALTER TABLE 修改的表名
    MODIFY 修改的字段 数据类型 DEFAULT '设定的初始值' 
    /* 注意如果设定的是字符以及时间日期需要使用单引号 括起来,
        单纯是数值的话,不用*/
    
    • 1
    • 2
    • 3
    • 4

    如: 将表myemp1 中的字段 id 修改赋予初值 为 ‘A’

    ALTER TABLE myemp1
    MODIFY id VARCHAR(25) DEFAULT 'A';
    
    • 1
    • 2
    DESC myemp1;
    
    • 1

    在这里插入图片描述


    重命名一个列

    使用 CHANGE 重命名一个列的字段名

    格式:

    ALTER TABLE 修改的表名
    CHANGE 需要重命名的字段名 重命名后的字段名 数据类型;
    
    • 1
    • 2

    如:将表myemp1 中的字段列 id名 修改为 myemp_id

    ALTER TABLE myemp1
    CHANGE id myemp_id VARCHAR(25);
    
    • 1
    • 2
    DESC myemp1;
    
    • 1

    在这里插入图片描述


    删除一个列

    使用 DROP COLUMN 删除表中指定的字段(列)

    格式:

    ALTER TABLE 修改的表名
    DROP COLUMN 需要删除的字段名;
    
    • 1
    • 2

    如: 删除表myemp1 中的 字段(列)num

    ALTER TABLE myemp1
    DROP COLUMN num;
    
    • 1
    • 2
    DESC myemp1;
    
    • 1

    在这里插入图片描述



    修改表的字符集

    和修改数据库的字符集的格式一样,使用 CHARACTER SET 修改表中的字符集

    格式如下:

    ALTER TABLE 修改的表名
    CHARACTER SET '你想要设定的字符集';
    
    • 1
    • 2

    如:把表 myemp9 的字符集改为 utf8mb4

    ALTER TABLE myemp9 
    CHARACTER SET 'utf8mb4';
    
    • 1
    • 2

    查看结果

    SHOW CREATE TABLE myemp9;  /* 查看创建的表的字符集 */
    
    • 1

    在这里插入图片描述


    重命名表

    重命名表存在两种方式:

    第一种方式 :

    直接使用 RENAME TABLE TO 修改表名

    格式:

    RENAME TABLE 需要重命名的表名
    TO 重命名后的表名;
    
    • 1
    • 2

    如: 将表名myemp1 重命名为 myemp01

    RENAME TABLE myemp1
    TO myemp01;
    
    • 1
    • 2
    SHOW TABLES
    FROM test01;  /* 查看指定的数据库中所有的表 */
    
    • 1
    • 2

    在这里插入图片描述


    第二种方式:

    个人建议使用这种方式,和上面的修改表统一操作,方便记忆。

    格式:

    ALTER TABLE 需要重名的表名
    RENAME TO 重命名后的表名;
    
    • 1
    • 2

    如: 将表名 myemp01 重命名为 myemp1

    ALTER TABLE myemp01
    RENAME TO myemp1;
    
    • 1
    • 2
    SHOW TABLES
    FROM test01;  /* 查看指定数据库中所有的表*/
    
    • 1
    • 2

    在这里插入图片描述


    删除表

    在 Mysql中,当一张数据表没有与其他任何数据表形成关联关系时,可以将当前数据表直接删除。数据和结构都被删除,所有正在运行的相关事务被提交,所有相关索引被删除。

    删除表,有两种方式:

    第一种方式:

    直接使用 DROP TABLE 删除表

    该删除表的一些特点:当你要删除的表,存在时,删除该表,当你要删除的表,不存在时,不会删除表,并报错

    如下:

    在这里插入图片描述

    格式如下:

    DROP TABLE 你要删除的表名;
    
    • 1

    如: 将test01 数据库下的表myemp4 删除了

    DROP TABLE myemp4;
    
    • 1
    SHOW TABLES
    FROM test01;  /* 查看指定数据库 test01 下的所有表*/
    
    • 1
    • 2

    在这里插入图片描述


    第二种方式

    在第一种方式的基础上,增加了判断的机制 IF EXISTS

    该删除表方式的特点:当表存在时,删除表,当表不存在时,不会删除表,并不会报错,会默默的给予警告,如下:

    在这里插入图片描述


    格式如下:

    DROP TABLE IF EXISTS 你要删除的表名;
    
    • 1

    如: 将数据库test01 中的表 myemp5 删除了

    DROP TABLE IF EXISTS myemp5;
    
    • 1
    SHOW TABLES
    FROM test01; /* 查看指定数据库 test01 的下的所有表*/
    
    • 1
    • 2

    在这里插入图片描述


    清空表

    清空表: 表示清空表中的所有数据,保留表结构,释放表的空间

    使用 TRUNCATE TABLE 关键字,清空表

    格式:

    TRUNCATE TABLE 你要清空的表名;
    
    • 1

    如: 将表 myemp2 中的数据清空

    先查看 myemp2 的数据,用于为后面删除后做比较

    SELECT *
    FROM myemp2;
    
    • 1
    • 2

    在这里插入图片描述


    清空myemp2 表中的数据

    TRUNCATE TABLE myemp2;
    
    • 1
    SELECT *
    FROM myemp2;
    
    • 1
    • 2

    在这里插入图片描述


    总结:

    对于上述中的对表的修改,删除表操作将把表的定义和表中的数据一起删除,并且Mysql 在执行删除操作时,不会有任何的确定信息提示,因此执行删除操作应当慎重。在删除表前,最好对表中的数据进行备份,这样当操作失误时可以对数据进行恢复,以免造成无法挽回的后果。

    同样的,在使用 ALTER TABLE 进行表的基本修改操作时,在执行操作过程之前,也应该确保对数据进行完整的备份,因为数据库的改变是无法撤销的,如果添加了一个不需要的字段,可以将其删除;相同的,如果删除了一个需要的列,该列下面的所有数据都将会丢失。所以,请慎重,再慎重。

    最后:

    限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见 !!!

    在这里插入图片描述

  • 相关阅读:
    ​HM4067原厂5A铅酸电池充电管理集成电路IC
    DRF视图类、认证组件、权限、限流、过滤、排序、分页、异常处理、自动生成接口文档、Xadmin
    C++20:换了“心“的auto关键字
    【选型】JAVA生成PPT及选型
    Elasticsearch安装访问
    Nginx-动静分离与 URLRwrite
    【Java SE】抽象类和接口
    【鼠标右键菜单添加用VSCode打开文件或文件夹】
    什么是DCS系统?DCS和SCADA的区别
    税收学专业论文应该怎样选择题目能更好的完成毕业论文?
  • 原文地址:https://blog.csdn.net/weixin_61635597/article/details/126485704