1.外键的作用,主要有两个:
创新互联拥有网站维护技术和项目管理团队,建立的售前、实施和售后服务体系,为客户提供定制化的成都网站设计、网站制作、网站维护、雅安电信机房解决方案。为客户网站安全和日常运维提供整体管家式外包优质服务。我们的网站维护服务覆盖集团企业、上市公司、外企网站、商城网站开发、政府网站等各类型客户群体,为全球上千余家企业提供全方位网站维护、服务器维护解决方案。
一个是让数据库自己通过外键来保证数据的完整性和一致性
一个就是能够增加ER图的可读性
2.外键的配置
1)先创建一个主表,代码如下:
#创建表student,并添加各种约束
create table student
(
id int primary key , #主键约束
name varchar(20) , #唯一约束
age int NOT NULL, #非空约束
sex varchar(2) ,
address varchar(20) default '重庆' #默认约束
) ;
再通过一个外键,创建一个分数表,这样的话,就可以方便查询。代码如下:
#创建分数表
create table score
(
id int primary key ,
sid int ,
china int ,
history int,
english int,
constraint FK_sid foreign key(sid) references student(id) #通过外键创建链接
) ;
创建外键的方法有很多,其中最常见创建外键的格式是:constraint FK_*** foreign key(**) references 链接的外表
删除外键:
alter table drop foreign key '外键名'.
注意:
只有在定义外键时,用constraint 外键名 foreign key .... 方便进行外键的删除
主键是唯一标示这一行的,就好像你的身份证号一样,每个人只有一个,也是唯一能证明你是你的东西。外键是别人执行你的东西。也就是说如果一个人想和你有点关系怎么办,那就要关联起来,怎么关联起来,就通过外键啊
定义主键和外键主要是为了维护关系数据库的完整性,总结一下:
一、主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
为已经添加好的数据表添加外键:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
//FK_ID是外键的名称
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/
删除外键
语法: ALTER TABLE table-name DROP FOREIGN KEY key-id;
例: ALTER TABLE `tb_active` DROP FOREIGN KEY 'FK_ID'
自动键更新和删除:
外键可以保证新插入的记录的完整性,但是,如果在REFERENCES从句中已命名的表删除记录会怎么样?在使用同样的值作为外键的辅助表中会发生什么?
很明显,那些记录也应该被删除,否则在数据库中就会有很多无意义的孤立记录,MYSQL可以通过向FOREIGN KEY...REFERENCES修饰符添加一个ON DELETE 或ON UPDATE子句简化任务,它告诉了数据库在这种情况如何处理孤立任务。
设置主键的思路:业务字段做主键、自增字典做主键、手动赋值字段做主键。
多表查询:分散在多个不同的表里的数据查询出来的操作。
外键:从表中用来引用主表中数据的那个公共字段。
连接有2种类型的连接:内连接(inner join)和外连接(outer join)
内连接:查询结果只返回符合连接条件的记录。
外连接:查询结果返回某一个表中的所有记录,以及另一个表中满足连接条件的记录。
其中左连接:left join,返回左表中的所有记录,以及右表中符合连接条件的记录。
右连接:right join,返回右表中的所有记录,以及左表中符合连接条件的记录。