mysql数据库-外键

来源:互联网 发布:2017淘宝买家秀男大jb 编辑:程序博客网 时间:2022/01/21 22:36
什么是外键?
外键的作用就是一个表中某列的值必须来自另一个表某列的值,否则数据将无法插入,这就是外键的作用
       外键使用的条件?
  所有的外键都必须在innodb表中使用,而mysqlisam表中是无法使用外键的
    什么是innodb表,mysqlisam表?
  mysqlisam表不支持事务处理,而innodb表支持事务处理,
    什么是事务处理?
  请看我将的pdo连接数据库吧,那里面将的比较详细了,就是一个自动提交,事务回滚。
   下面我演示一下外键的语法
在mysql数据库中打开命令框
show databases;  查看本机数据库
create database shujuku default character set gbk collate gbk_bin;   创建数据库名叫shujuku 字符集编码为gbk  连接校对胃gbk_bin
use shujuku;进入数据库shujuku
create table student(
id int primary key auto_increment,  创建一个列名叫id 类型为int类型   并设置为主键(primary key) 自动递增(auto_increment)
name varchar(8) not null,   创建一个name列名  类型是varchar型  不能为空(not  null)
sex char(2) not null    创建一个sex列名   类型是char 不能为空
)engine=innodb;               设置表的类型 
create table course(
cno int primary key auto_increment,  
cname varchar(8)  not null
);
create table score(
id int priary key,
cname vacahr(8) not null,
score double(1) default 0,
CONSTRAINT book_customerforeign key(id) references student(id) on delete cascade on update cascade,
CONSTRAINT book_customerforeign key(cname) references course(cname) on delete cascade on update cascade
)engine=innodb;   #红色部分代表着次外键名称

 蓝色部分就是重点,
foreign key(id) references student(id) on delete cascade on update cascade
意思讲的是 在本章表中(即是在score表中)的id列的值,必须是来自student表中的id值, 当我们对表student.id列进行删除、更新时相应的score表中的id也随之发生改变.
0 0