【MYSQL笔记】修改表

实例表:员工信息表:id(varchar(10)),name(varchar(100)),age( int )

修改列的数据类型:

alter table 表名 modify 列名 数据类型;

例:列name修改字符数不超过100个

alter table tb modify name varchar(100);

注:储存了开头不是0且仅由数值字符组成的数据的列能按照int类型,varchar->int进行修改。

但是如果列中存在数据,原则上就不应该再修改列的数据类型了。

添加列:

alter table 表名 add 列名 数据类型;

例:添加能够输入员工出生日期的datetime类型的列birth

alter table tb add birth datetime;

把列添加到最前面:

使用alter table add新建的列会添加到表的最后面。如果在该命令的基础上加上first,新建的列就会添加到最前面。

例:将datetime类型的列birth添加到tb的最前面

alter table tb add birth datetime first;

把列添加到任意位置:

使用after能够把列添加到指定的位置。

alter table tb add birth datetime after id;

修改列的顺序:

使用Modify也可以修改列的位置

例:把最后面的birth换到最前面的位置

alter table tb modify borth datetome first;

 修改列名同时修改列的据类型:

alter table 表名 change 修改前的列名 修改后的列名 修改后的数据类型;

例:把表tb的birth修改为date类型,同时把列名修改为birthday,修改后显示列的结构。

alter table tb change birth birthday date;
desc tb;

删除列:

alter table 表名 drop 列名;

例:删除表tb的列birthday

alter table tb drop birthday;

不仅仅是列,对数据库和表执行操作时也会使用drop命令。

删除列的情况下,该列保存的数据也会被删除。这项操作不会影响到其他列。

设置主键:

唯一:创建了数据库后,就需要想办法从大量的数据中只确定一个符合条件的记录。例如让每个员工都有一个独一无二的ID。这种只会确定一个的独一无二的状态,称为唯一。

主键:在多条记录中用于确定一条记录时使用的标识符。

为了可以严密地确定某条记录,主键需要具备(1)没有重复的值(2)不允许输入空值(null)

在创建表的时候设置主键:

create table 表名(列名 数据类型 primary key ...)

 例:创建表tb1,由作为主键的列为int类型,列b为varchar(10)类型

create table tb1(a int primary key,b varchar(10));

 主键的列中不允许插入重复的值和空值null

唯一键:可以设置“不允许重复但可以为空”的唯一键

create table tb(a int unique,b varchar(10));

使列具有自动连续编号功能:

对于名单或者列表的序号等,我们每次都要输入数字作为列的数据,这不仅麻烦,还容易出错。

所以,如果能够自动输入1,2,3,4这样的连续序号,就会方便许多。

具有自动连续编号功能的列的定义:

定义列的时候,进行以下设置:

(1)数据类型为int:(tinyint或 smallint),既然是连续编号,数据类型自然是整数。

(2)加上auto_increment:用于声明连续编号。

(3)设置primary key使列具有唯一性:具有自动连续编号功能的列具有唯一性,是不重复不空的,这样的 列非常时候作为主键使用。

create table tb (a int auto_increment primary key, b varchar(10));

使用自动连续编号功能插入记录:

因为自动连续编号的列会自动输入编号,使用只要在其他的列输入数据。

或者采用输入0或者null

insert into tb (b) values('a'),values('b'),values('c');

设置连续编号的初始值:

拥有自动连续编号功能的列还可以设置任意的值。

insert into tb values(100,'aa');

列a中会输入值100,然后从101开始分配连续的编号,即从已经输入的最大值+1开始分配值。

由于设置了primary key属性,所以不能输入重复的值。

连续编号的初始化:

如果把表的所有记录都删除,然后重新输入记录,编号不会从1开始分配,而是从既有最大值+1的值开始分配。

如果想把所有的记录都删掉,并且让编号从1开始连续输入(初始化)

alter table 表名 auto_increment=1;

当表中存在数据时,如果设置的编号比已经存在的值大,也可以通过上面的语句重新设置编号的初始值。

设置列 的默认值:

create table 表名(列名 数据类型 default 默认值...);

 例:添加 如果不在姓名列中输入任何值,就会自动输入‘未输入姓名’的功能

alter table tb modify name varchar(10) default '未输入姓名';

创建索引:

在表tb的列id上创建名为my_id的索引:

create index my_id on tb(id);

 显示索引:

show index from 表名;

删除索引:

drop index 索引名 on 表名;

猜你喜欢

转载自blog.csdn.net/m0_52043808/article/details/124179211