文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

详谈mysql各种常用操作数据表结构的用法【建议收藏】

2023-10-08 11:33

关注

文章目录


温馨提示

  程序羊十分重视文章文字的排版(好的排版既可以改变一位读者的心情,又可以为读者带来视觉上的冲击),尤其是针对这些很长的阅读类文章,所以本人花了几天的时间排版了文章和标注重要提示,希望能给您一个好的阅读感觉。

适宜阅读人群

  1. 需要面试涉及mysql数据库的程序员;
  2. 想要查漏补缺的人;
  3. 想要不断完善和扩充自己 mysql 技术栈的人;
  4. mysql 面试官。

一.修改系列

1.修改表名:

语法alter table 旧表名 rename to 新表名;

例子:将表aa名修改成test。

alter table aa rename to test;

结果

[SQL]alter table aa rename to test;
受影响的行: 0
时间: 0.251s

修改前:

在这里插入图片描述

修改后:

在这里插入图片描述


2.修改表的注释:

语法alter table 表名 comment '注释';

例子:修改test表的注释。

alter table test comment '测试表';

结果

[SQL]alter table test comment ‘测试表’;
受影响的行: 0
时间: 0.123s

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


3.修改表字段名:

语法alter table 表名 change column 旧字段名 新字段名 新数据类型;

例子:将表test的字段名为name修改成names(这里我也顺带改了类型,不改则写一样)。

alter table test change name names varchar(100);

注意:不管改不改数据类型,后面的数据类型都要写,如果不修改数据类型只需写成原来的数据类型即可。

结果

[SQL]alter table test change name names varchar(100);
受影响的行: 2
时间: 0.825s

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


4.修改表字段的数据类型:

语法alter table 表名 modify column 字段名 数据类型(长度);

例子:修改names字段的数据类型。

alter table test modify sex int(11);

注意:建议带上数据类型长度,比如int类型改varchar类型,如果不带上长度,则无法修改成功。

结果

[SQL]alter table test modify sex int(11)
受影响的行: 2
时间: 0.961s

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


5.修改表字段的数据类型长度:

语法alter table 表名 modify column 字段名 数据类型(长度);

例子:修改names字段的数据类型长度。

alter table test modify names varchar(150);

结果

[SQL]alter table test modify names varchar(150)
受影响的行: 0
时间: 0.107s

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


6.修改表字段的默认值:

语法alter table 表名 modify column 字段名 数据类型(长度) default 具体值;

例子:修改sex字段的默认值。

alter table test modify sex int(11) default 0;

结果

[SQL]alter table test modify sex int(11) default 0;
受影响的行: 0
时间: 0.144s

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


7.修改表字段的注释:

语法alter table 表名 modify column 字段名 数据类型(长度) comment '注释';

例子:修改names字段的注释。

alter table test modify names varchar(150) comment '用户姓名';

结果

[SQL]alter table test modify names varchar(150) comment ‘用户姓名’;
受影响的行: 0
时间: 0.164s

修改前:

在这里插入图片描述

修改后:
在这里插入图片描述


注意:上面的test表中的group字段不够严谨(group是保留关键字),实际应用请不要使用,另外经过刚才的修改测试,使用groups也不行(无法执行alter table语句),因为mysql8中groups是关键字,mysql5.7中不是!

二.创建系列

8.创建表:

8.1.简单创建:

语法create table 表名( 字段 数据类型, ... )

例子:创建一张test_new表,并添加对应的字段。

create table test_new(id int(11),content varchar(200),deptId int(11))

结果

[SQL]create table test_new(
id int(11),
content varchar(200),
deptId int(11)
)
受影响的行: 0
时间: 0.596s

在这里插入图片描述
在这里插入图片描述


8.2.进阶创建:

语法不固定写法,按需求添加,参考以下

例子:创建一张test_new表,并添加对应的字段,添加主键、设置自增、不为空、默认值、添加注释等情况。

create table test_new(id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '数据ID',content varchar(200) NOT NULL COMMENT '内容',deptId int(11) DEFAULT 0 COMMENT '部门ID') ENGINE=InnoDB CHARSET=utf8 COMMENT='测试新表'

结果

