主键:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义
PRIMARY
KEY
约束来创建主键。一个表只能有一个
PRIMARY
KEY
约束,而且
PRIMARY
KEY
约束中的列不能接受空值。由于
PRIMARY
KEY
约束确保唯一数据,所以经常用来定义标识列。
外键
(FK)
是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键
还是去看一下基础知识吧
主外键的存在是依托两个实体之间的关系而存在的;
比如班级与学生的关系:
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的id作为外键,为什么不在班级表内放学生呢?
因为,你想一想班级表内如果放学生那么记录可能就是这样:
1班id
1班
xx同学id
1班id
1班
xx同学id
这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;
下面简单给你讲下大概建成的表结构
--建班级表
create
table
class(
classid
int
primary
key,--定义班级id为主键
classname
varchar(15)
)
--建学生表
create
table
students(
studentid
int
primary
key,--定义学生id为主键
classid
int
,--外键值,跟班级表classid
属性类型相同
stuname
varchar(20),--学生姓名
---定义外键
foreign
key(classid)
references
class(classid)
--本表classid是基于class表classid的外键
)
---------
如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:
--在班级表为空的情况往学生表插入一条记录是不允许的:
insert
into
students(studentid,classid,stuname)values(1,1,'小明')
系统会抛出异常提示主键表班级表内班级id不存在这样是不允许插入的;
必须要先往班级表内插入一条记录:
insert
into
class(classid,classname)values(1,'一班')
后才能执行插入前面一条往学生表插入信息的语句
--------------可了解一些了?真累啊
可以使用序列实现id自增,主键的语法为primary key。
当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。
创建序列语法如下:create sequence [模式]序列名称[start with 起始数字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 数目|nocache][order|noorder]。
具体代码示例如下:
创建表
create table book(
bookId varchar2(4) primary key,
name varchar2(20)
);
创建序列
create sequence book_seq start with 1 increment by 1;
创建触发器
create or replace trigger book_trigger
before insert on book
for each row
begin
select book_seqnextval into :newbookId from dual;
end ;
添加数据
insert into book(name) values ('cc');
insert into book(name) values ('dd');
commit;
扩展资料:
在数据表中,有时候需要主键值自动增加,但在Oracle数据库中,没有象Mysql的Autoincrement一样自动增长的数据类型。在实现Oracle数据库字段自增功能时,利用DML触发器来完成。
触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML即数据 *** 纵语言,用于让用户或程序员使用,实现对数据库中数据的 *** 作。基本的数据 *** 作分成两类四种:检索(查询)和更新(插入、删除、修改)。
触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的DML(insert、update或delete) *** 作等。
选中要设置的两个表列,然后右键设置主键即可。
SQLServer是Microsoft公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2012的大型多处理器的服务器等多种平台使用。
MicrosoftSQLServer是一个全面的数据库平台,使用集成的商业智能(BI)工具提供了企业级的数据管理。
MicrosoftSQLServer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
SQLServer是一个关系数据库管理系统。它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。
在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。Sybase则较专注于SQLServer在UNⅨ *** 作系统上的应用。
数据库建表时怎么设置外键步骤如下:
第一步、打开要建外键表的设计器,右击选择“关系”。
第二步、然后d出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。
第三步、d出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。
第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何 *** 作”、“级联”、“设置为NULL”、“设置默认值”。
以上就是关于数据库的主键是怎么回事全部的内容,包括:数据库的主键是怎么回事、数据库建表主键外键怎么创建合适、oracle怎么实现id自增和设置主键啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)