导航:首页 > 程序命令 > 数据库主键外键命令

数据库主键外键命令

发布时间:2022-11-26 19:52:56

‘壹’ 数据库里面的主键和外键及候选键是什么意思啊

1、主键(primary key)吧:一张表(关系)的一个列(属性)或多个列可以作为主键,但是前提是让这个列作主键,这个列就能保证该列下的各个行(元组)的值不能相同,比如说用姓名属性作主键的话,那么这个主键就不一定可以,如果有两个人是同样的名字的话,就不能做到该属性下的各个元组数据的值不同,如果用阿拉伯数字作主键就是一个很好的选择。
2、外键(foreign key):一张表(关系)的列(属性)它同时存在表1和表2中,它不是表1的主键,而是表2的主键,就可以说他是表1的外键。
3、候选键(Candidate Key):能唯一标识表(关系)中行(元组)的列(属性),则称该属性为候选键,也称 候选关键字 或 候选码;由此来看候选键可以不只一个,还看一看得出的就是主键同时它也是候选键。

‘贰’ 数据库之主键外键

1,主键约束 (table的唯一标识)

能够作为主键列的特点:该列不能为空,不能有重复值出现

创建表时指定主键的两种方式:

CREATE TABLE stu(

sid CHAR(6) PRIMATY KEY,

sname VARCHAR(20),

age INT,

gender VARCHER(10)

);

指定sid列为主键列

CREATE TABLE stu(

sid CHAR(6),

sname VARCHAR(20),

age INT,

gender VARCHER(10),

PRIMARY KEY(sid)

);

指定sid列为主键列

修改表时指定主键:ALTER TABLE stu ADD PRIMATY KEY(sid);

删除主键:ALTER TABLE stu DROP PRIMARY KEY;

2,主键自增长

因为主键列的特性是:必须唯一,不能为空,所以我们通常会指定主键为整形,然后设置其自动增长

创建表时指定主键自增长:

CREATE TABLE stu(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20),

age INT,

gender VARCHAR(10)

);

修改表时设置主键自增长:ALTER TABLE stu 

3,非空约束

CREATE TABLE stu(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL,

age INT,

gender VARCHAR(10)

);

对sname列设置了非空约束

4,唯一约束

某些列不能设置重复的值,所以可以对列添加唯一约束

CREATE TABLE stu(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL UNIQUE,

age INT,

gender VARCHAR(10)

);

6,外键约束

外键特点:外键必须是另一个表的主键的值(外键要引用主键!),外键可以重复,外键可以为空,一张表可以有多个外键!

CREATE TABLE dept( //部门表

deptno INT  PRIMARY KEY AUTO_INCREMENT,

deptname CHAR(20)

);

INSERT INTO dept VALUES(10,‘研发部’);

INSERT INTO dept VALUES(20,‘人力部’);

INSERT INTO dept VALUES(30,‘财务部’);

CREATE TABLE emp(   //员工表

empno INT PRIMARY KEY AUTO_INCREMENT,

ename VARCHAR(50),

dno INT, //员工所属部门(外键),

CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno)

);

INSERT INTO emp(empno,ename)  VALUES(NULL,‘张三’),//外键可以不传入值

INSERT INTO emp(empno,ename)  VALUES(NULL,‘李四’,10),//外键可以重复

INSERT INTO emp(empno,ename)  VALUES(NULL,‘王五’,10),

INSERT INTO emp(empno,ename)  VALUES(NULL,‘赵六’,80),//dept表没有主键值为80的记录,sql客户端编译报错

7,一对一关系模型

创建老公表

CREATE TABLE hashand(

hid INT PRIMARY KEY AUTO_INCREMENT,

hname VARCHAR(50),

);

INSERT INTO hashand VALUES(NULL,‘刘备’);

INSERT INTO hashand VALUES(NULL,‘关羽’);

INSERT INTO hashand VALUES(NULL,‘张飞’);

SELECT * FROM hashand

//创建老婆表

CREATE TABLE wife(

wid INT PRIMARY KEY AUTO_INCREMENT,

wname VARCHAR(50),

CONSTRAINT fk_wife_hashand FOREIGN KEY(wid)  REFERENCES hashand(hid)

)

