文章目录
MySQL表的操作
1、创建表
语法:[]内容可省略
create table 表名( 列名1 列类型1 [not null] [default 默认值] [primary key], 列名2 列类型2, ... ) [字符集] [校验规则] [存储引擎];
说明:
[not null] :该列不能为空
[default 默认值]:该列设置了默认值(没写就自动填默认值)
[primary key]:该列设置为主键
字符集名和校验规则名,在前面的博客MySQL库的操作有讲过,不再赘述。
[字符集]:character set 字符集名
[校验规则]:collate 校验规则名
[存储引擎]:engine 存储引擎名
2、创建表案例
创建表之前,得先进入到当前数据库中,使用
use 数据库名;
进入到该数据库,然后在该数据库中建表:use test1; -- 进入该数据库 create table users( id int, name varchar(20), password varchar(18) ) character set utf8 engine MyISAM;
说明:
不同的存储引擎创建表的文件不一样。
这里users的表结构如下:
- 再创建一个默认的存储引擎为InnoDB的表test,该test的表结构如下:
- 可以看到不同的存储引擎创建表的文件不一样,且文件大小相差很大。
3、查看表结构
desc 表名;
第一行从左往右分别是字段名(列名)、字段类型、是否可以为空、是否是主键、默认值、扩充。
4、修改表
在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
4.1、修改表结构
alter table 表名 modify (字段名 字段类型 [not null] [default 默认值] [primary key], 字段名...);
案例:
- 先在users表中插入两条数据(后面博客会详细讲解插入语法):
insert into users values(1,'张三','1234'),(2,'李四','3456');
- 查看插入后的表内容(后面博客会详细讲解select语法):
select * from users;
- 修改password,让其长度改为100:
alter table users modify password varchar(100);
4.2、表中添加字段
添加字段:
alter table 表名 add (字段名 字段类型 [not null] [default 默认值] [primary key], 字段名...);
在users表中增加一个字段path,用来保存图片路径:
alter table users add path varchar(50) after password;
这里我们使用了关键字after 字段名,用来插入到该字段名后面。并且新增字段对原来数据没有影响。
新增字段后,表结构也新增了一行。
(这里password长度重新设置成了18)。
4.3、表中删除字段
删除字段:
alter table 表名 drop (字段名);
删除password字段:
alter table users drop password;
注意:删除该字段,该字段的数据将被全部删除,涉及到删除的动作,需要特别注意!
4.4、修改表名
修改表名:
alter table users rename [to] 新表名;
users修改表名为student:
alter table users rename student;
4.5、修改字段名
修改字段名:
alter table 表名 change 字段名 新字段名 字段类型 [not null] [default 默认值] [primary key]; --新字段需要完整定义
我们可以观察到:修改表结构、添加字段和修改字段名,操作和创建表的操作是基本一样的!
修改name字段为xingming:
alter table student change name xingming varchar(22);
5、删除表
语法:
drop [tempoary] table [if exists] 表1,表2...;
OKOK,MySQL表的操作就到这里,如果你对Linux和C++也感兴趣的话,可以看看我的主页哦。下面是我的github主页,里面记录了我的学习代码和leetcode的一些题的题解,有兴趣的可以看看。
标签:users,MySQL,修改,表名,table,操作,alter,字段名 From: https://blog.csdn.net/qq_44121078/article/details/140124510