create TABLE if not exists carrot(
id int(4) ZEROFILL primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar (50)
);
-------------------------------------------------------------------------------------------
create TABLE if not exists carrot:如果carrot表不存在则创建carrot表
ZEROFIL:自动填充位置,若输入1,则自动补齐为0001
primary key:当前表的主键,主键只能有一个,不能为空
auto_increment:表示该字段可以自增长,默认从1开始,即每条记录会自增1
unique key:唯一性约束。跟主键不同,可以为空,但不能重复
create table 新表名 like 原表名;
#只能复制表结构,不能复制表中数据
例:
create table carrotto like carrot;
insert into 新表名 select * from 原表名;
#两个表的数据结构要一致
例:
insert into carrotto select * from carrot;
create table 新表名 (select * from 原表名);
例:
create table rabbit (select * from carrot);
delete from 表名;
#delete删除是一行一行删除,如果表中有自增长列,
清空所有记录之后,再次添加内容会从原来的记录之后继续自增写入
例子:
delete from carrotto;
truncate table 表名;
truncate是清空表的数据,而且会把表结构重新构建,速度上比delete快,推荐
drop table 表名;
删除表,不太推荐
临时表一般用于调试,而且临时表创建之后在表目录当中是不显示的,连接退出之后,临时表会被销毁,而且临时表无法创建外键
create temporary table test (
id int(4) primary key,
name char(10),
sex char(2)
)
insert into test values(1,'张三','男');
select * from test;
用于唯一标识表中的每一行,主键列的值必须是唯一而且不能为空,一个表只能有一个主键。
用于建立表与表之间的关系,一般是和另一张表的主键关联。保证数据引用的完整性。一个表可以有多个外键。
必须要有一个值。
确保列中的所有值都是唯一的,类似于主键,但是可以为空,而且一个表可以有多个唯一约束。
在插入表数据时,如果没有定义值,会提供一个默认值。
每行自动生成一个唯一标识,通常和主键一起使用。
创建主表:
create table student (
card_id int(18) primary key,
stu_name varchar(12) not null,
stu_email varchar(255) unique
);
desc student;
创建从表:
create table class (
stud_id int(11) auto_increment primary key,
address varchar(50) default '地址不详',
card_id int(18) not null,
FOREIGN key (card_id) REFERENCES student (card_id)
);
插入数据:先插入主表,再插入从表
删除数据:先删除主表,再删除从表
若要删除外键:
alter table class drop FOREIGN key class_ibfk_1;
alter table class drop index card_id;
若要删除主键:
alter table class drop primary key;
出现如下报错:
报错[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
这是一个自增约束的主键,要先改变他的数据类型,即解除自增约束,之后主键才可以删除
alter table class modify stud_id int(12);
alter table class drop primary key;