👦个人主页:@Weraphael
✍🏻作者简介:目前学习计网、mysql和算法
✈️专栏:MySQL学习
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨
前言
以下对表的操作需要在你先使用某个数据表
use [数据表];
目录
- 前言
- 一、 创建表(增)
- 二、查看表(查)
- 2.1 查看当前数据库有几张表
- 2.3 查询表的详细信息(查看表结构)
- 2.3 查询表创建或修改的信息
- 三、修改表(改)
- 3.1 修改表名
- 3.2 向表中添加字段
- 3.3 向表中插入数据
- 3.4 修改字段类型
- 3.5 修改字段名
- 3.6 删除某一字段及其对应的列数据
- 四、删除表(删)
一、 创建表(增)
【语法】
create [if not exists] table [表名](
field1 datatype,
field2 datatype,
field3 datatype
)character charset=字符集 collate=校验规则 engine=存储引擎;
说明:
field
:表示列名。datatype
:表示列的类型。character set
:指定表的字符集。如果没有指定字符集,则以所在数据库的字符集为准。collate
:指定表的校验规则。如果没有指定校验规则,则以所在数据库的校验规则为准。engin
:指定表的存储引擎。
当然你也可以不指定字符集、校验规则以及存储引擎,因此建表的语法可以简写成以下这样:
create table [表名](
field1 datatype,
field2 datatype,
field3 datatype
...
);
【创建表案例】
默认我已经创建了数据库Userdatabase
,如果需要在某个数据库建表,所以需要使用先该数据库Userdatabase
。
use Userdatabase;
接下来开始建一个用户表users
create table users(
id int comment '用户id',
name varchar(32) comment '用户名字',
password char(32) comment '用户密码',
birthday date comment '用户生日'
)charset=utf8 collate=utf8_general_ci engine=MyIsam;
# comment - 在创建表的同时为特定列添加注释
# 字段类诸如varchar、char和date后面会讲
【说明】
不同的存储引擎,创建表的文件不一样。users
表我这里设置的是存储引擎是MyISAM
,在数据库目录有三个不同的文件,分别是:
users.frm
:表结构。users.MYD
:表数据。users.MYI
:表索引。
当然了,不同的存储引擎的文件个数其实是不一样的,这和 【索引/事务】 是有关的(不做详解,后期再说)。这里我再创建一个engine
是innodb
的表,其内容和以上一模一样,观察存储目录
二、查看表(查)
2.1 查看当前数据库有几张表
show tables;
2.3 查询表的详细信息(查看表结构)
# 查看表结构
desc [表名];
【说明】
2.3 查询表创建或修改的信息
# 查询表创建或修改的信息
show create table [表名] \G;
# \G - 人性化展示(可加可不加)
我们发现,以上是我们建表时的SQL
语句。可是,我们建表时的SQL
语句全是小写命令啊,为什么这里变大写了呢?
原因很简单,我们在【MySQL】数据库的基础概念 说过,MySQL
架构中有解析器和查询优化器,它们会对 SQL
语句进行词法、语法分析,然后对查询执行计划进行优化,选择最佳的查询执行策略,以提高查询性能和效率。
三、修改表(改)
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表
3.1 修改表名
alter table [表名] rename to [新表名]
# to 可加可不加
3.2 向表中添加字段
alter table [表名] add [新添加字段] [字段类型] comment '字段的描述信息' after [某个字段];
# after是在某一个已知字段后添加
# 没有在某个字段前添加,本人亲测~
如果新增多个字段时,需要使用()
将新增的一批字段括起来
alter table [表名] add (字段1 字段类型1 comment ' ', 字段1 字段类型1 comment ' ', ...);
需要注意: 新增一个字段时,可以指定位置;如果新增多个字段,就不能指定位置。
【使用案例】
假设我要在表users
中,在name
字段后添加age
字段
3.3 向表中插入数据
insert into [表名] (字段1, 字段2, ..) values (数据1, 数据2, ...);
# 数据需要和字段一一对应
注意:如果插入的数据包含所有字段,那么(字段1, 字段2, ..)
就可以省略,如:
insert into [表名] values (数据1, 数据2, ...);
检索指定表中的所有数据
select * from [表名];
【使用案例】
3.4 修改字段类型
alter table [表名] modify [字段名] [新字段类型];
【使用案例】
将id
的字段类型改为定长字符串类型char
当然也可以查询表创建时信息
show create table [表名] \G;
可以看到,之前的注释没了,并且字段的类型也修改了(覆盖原来的内容)
3.5 修改字段名
alter table [表名] change [旧字段名] [新字段名] [新字段类型];
【使用案例】
将原id
字段修改为hobby
,并且字段类型为varchar(32)
3.6 删除某一字段及其对应的列数据
alter table [表名] drop [字段];
【使用案例】
将hobby
字段删除
四、删除表(删)
注意:删除表请谨慎操作,建议删除前先备份。
drop table [表名];