/**

wid:

1,非空

2,唯一

3,引用hid

*/

INSERT INTO wife VALUES(1,‘杨贵妃’);

INSERT INTO wife VALUES(2,‘妲己’);

INSERT INTO wife VALUES(3,‘褒姒’);

SELECT * FROM wife;

对于一对一关系模型从表的主键即是外键,例如老公和老婆的关系模型,一个老公只能有一个老婆,一个老婆只能有一个老公

对于一对多关系模型主表的主键即是从表的外键,例如订单和用户的关系模型,一个用户可以下单多次,对应多个订单,而一个订单只能属于一个用户

对于多对多关系模型没有主表和从表之分,需要建立第三张表来记录这两张表的外键,建立两个外键,分别引用这两张表的主键

8,多对多关系模型

在表中简历多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键,例如学生和老师的关系模型,一个老师可以有多个学生,一个学生可以有多个老师

CREATE TABLE student(

sid INT PRIMARY KEY AUTO_INCREMENT,

sname CHAR(40)

);

CREATE TABLE teacher(

tid INT PRIMARY KEY AUTO_INCREMENT,

tname CHAR(40)

);

CREATE TABLE stu_tea(

sid INT,

tid INT,

ADD CONSTRAINT fk_stu_tea_sid FOREIGN KEY(sid) REFERENCES student(sid),

ADD CONSTRAINT fk_stu_tea_tid FOREIGN KEY(tid) REFERENCES teacher(tid)

);

INSERT INTO student VALUES(NULL,‘刘德华’);

INSERT INTO student VALUES(NULL,‘梁朝伟’);

INSERT INTO student VALUES(NULL,‘黄日华’);

INSERT INTO student VALUES(NULL,‘苗侨伟’);

INSERT INTO student VALUES(NULL,‘汤镇业’);

INSERT INTO teacher VALUES(NULL,‘崔老师’);

INSERT INTO teacher VALUES(NULL,‘刘老师’);

INSERT INTO teacher VALUES(NULL,‘石老师’);

SELECT * FROM student;

SELECT * FROM teacher;

INSERT INTO stu_tea VALUES(1,1); //刘德华是崔老师的学生

INSERT INTO stu_tea VALUES(2,1); //梁朝伟是崔老师的学生

INSERT INTO stu_tea VALUES(3,1);//黄日华是崔老师的学生

INSERT INTO stu_tea VALUES(4,1);//苗侨伟是崔老师的学生

INSERT INTO stu_tea VALUES(5,1);//汤镇业是崔老师的学生

INSERT INTO stu_tea VALUES(2,2);//梁朝伟是刘老师的学生

INSERT INTO stu_tea VALUES(3,2);//黄日华是刘老师的学生

INSERT INTO stu_tea VALUES(4,2);//苗侨伟是刘老师的学生

INSERT INTO stu_tea VALUES(3,3);//黄日华是石老师的学生

INSERT INTO stu_tea VALUES(5,3);//汤镇业是刘老师的学生

SELECT * FROM stu_tea;

这时在stu_tea这个中间表中的每条记录都是来说明student表和teacher表的关系的

例如在stu_tea表中的记录:sid为1001,tid为2001,这说明编号为1001的学生有一个编号为2001的老师

sid          tid

1001       2001 //编号为1001的学生有一个编号为2001的老师

1001       2002 //编号为1001的学生有一个编号为2002的老师

1001       2003 //编号为1001的学生有一个编号为2003的老师

1002       2001 //编号为2001的老师有一个编号为1002的学生

1002       2004 //编号为2004的老师有一个编号为1002的学生

9,合并结果集

要求要合并的结果集中,列的类型和列数相同

UNION,去除重复行,UNION ALL,不去除重复行

‘叁’ 在Linux环境下,oracle数据库中查询表主键、外键及索引的命令是什么

要通过查询ORACLE的数据字典才能知道。
1、查主键名称:
select * from user_constraints
where table_name = 'ART'
and constraint_type ='P';
查主键对应的列:
select * from user_cons_columns
where table_name = 'ART'
and constraint_name = 'PK_ART';
2、查索引名称:
select * from user_indexes
where table_name = 'ART';
查索引对应的列:
select * from user_ind_columns
where table_name = 'ART'
and index_name = 'INDX_BA';

