在MySQL中如何设置主键和外键
今天装修百科网给各位分享怎么给列名设置外键的知识,其中也会对在MySQL中如何设置主键和外键(mysql怎么设置主键外键)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!
在MySQL中如何设置主键和外键
工具/原料
电脑 MySQL

方法/步骤
设置主键:
1、通过终端进入到mysql命令行工具。
2、通过use关键字进行到目标数据库里。
3、如原表已有主键,先把原来的主键删除掉,通过DROP PRIMARY KEY命令:ALTER TABLE `jingyan` DROP PRIMARY KEY;。
4、主键已经没有了。
5、通过命令:ADD PRIMARY KEY来添加ALTER TABLE `jingyan` ADD PRIMARY KEY ( `id` ) 。
6、输入后按下回车键即可看到 query ok执行成功的字符。
7、回到数据库的可视化工具,即可显示现在的表在id列上添加了主键了。
设置外键:
1、创建好主从表。
2、选择主表,点击设计表,进入到表设计界面。
3、点击外键,进入到外键设置界面。
4、先设置外键名称和选择主表的外键字段。
5、然后在设置外键字段对应从表的数据库、表名和字。
6、点击保存就完成外键设置了。
在MySQL中如何设置主键和外键
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表的外键。
sql 如何添加一个新列并设为外键?
添加新列:alter table tb_car
add column safecomp_no
外键约束:alter table tb_safecomp
add constraint FK_student_classid foreign key(safecomp_no)
references tb_car(safecomp_no)
在Access中怎样为一个表设置外键?
可以用SQL语句的方式来设置外键。
如目前有班级表和学生表如下
SQL语句方式
ALTER TABLE 学生表 ADD CONSTRAINT MyRelation1 FOREIGN KEY (所属班级ID) REFERENCES 班级表 (班级ID);
mysql 如何建立外键
详细说明可以百度搜我的博客: mysql foreign外键详细使用方法和使用事项_2018_lcf
---------下面是使用方法
使用外键的前提:
1. 表储存引擎必须是innodb,否则创建的外键无约束效果。
2. 外键的列类型必须与父表的主键类型完全一致。
3. 外键的名字不能重复(一般使用。
建外键表两种方式(创建表时关联/添加外键)
1) 第一种方式创建表时加外键使用实例:
mysql> create table A( name char(12), id int(8) ,index(id))engine=innodb; //先建立A表,
mysql> create table B( //建立B表,同时做外键
-> id int(9),
-> money int(9),
-> index(id),
-> foreign key(id) references A (id) //这个是必加项,foreign key(B表要关联的字段),references A表名 (对应字段)
-> on delete cascade on update cascade //这里是可选项的,只加一项或都不加都可以的,看需求.
-> )engine=innodb; //这个必须是innodb类型,并且和A表的一致
第二方式在已有的表上做和A表关联的外键(最好是新建好没有记录的,不然会因为记录对不上而创建不成功)
mysql> create table C( //这里先创建一个空表C
-> id int(7),
-> money int(5),
-> index(id)
-> )engine=innodb;
mysql> alter table Cadd constraint abc //在C表上添加和表A关联的外键,constraint 外键名(自己任意取)
-> foreign key(id) references A(id) //和创建时一样的输入
-> on delete cascade on update cascade; //一样是可选项,这行不写也可以通过.
注: @以上的cascade是上面介强的四种模式之一,是可以替换成其它模式的,如写成on update set null
@还可以同时做两个外键,如写成foreign key(id,money) references A(id,money) 即可
@两张表关联字段名可以取不一样名字,但类型必须一致
数据库中的关键字,主关键字,外关键字?
因为学号和课号 组成了一个唯一标识 哪个学生的成绩啊!
在S中学号是主关键字
SC是S和C表延伸的表 在SC中学号和课号是关键字 但是不是主关键字 因为并不能只通过学号或课号能唯一确定哪个个学生的成绩 ! 同一个学生可以选多个课程 而同样 同一个课程可以有很多同学选择 所以必须要两个关键字 才能确定唯一