MySQL扩展语句和约束条件

MySQL扩展语句

create TABLE if not exists ky32 (

id int(4) zerofill primary key auto_inc rement,
#表示该字段可以自增长,默认从1开始每条记录会自动递增1

name varchar(10) not null,

cradid int(10) not null unique key,

hobby varchar (50)

);

if not exists ky32:ky32这个表不存在,才会创建

zerofill:自动填充位置 1 0001

primary key:当前表的主键,主键只能有一个,而唯一,而且不能为空

auto_increment:表示该字段可以自增长,默认从1开始,每条记录会自动递增1

upique key:唯一性约束。跟主键不通,可以为空的。

create table test like hhjj;
复制,通过Like这个语法,可以直接复制hhjj的表结构,无法复制数据
insert into test select * from hhjj;
把hhjj表里面的数据,复制到test,两个表数据结构都要一致。

create table test1 (select * from hhjj);
创建一张表,数据来自hhjj,表结构也是hhjj。

结束之后F5刷新即可

MySQL对表内容三种删除的方法

delete  

delete from test1 ;

delete的删除是一行一行的删除,如果表中有自增长列,即使清空所有记录之后,再次添加内容会从原来的记录之后继续自增写入
 

truncate  

truncate table test;

清空表的数据,会把表结构重新建立,速度上比delete快
一般都用truncate


DROP

drop table test1;

太极端,删除整个表,不推荐使用

创建临时表

临时表一般用于调试,而且临时表创建之后在表目录当中是不显示的。连接退出之后,临时表会被销毁,而且临时表无法创建外键。

create temporary table test1 (

id int(4) primary key,

name char(10),

sex char(2)

);

insert into test1 values(1,'zzr','man');

select * from test1;

MYSQL的约束方式

6种常用的约束:

1、 主键约束。用于唯一标识表种的每一行,主键列的值必须是唯一且不能为空,一共表种只能有一个主键。

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

3、 非空约束。not null 必须要有一个值。

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

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

6、 自增约束。每行自动生成一个唯一标识。通常和主键在一起使用。

主键约束

create table student (

card_id int(18) primary key,

stu_name varchar(12) not null,

stu_email varchar(255) unique

);

desc student;

主表:

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)
);

show create table class;
查看关联关系

MySQL扩展语句和约束条件_第1张图片

class_ibfk_1是外键,先删除他,在删除其他

索引是 card_id

主表和从表的关系

插入数据,先插入主表,再插入从表
删除数据得先删除主表,再删除从表

alter table class drop FOREIGN key class_ibfk_1;
desc class;
MUL:这是个索引

alter table class drop index card_id;
desc class;

alter table class drop primary key;

此处会报错,因为无法直接删除,得先修改数据结构

alter TABLE class modify stud_id int(12);
修改数据类型

alter table class drop PRIMARY key;

MySQL扩展语句和约束条件_第2张图片

MySQL扩展语句和约束条件_第3张图片

练习:

两张表分别

主表:company 从表:depart

company:

1.work_id 非空 主键 int(4) ,不满四位要补齐

2.员工昵称 非空 char(5)

3.性别 sex 非空 char(2)

depart

1.de_id 非空 主键 int(6) 不满 补齐

2.work_id 要和主表work_id关联

3.address 为空 但有个默认值

4.phone 不能为空,而且不能重复。

create table company (
work_id int(4) zerofill primary key,
name_id char(5) not null,
sex char(2) not null
);
create table depart (
de_id int(6) zerofill primary key,
work_id int(4) zerofill,
address varchar(50) default '地址不详',
phone int(11) not null unique
);
desc company;
alter table depart add FOREIGN key (work_id) REFERENCES company (work_id);

MySQL扩展语句和约束条件_第4张图片

MySQL扩展语句和约束条件_第5张图片

MySQL扩展语句和约束条件_第6张图片

主键相连,因此主键不一致会报错

注意

MySQL扩展语句和约束条件_第7张图片

练习2

school(主表)

1.de_id int(4) 不满四位补齐。自增长 主键

2.name varchar(15) 不为空

email varchar(45) 可以为空 但是不能重复,默认值([email protected]

cloud_ky32(从表)

id 自增长 主键 int(5)

class_name 不为空

de_id 和主键关联

address 可以为空 默认(地址不详)

phone int(5) 不能为空 不能重复

要求删除外键关联 删除从表主键,重新定义主键为phone

create table school (
de_id int(4) zerofill auto_increment PRIMARY KEY,
name varchar(15) not null,
email varchar(45) UNIQUE DEFAULT '[email protected]'
);

create table cloud (
id int(5) auto_increment PRIMARY KEY,
class_name int(10),
de_id int(4) zerofill,
address varchar(50) UNIQUE default '地址不详',
phone int(5) not null UNIQUE
);

show create table cloud_ky32;
#查看表的外部关联

alter table cloud add FOREIGN key (de_id) REFERENCES school (de_id);

alter table cloud drop FOREIGN key cloud_ibfk_1;
#删除从表的外部关联
desc cloud;

alter table cloud drop index de_id;
desc cloud;


alter TABLE cloud modify id int(12);
修改数据类型

alter table cloud drop PRIMARY key;
#删除从表的主键

desc cloud;

alter table cloud add primary key (phone);
#设置从表的主键为phone

desc cloud;

MySQL扩展语句和约束条件_第8张图片

MySQL扩展语句和约束条件_第9张图片

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