MySQL中表的操作
在MySQL中,表是一种数据库对象,表由若干个字段(列)组成,表的操作包括增删查改。
一个表中的书库对象包括:列(column)、索引(index)及触发器:
列也称属性列,在创建表时,必须指定列的名字和类型,同时也可以指定约束;
索引是根据指定的数据库表列建立起来的顺序;
触发器是指用户定义的事务命令的集合,当对表中的数据进行插入、更新和删除时,这组命令就会自动执行,以确保数据的安全性和完整性。
以下在对表的操作中都是伴随着字段和数据类型一起的,约束可以不要,但是字段名和数据类型缺一不可。
1、创建表
1 create table 表名( 2 字段名 数据类型 约束, 3 字段名 数据类型 约束, 4 ... ... ...);
【注】创建的表名不可与存在的表名字重复;
在创建完表之后,可以查看创建的表结构的详细定义,可以使用:
show create table 表名;
也可以使用以下语句查看表的定义:
desc 表名;
【注】desc与describe相同。
2、删除表
drop table 表名;
3、修改表(alter table 表名 ...)
有时我们在创建表时考虑的问题不是很全面,可能后续需要修改,存在以下情况:
(1)只修改表名:
alter table 旧表名 rename 新表名;
(2)增加列(字段)
alter table 表名 add 字段 数据类型 约束;
【注】默认添加在表的最后一列;
也可以一次添加多个表名:
alter table 表名 add(字段 数据类型 约束, 字段 数据类型 约束, 字段 数据类型 约束)
在表的第一个位置增加字段:
alter table 表名 add 字段 数据类型 约束 first;
在表的指定字段后增加字段:
alter table 表名 add 字段名 数据类型 约束 after 属性名;
删除某个字段:
alter table 表名 drop 字段名;
修改字段的数据类型:
alter table 表名 modify 字段名 数据类型;
【注】数据类型为要修改成的数据类型;
修改字段的名字:
alter table 表名 change 旧属性名 新属性名 旧数据类型;
给已创建表的字段添加单一约束:
alter table 表名 add 约束名 (字段名);
如:
alter table test add primary key(id);
在创建表时,可以设置字段约束,常见的约束类型有:
not null(设置非空约束)
default(设置字段的默认值)
unique key(uk)(约束字段的值是唯一的)
primary key(pk) (设置主键约束)
【注】:表的主键可以不唯一
auto_increment(约束字段的值自动增加)
foreign key(约束字段为表的外键)
在创建表时可以添加约束,一般为:
create table 表名( 字段名 数据类型 约束类型, 字段名 数据类型 约束类型 ... .... ....);
可以给字段设置的约束设置一个名字,在创建表时,在最后添加:
constraint uk_bname unique(字段名)
最后再以);结尾,uk_dname是为约束创建的名字。
在为字段创建主键时,主键可以有多个,此时需要通过以下语句来实现:
constraint 约束名 primary key(字段名1, 字段名2)
最后再以);结尾。
在创建表时也可以创建外键约束,只需要在最后一行添加:
constraint 约束名 foreign key(字段名1) references 表名(字段名2)
最后再以);结尾,在设置外键时,两个字段的数据类型必须一致。
给已创建表添加外键约束:
alter table 表名 add constraint fk_name foreign key (字段名) references 表名(字段名);