10章MySQL:表的创建、删除、修改

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 10章MySQL:表的创建、删除、修改

1、创建表

方式一:

语法格式:

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


加上了IF NOT EXISTS关键字,则表示:如果当前数据库中不存在要创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。[ ]内的都是可选的,根据实际情况;其它的都是必须写的。


举例:

CREATE TABLE emp (
  -- int类型
  emp_id INT,
  -- 最多保存20个中英文字符
  emp_name VARCHAR(20),
  -- 总位数不超过15位
  salary DOUBLE(10,2),
  -- 日期类型
  birthday DATE
);


emp表结构显示:

image.png



方式二:

语法格式:


CREATE TABLE 表名
AS
查询语句;

举例:


#将employees表中所有的数据添加到emp1中
CREATE TABLE emp1 AS SELECT * FROM employees;
#创建的emp2是空表,是一个表结构
CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2;


2、查看表结构

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


语法格式如下:


SHOW CREATE TABLE 表名;


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


3、修改表

修改表指的是修改数据库中已经存在的数据表的结构,而不是修改表中的数据,不要弄错了。


使用 ALTER TABLE 语句可以实现:


1、向已有的表中添加列

语法格式:


#【FIRST|AFTER 字段名】是把要插入的字段名放在已经存在的字段的前面或者后面
ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;


举例:


#向dept表中添加新的一列,列名是job_id,数据类型是varchar(15)
#添加新列默认的位置是放在最后面
ALTER TABLE dept
ADD job_id varchar(15);


- 2、修改现有表中的列


可以修改列的数据类型,长度、默认值和位置


语法格式:


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


举例:


#修改dept表中last_name中的数据类型是varchar(30)
ALTER TABLE dept
MODIFY last_name VARCHAR(30);
#修改dept表中salary中的数据类型是double(9,2),默认值是1000
ALTER TABLE dept
MODIFY salary double(9,2) default 1000;

3、删除现有表中的列

语法格式:


ALTER TABLE 表名 DROP 【COLUMN】字段名


举例:


ALTER TABLE  dept
DROP job_id;


4、重命名现有表中的列

语法格式:


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


举例:


ALTER TABLE dept
CHANGE department_name dept_name varchar(15); 


4、重命名表

语法格式:


RENAME TABLE emp
TO myemp;


5、删除表

语法格式:


DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];


IF EXISTS的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。


举例:


DROP TABLE dept80;


注意: DROP TABLE 语句不能回滚,在实际工作中要小心谨慎!


6、清空表

语法格式:


TRUNCATE TABLE 数据表;


举例:


#这里清空的是表中的数据,表的结构不会删除
TRUNCATE TABLE dept;


注意: TRUNCATE TABLE 语句也是不能回滚的,在实际工作中要小心谨慎!

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
安全 关系型数据库 MySQL
【MySQL】表的增删查改
【MySQL】表的增删查改
|
6月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
6月前
|
SQL 关系型数据库 MySQL
mysql sql语句删除一个库下的所有表
mysql sql语句删除一个库下的所有表
46 1
|
6月前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之需要将mysql 表(有longtext类型字段) 迁移到odps,但odps好像没有对应的类型支持,该怎么办
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
5月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
6月前
|
关系型数据库 MySQL
蓝易云 - 如何修复MySQL中损坏的表
最后,为了防止数据丢失,定期备份数据是非常重要的。
157 3
|
5月前
|
运维 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在处理MySQL表新增数据记录时,没有正确触发变更事件,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
SQL 存储 关系型数据库
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)
64 1
|
6月前
|
存储 关系型数据库 MySQL
【MySQL】表的约束
【MySQL】表的约束