‘肆’ 数据库中什么是主键,什么是外键

主键(Primary key): 也称为主码或主关键字,用于惟一地确定一个元组的属性或属性组(复合主码)。每个关系都有一个并且只有一个主码。

外键(Foreign Key):也称为外码或外部关键字。如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。

在关系数据库中可以通过外键使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)称为参照关系。

(4)数据库主键外键命令扩展阅读:

数据库主键作用:

1、保证实体的完整性

2、加快数据库的操作速度

3、在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4、DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。

‘伍’ 在MySQL中如何设置主键和外键

工具/原料

电脑 MySQL

方法/步骤

设置主键:

1、通过终端进入到mysql命令行工具。

‘陆’ 什么是主键与外键

1、主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

2、外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

(6)数据库主键外键命令扩展阅读:

主关键字的作用

1、保证实体的完整性;

2、加快数据库的操作速度;

3、在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;

4、ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

‘柒’ Sql server怎样创建主外键关系

Sqlserver怎样创建主外键关系的方法。

如下参考:

1.为了帮助你理解,用一个例子来帮助你理解。它基本上是指通过引用表2中的字段来约束表1中的字段。

‘捌’ sql用命令创建主键与外键。

创建SQL的主键和外键约束的方法:

--在创建表时就可以对字段加上约束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)
StudentName nvarchar(15) not null, --加非空约束,不加"not null" 默认为:可以为空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)
StudentAge int DEFAULT ((0)), --加默认值约束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式)
)

--如果在表创建好了以后再加约束,则格式分别为:

-- 主键:
alter table 表名
add constraint PK_字段名--"PK"为主键的缩写,字段名为要在其上创建主键的字段名,'PK_字段名'就为约束名
primary key (字段名) --字段名同上

--唯一约束:
alter table 表名
add constraint UQ_字段名
unique (字段名)

--外键约束:
alter table 表名
add constraint FK_字段名--"FK"为外键的缩写
foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'

alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)

alter table 成绩表 add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
级联更新,级联删除,这样在删除主表Student时,成绩表中该学生的所有成绩都会删除。

--检查约束:
alter table 表名
add constraint CK_字段名
check (条件表达式) --条件表达式中的条件用关系运算符连接

--默认值约束:
alter table 表名
add constraint DF_字段名
default '默认值' for 字段名--其中的'默认值'为你想要默认的值,注意'for'

--删除创建的约束:
alter table 表名
drop constraint 约束名--约束名为你前面创建的如:PK_字段这样的约束名
--注意:如果约束是在创建表的时候创建的,则不能用命令删除
--只能在'企业管理器'里面删除

参考资料 : http://www.studyofnet.com/news/92.html

希望以上的回答能够帮到你

‘玖’ 在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表的外键。

‘拾’ 数据库主键和外键怎么写

举例:设置主键
create table 学生表
(学号, char(12) primary key not null,
姓名, char(8) not null,
班级编号, char(10) foreign key references 班级表(班级编号)
)
第一列学号设为主键,第三列班级编号为外键,参考班级表中的班级编号列。

阅读全文

与数据库主键外键命令相关的资料

热点内容
imac混合硬盘命令 浏览:277
沈阳用什么app租房车 浏览:857
00后高中生都用什么app 浏览:237
戴尔塔式服务器怎么打开独立显卡 浏览:807
医疗程序员招聘 浏览:597
住宿app可砍价是什么意思 浏览:133
java跳出语句 浏览:55
javastring个数 浏览:928
人工免疫算法应用 浏览:79
有什么app能收听俄罗斯广播电台 浏览:34
2015考研红宝书pdf 浏览:443
程序员几月跳槽合适 浏览:444
液压油可压缩吗 浏览:946
源泉cad加密文件 浏览:127
银河v10驱动重编译 浏览:891
电脑上文件夹右击就会崩溃 浏览:691
右美维持算法 浏览:940
php基础编程教程pdf 浏览:220
穿越之命令与征服将军 浏览:353
android广播重复 浏览:834