[SQL]create table test_new(
id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT ‘数据ID’,
content varchar(200) NOT NULL COMMENT ‘内容’,
deptId int(11) DEFAULT 0 COMMENT ‘部门ID’
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT=‘测试新表’
受影响的行: 0
时间: 0.300s

在这里插入图片描述

在这里插入图片描述


9.插入新字段:

9.1.在指定位置添加字段:

语法alter table 表名 add column 字段名 字段类型 是否可为空 comment '注释' after 指定某字段;

例子:在content字段后面添加remark字段。

alter table test_new add column remark varchar(100) not null comment '备注' after content;

结果

[SQL]alter table test_new add column remark varchar(100) not null comment ‘备注’ after content;
受影响的行: 0
时间: 0.031s

修改前:

在这里插入图片描述

修改后:

在这里插入图片描述


9.2.在表头添加字段:

语法alter table 表名 add column 字段名 数据类型(长度) first;

例子:在表头添加sort字段。

alter table test_new add column sort varchar(100) first;

结果

[SQL]alter table test_new add column sort varchar(100) first;
受影响的行: 0
时间: 0.632s

修改前:

在这里插入图片描述

修改后:

在这里插入图片描述


9.3.增加无完整性约束条件的字段和增加有完整性约束条件的字段的区别:

  约束条件就是控制我们往表字段里插入数据时的一些条件。

  我们可以通过查看表结构来看一个表的约束条件。


alter table test_new add sex boolean;

PS:此处的sex后面只跟了数据类型,而没有完整性约束条件。

alter table test_new add age int not null;

PS:地处的age字段,后面加上了 not null 完整性约束条件。


10.修改表数据从第几开始自动递增:(特殊需求:也可以在创建表时指定)

语法alter table 表名 auto_increment=具体数字;

例子:修改表test_new的自增递增(数据id从100开始递增)。

alter table test_new auto_increment=100;

结果

[SQL]alter table test_new auto_increment=100;
受影响的行: 0
时间: 0.102s

先执行两次新增语句

insert into test_new(content,remark,deptId) values('这是内容','这是备注',1);

在这里插入图片描述


三.删除系列

11.删除表字段:

语法alter table 表名 drop column 字段名;

例子:删除sort字段。

alter table test_new drop column sort;

结果

[SQL]alter table test_new drop column sort;
受影响的行: 0
时间: 1.006s

修改前:

在这里插入图片描述

修改后:

在这里插入图片描述


四.查询系列

12.查看一个表结构有没有设置约束条件:

语法desc 表名

例子:查看表test_new有没有设置约束条件。

desc test_new;

结果

[SQL]desc test_new
受影响的行: 0
时间: 0.007s

信息
在这里插入图片描述

FieldTypeNullKeyDefaultExtra
idint(11)NOPRIauto_increment
contentvarchar(200)NO
remarkvarchar(100)NO
deptIdint(11)NO0

解读

  前2列是字段名和字段的类型,后4列都属于约束条件,每一列约束的条件都不一样。


13.根据数据库名获取所有表的信息:

语法select * from information_schema.TABLES where TABLE_SCHEMA = '数据库名';

例子:查看testdb数据库中所有表的信息。

select * from information_schema.`TABLES` where TABLE_SCHEMA = 'testdb';

结果

[SQL]select * from information_schema.`TABLES` where TABLE_SCHEMA = ‘testdb’;
受影响的行: 0
时间: 0.003s

在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里插入图片描述

一共21列相关信息,可根据实际需求去组合查询,例如以下:

列名说明
TABLE_CATALOG数据表登记目录
TABLE_SCHEMA数据库名
TABLE_NAME表名
TABLE_TYPE表的类型[system view | base table]
ENGINE使用的数据库引擎[MyISAM | CSV | InnoDB]
VERSION版本,默认值10
ROW_FORMAT行格式[Compact | Dynamic | Fixed]
TABLE_ROWS表里所存数据总行数
AVG_ROW_LENGTH平均行长度
DATA_LENGTH数据长度
MAX_DATA_LENGTH最大数据长度
INDEX_LENGTH索引长度
DATA_FREE表/数据空间
AUTO_INCREMENT做自增主键的自动增量当前值
CREATE_TIME表结构最后更新时间
UPDATE_TIME数据最后更新时间
CHECK_TIME表的检查时间
TABLE_COLLATION表的字符校验编码集
CHECKSUM校验和
CREATE_OPTIONS创建选项
TABLE_COMMENT表的注释

例子:根据数据库名获取所有表的名称和表的注释。

select TABLE_NAME,TABLE_COMMENT from information_schema.`TABLES` where TABLE_SCHEMA = 'testdb';

结果

[SQL]select TABLE_NAME,TABLE_COMMENT from information_schema.`TABLES` where TABLE_SCHEMA = ‘testdb’;
受影响的行: 0
时间: 0.002s

在这里插入图片描述


14.根据数据库名获取所有字段的信息:

语法select * from information_schema.COLUMNS where TABLE_SCHEMA = '数据库名';

例子:查看testdb数据库中所有字段的信息。

select * from information_schema.`COLUMNS` where TABLE_SCHEMA = 'testdb';

结果

[SQL]select * from information_schema.`COLUMNS` where TABLE_SCHEMA = ‘testdb’;
受影响的行: 0
时间: 0.003s

在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里插入图片描述

一共22列相关信息,可根据实际需求去组合查询,例如以下:

列名说明
TABLE_CATALOG数据表登记目录
TABLE_SCHEMA数据库名
TABLE_NAME表名
COLUMN_NAME列名
ORDINAL_POSITION字段在表中第几列
COLUMN_DEFAULT列的默认数据
IS_NULLABLE字段是否可以为空
DATA_TYPE数据类型
CHARACTER_MAXIMUM_LENGTH字符最大长度
CHARACTER_OCTET_LENGTH字节长度
NUMERIC_PRECISION数据精度
NUMERIC_SCALE数据规模
DATETIME_PRECISION日期/时间值的精度
CHARACTER_SET_NAME字符集名称
COLLATION_NAME字符集校验名称
COLUMN_TYPE列类型
COLUMN_KEY关键列[NULL | MUL | PRI ]
EXTRA额外描述[NULL | on update CURRENT_TIMESTAMP | auto_inerement]
PRIVILEGES字段操作权限[select,insert,update,references]
COLUMN_COMMENT字段注释
GENERATION_EXPRESSION表达式?
SRS_ID地理空间索引?

例子:根据数据库名获取所有表的名称、字段名和数据类型(长度)。

select TABLE_NAME,COLUMN_NAME,COLUMN_TYPE from information_schema.`COLUMNS` where TABLE_SCHEMA = 'testdb';

结果

[SQL]select TABLE_NAME,COLUMN_NAME,COLUMN_TYPE from information_schema.COLUMNS where TABLE_SCHEMA = ‘testdb’;
受影响的行: 0
时间: 0.002s

在这里插入图片描述


15.根据表名获取所有字段的信息:

语法select * from information_schema.COLUMNS where TABLE_SCHEMA='数据库名' and TABLE_NAME = '表名';

例子:查看testdb数据库中test数据表的所有字段的信息。

select * from information_schema.`COLUMNS` where TABLE_SCHEMA='testdb' and TABLE_NAME = 'test';

结果

[SQL]select * from information_schema.`COLUMNS` where TABLE_SCHEMA=‘testdb’ and TABLE_NAME = ‘test’;
受影响的行: 0
时间: 0.004s

在这里插入图片描述
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在这里插入图片描述
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在这里插入图片描述


16.根据字段名获取该字段的所有信息:

语法select * from information_schema.COLUMNS where TABLE_SCHEMA='数据库名' and TABLE_NAME = '表名' and COLUMN_NAME='字段名';

例子:查看testdb数据库中test数据表的所有字段的信息。

select * from information_schema.`COLUMNS` where TABLE_SCHEMA='testdb' and TABLE_NAME = 'test' and COLUMN_NAME='names';

结果

[SQL]select * from information_schema.`COLUMNS` where TABLE_SCHEMA=‘testdb’ and TABLE_NAME = ‘test’ and COLUMN_NAME=‘names’;
受影响的行: 0
时间: 0.002s

在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里插入图片描述

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在这里插入图片描述


未完待续…

在这里插入图片描述

  元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。

  在 MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在 information_schema 中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。

在这里插入图片描述

创作不易,感谢您的点赞与支持。

来源地址:https://blog.csdn.net/weixin_44563573/article/details/126307518

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