【MySQL进阶之路 | 基础篇】表的创建与操作表

1. 创建表

创建表有两种方式 : 一种是白手起家自己添,一种是富二代直接继承.

2. 创建方式1

(1). 必须具备条件

  • CREATE TABLE权限
  • 存储空间

(2). 语法格式

CREATE TABLE IF NOT EXISTS 表名(
        字段1, 数据类型 [约束条件] [默认值],
        字段2, 数据类型 [约束条件] [默认值],
        字段3, 数据类型 [约束条件] [默认值],
        字段4, 数据类型 [约束条件] [默认值],
);

加上了IF NOT EXISTS关键字,如果当前数据库中不存在要创建的表,则创建该数据表.如果当前数据库已经存在要创建的数据表,则忽略该建表语句,不再创建数据表.

(3). 必须指定

  • 表名
  • 列名(字段名),数据类型,长度(如字符串类型的长度)

(4). 可选指定

  • 约束条件
  • 默认值

(5). 例

CREATE TABLE IF NOT EXISTS mytable(
			mytable_id INT(10),
			mytable_name VARCHAR(20),
			mytable_salary DOUBLE(8, 2)
);
SHOW TABLES;

22c52447625741e3b994a120139e01cc.png

  • MySQL在执行表语句时,将id字段设置为INT(11). 11指int类型指定的显示宽度.默认的显示宽度为11.
  • salary字段设置为DOUBLE(8,2),指一共占8个字符宽度,小数点后占2位.
  • name字段设置为VARCHAR(20),字符串类型,且字符串最长长度为20.

3. 创建方式2

使用AS subquery选项,将创建表和插入数据结合起来.

例 : 

d58b5a51d1fe4fb884ee8f62552a10c0.png

  • 指定的列和子查询中的列一一对应.
  • 通过列名和默认值定义列.

4. 查看数据表的结构

在MySQL中创建好数据表后,可以查看数据表的结构.MySQL支持DESC/DESCRIBE来查看数据表的结构.也支持使用SHOW CREATE TABLE语句来查看数据表的结构.

使用SHOW CREATE TABLE不仅可以查看表创建时的详细数据,还可以查看存储引擎和字符编码.

dde1866b13c942029b7c61224b5bc9c1.png

可以知道,表mytable3使用的字符编码集是utf8mb3.即该表所在的数据库使用的默认字符编码集为utf8mb3.

5. 修改表

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

使用ALTER TABLE语句可实现

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

(1). 追加一个列.

38fa96c0432f4a3dbcf74f24bb848426.png

可选关键字FIRST,使添加的字段在第一个字段位置.

61465ad0eb8d4c568605ebe4a12f9a90.png

可选字段AFTER,使添加的字段在某某字段之后.

默认情况下是添加到表的字段的最后一个位置.

(2). 修改一个列

  • 可以修改列的数据类型,长度,默认值和位置.
  • 对默认值的修改只影响今后对表的修改.
  • 此外,还可以通过此种方式修改表的约束.

格式 : 

ALTER TABLE 表名 MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名2】;

例 : 

ea809d96e5324542b495c8ecf96c606e.png

(3). 重命名一个列

格式 : 

ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;

例 : 

7c8cf2b958434c19b11b9f084fba956d.png

注 : 

  • 修改表的字段名时,必须指明要替换字段的类型.如该例的VARCHAR(20).否则会报错.

(4). 删除一个列

格式 : 

ALTER TABLE 表名 DROP 【COLUMN】字段名

例 : 

a568d38f770c47cba1111c62d8841215.png

6. 重命名表

(1). 方式1 : 使用RENAME

例 : 

b8368bc138f147b59bcf25548c1c0d7e.png

(2). 方式2 : ALTER

30eceb5d2d3743668d4294bc9e88abc9.png

7. 删除表

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

例 : 

60a86dbaaa244464957e744137ec0a11.png

注 : 

  • DROP TABLE语句执行完就不能回滚.即这个表真正意义上被删除了.

8. 清空表

(1). TRUNCATE TABLE语句

  • 删除表中所有数据.但并不删除表的结构.
  • 释放表的存储空间.
  • 执行后不能回滚.
TRUNCATE TABLE mytable1;

(2). DELECT FROM语句

  • 删除表中所有数据.但并不删除表的结构.
  • 执行后可以回滚.
DELETE FROM mytable1;

注 : 

  • TRUNCATE TABLE比DELETE FROM速度快,且使用的系统和事务少,但TRUNCATE无事务且不触发TRIGGER,有可能造成事故.故不建议使用TRUNCATE TABLE语句.
  • TRUNCATE TABLE语句在功能上与不带WHERE子句的DELECT语句相同.

  • 19
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值