【MySQL】表的操作{创建/查看/修改/删除}

文章目录

1.创建表

sql 复制代码
CREATE TABLE table_name (
	field1 datatype,
	field2 datatype,
	field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
sql 复制代码
show create table user1;
show create table user1 \G;

1.1comment:注释信息

注释对于数据库的性能没有任何影响,它们只是作为元数据存储在数据库中,供人阅读。

注释的长度是有限制的,具体限制取决于MySQL的版本和配置,但通常足够长以包含有用的信息。

sql 复制代码
CREATE TABLE employee (  
    id INT AUTO_INCREMENT COMMENT '员工编号',  
    name VARCHAR(100) COMMENT '员工姓名',  
    position VARCHAR(100) COMMENT '职位',  
    salary DECIMAL(10, 2) COMMENT '薪资',  
    PRIMARY KEY (id)  
) COMMENT='员工信息表';

通过SHOW CREATE TABLE可以查看创建表时的语句

1.2存储引擎

不同的存储引擎,创建表的文件不一样。

users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

users.frm:表结构

users.MYD:表数据

users.MYI:表索引

innodb是.frm和.ibd(数据和索引放在一个文件)

2.查看表

字段名 字段类型 是否允许为空 索引类型 默认值 扩充

3.修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,

表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

sql 复制代码
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP (column);

插入两条记录

sql 复制代码
insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-
04');

3.1add添加列,对原数据无影响

3.2drop删除列

sql 复制代码
alter table users drop password;

删除字段一定要小心,删除字段及其对应的列数据都没了

3.3modify修改列类型

3.4change修改列名

sql 复制代码
alter table Users change name Name varchar(60); --新字段需要完整定义

3.5rename [to]修改表名

sql 复制代码
alter table users rename [to] Users;

4.删除表

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
sql 复制代码
drop table Users;

5.总结

在MySQL中,DROP TABLE语句用于删除一个或多个表,并释放与之相关的空间。当你想要彻底移除表及其所有数据时,这个语句非常有用。DROP TABLE语句的语法支持一些选项,如TEMPORARY和IF EXISTS,这些选项提供了额外的灵活性和错误处理机制。

基本语法

sql

DROP TABLE [IF EXISTS] tbl_name [, tbl_name] ...

使用TEMPORARY关键字

TEMPORARY关键字用于指定要删除的表是临时表。临时表只在当前会话(或连接)中可见,并且当会话结束时会自动删除。然而,如果你想要在当前会话中提前删除临时表,可以使用DROP TEMPORARY TABLE语句。但是,需要注意的是,在DROP TABLE语句中直接使用TEMPORARY关键字并不是MySQL的标准用法。要删除临时表,通常只需使用DROP TABLE,因为MySQL能够识别出哪些表是临时的。

使用IF EXISTS选项

IF EXISTS选项在尝试删除一个或多个表之前检查这些表是否存在。如果表存在,则将其删除;如果表不存在,则不会引发错误,而是简单地忽略该表并继续执行语句中的其他操作(如果有的话)。这在你不知道表是否存在但想要安全地尝试删除它时非常有用。

示例

删除名为my_table的表(如果它存在):

sql

DROP TABLE IF EXISTS my_table;

同时删除两个表(table1和table2),如果它们都存在:

sql

DROP TABLE IF EXISTS table1, table2;

注意:虽然这里提到了TEMPORARY,但在标准DROP TABLE语法中,如果你想要删除临时表,通常不需要(也不能)显式指定TEMPORARY。只需确保你正在正确的会话中操作,并且知道哪些表是临时的。

注意事项

使用DROP TABLE时要格外小心,因为一旦执行,表及其所有数据将被永久删除,且无法恢复(除非你有备份)。

如果你只是想删除表中的数据但保留表结构,应该使用TRUNCATE TABLE语句而不是DROP TABLE。

DROP TABLE操作通常不会记录在二进制日志中,除非你设置了相应的二进制日志格式(如ROW格式),但这取决于你的MySQL配置和版本。

相关推荐
Elastic 中国社区官方博客2 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
编程爱好者熊浪4 小时前
两次连接池泄露的BUG
java·数据库
南宫乘风5 小时前
基于 Flask + APScheduler + MySQL 的自动报表系统设计
python·mysql·flask
TDengine (老段)5 小时前
TDengine 字符串函数 CHAR 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
qq7422349846 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
姚远Oracle ACE6 小时前
Oracle 如何计算 AWR 报告中的 Sessions 数量
数据库·oracle
Dxy12393102166 小时前
MySQL的SUBSTRING函数详解与应用
数据库·mysql
码力引擎7 小时前
【零基础学MySQL】第十二章:DCL详解
数据库·mysql·1024程序员节
杨云龙UP7 小时前
【MySQL迁移】MySQL数据库迁移实战(利用mysqldump从Windows 5.7迁至Linux 8.0)
linux·运维·数据库·mysql·mssql
l1t7 小时前
利用DeepSeek辅助修改luadbi-duckdb读取DuckDB decimal数据类型
c语言·数据库·单元测试·lua·duckdb