前言
很多朋友其实在刚开始接触学习MySQL的时候,都会从最基本的SQL语句分类学起,知道了SQL大致就分为5类:数据查询语言(DQL,Data Query Language)、数据定义语言(DDL,Data Definition Language)、数据操纵语言(DML,Data Manipulation Language)、数据控制语言(DCL,Data Control Language)、事务控制语言(TCL、Transaction Control Language),了解完这些后,然后把这些无差别的都练习一遍。
实际上,当我们进入工作中后,我们用的最多的实际就是单一查询操作,就是我们上面说的DQL语句。为什么呢?因为系统一旦上线,也就是到了我们的生产环境中。如果你还用DQL之外的SQL去操作表,随时都有可能对表的数据或者表的结构造成改变。比如在生产环境下使用DML语句对某个表的某一行数据进行了改动,又或者用其他语句,对某个数据库账号权限进行了改动,甚至对表结构进行了改动,都有可能造成生产事故。
此上这些话,主要是想跟刚入行的朋友们提下,学习MySQL也好,又或是其他数据库学习,都基本差不多的思路,除了DQL需要好好学习,其他的SQL只需大致了解就好,如果万一有需要使用到DQL之外的SQL语句,直接问度娘即可;我们应该把时间花在不同场景的查询语句上,因为这才是我们进入工作后真正用来“吃饭”的东西。
说了这么多前话,我们还是进入今日的主题,到底哪些SQL是我们在生产中不轻易使用的SQl,小编也是顺便和大家一起复习一下这些语句,一起学习成长。
正文
一、修改表结构SQL
1.添加列
ALTER TABLE table_name
ADD column_name datatype [NOT NULL] [DEFAULT default_value] [AFTER column_name];
- table_name:是你想要修改的表名。
- column_name:是你想要添加的列名。
- datatype:是新列的数据类型(如 INT, VARCHAR(255), DATETIME 等)。
- [NOT NULL]:是可选的,用来指定该列不能存储NULL值。
- [DEFAULT default_value]:是可选的,用来为新列设置默认值。
- [AFTER column_name]:是可选的,用来指定新列在表中的位置(MySQL 8.0.13之前的版本可能不支持)。
2.删除列
ALTER TABLE table_name
DROP COLUMN column_name;
- table_name:是表名。
- column_name:是你想要删除的列名。
3.修改列的数据类型
- 第一种仅更改列的数据类型,不更改列名。
ALTER TABLE table_name
MODIFY COLUMN column_name new_datatype;
- 第二种可以更改列名和数据类型。
ALTER TABLE table_name
CHANGE COLUMN column_name new_column_name new_datatype;
4.修改列的默认值
ALTER TABLE table_name
ALTER COLUMN column_name SET DEFAULT default_value;
或
ALTER TABLE table_name
MODIFY COLUMN column_name datatype DEFAULT default_value;
5.重命名表
RENAME TABLE old_table_name TO new_table_name;
6.添加索引
ALTER TABLE table_name
ADD INDEX index_name (column_name);
或者添加唯一索引:
ALTER TABLE table_name
ADD UNIQUE (column_name);
7.删除索引
ALTER TABLE table_name
DROP INDEX index_name;
注意事项
- 在对生产数据库执行ALTER TABLE语句之前,强烈建议备份数据库。
- 大规模的表结构更改(如添加或删除大量列)可能会影响数据库的性能和可用性,特别是在包含大量数据的表上。
- 在执行修改之前,了解你的MySQL版本和存储引擎(如InnoDB、MyISAM)的特定限制和特性是很重要的。
这些示例为你提供了使用ALTER TABLE语句修改MySQL表结构的基本方法。根据你的具体需求,可能需要将这些基本命令组合起来使用。
收尾
上述这些SQL语句,是小编前几日在工作中,恰巧遇到其中一个场景,但当时不知道怎么用,然后也是网上学习后,和大家分享一下,这些肯定总结的不全,如有小伙伴有兴趣也可在评论区一起补充,一起学习进步。