Mysql扩展语句和约束方式

一、扩展语句

使用工具Navicat创建表格

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:唯一性约束。跟主键不同,可以为空,但不能重复

Mysql扩展语句和约束方式_第1张图片

Mysql扩展语句和约束方式_第2张图片

复制表结构

create table 新表名 like 原表名;
#只能复制表结构,不能复制表中数据
例:
create table carrotto like carrot;

复制表数据

insert into 新表名 select * from 原表名;
#两个表的数据结构要一致
例:
insert into carrotto select * from carrot;

Mysql扩展语句和约束方式_第3张图片

完整复制表

create table 新表名 (select * from 原表名);
例:
create table rabbit (select * from carrot);

Mysql扩展语句和约束方式_第4张图片

删除表内数据

1、delete

delete from 表名;
#delete删除是一行一行删除,如果表中有自增长列,
清空所有记录之后,再次添加内容会从原来的记录之后继续自增写入
例子:
delete from carrotto;

2、truncate

truncate table 表名;
truncate是清空表的数据,而且会把表结构重新构建,速度上比delete快,推荐

3、drop

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;

Mysql扩展语句和约束方式_第5张图片

Mysql扩展语句和约束方式_第6张图片

二、约束方式

1、主键约束 primary key

用于唯一标识表中的每一行,主键列的值必须是唯一而且不能为空,一个表只能有一个主键。

2、外键约束 foreign key

用于建立表与表之间的关系,一般是和另一张表的主键关联。保证数据引用的完整性。一个表可以有多个外键。

3、非空约束 not null

必须要有一个值。

4、唯一性约束,unique

确保列中的所有值都是唯一的,类似于主键,但是可以为空,而且一个表可以有多个唯一约束。

5、默认值约束,default

在插入表数据时,如果没有定义值,会提供一个默认值。

6、自增约束,auto_increment

每行自动生成一个唯一标识,通常和主键一起使用。

示例

创建主表:
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;

Mysql扩展语句和约束方式_第7张图片

Mysql扩展语句和约束方式_第8张图片 

若要删除主键:
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

这是一个自增约束的主键,要先改变他的数据类型,即解除自增约束,之后主键才可以删除

Mysql扩展语句和约束方式_第9张图片

alter table class modify stud_id int(12);
alter table class drop primary key;

Mysql扩展语句和约束方式_第10张图片

你可能感兴趣的:(mysql,数据库)