实例表:员工信息表: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 表名;