1> -- 创建测试主表 ID 是主键\x0d\2> CREATE TABLE test_main (\x0d\3> id INT,\x0d\4> value VARCHAR(10),\x0d\5> PRIMARY KEY(id)\x0d\6> );\x0d\7> go\x0d\\x0d\-- 建表时设置外键\x0d\1> CREATE TABLE test_sub (\x0d\2> id INT,\x0d\3> main_id INT,\x0d\4> value VARCHAR(10),\x0d\5> PRIMARY KEY(id),\x0d\6> FOREIGN KEY (main_id) REFERENCES test_main\x0d\7> );\x0d\8> go
1直接写sql语句。
2用SQLyog 选择外键表 ,点击右键 选择关联/外键,然后再选择主表,外键。
3在表 vet_specialties 上点击右键 ,然后找到Relationships/ForeignKeys中,然后选择相应的列。
具体如下:
1、简介
SQL语言,是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
2、应用信息
结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库 *** 作语言,并且它的影响已经超出数据库领域,得到其他领域的重视和采用,如人工智能领域的数据检索,第四代软件开发工具中嵌入SQL的语言等。
3、支持标准
SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。1989年4月,ISO提出了具有完整性特征的SQL89标准,1992年11月又公布了SQL92标准,在此标准中,把数据库分为三个级别:基本集、标准集和完全集。
主外键的存在是依托两个实体之间的关系而存在的;
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的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,'一班')
后才能执行插入前面一条往学生表插入信息的语句
--------------可了解一些了?真累啊
以上就是关于SQL数据库建表时怎么设置外键全部的内容,包括:SQL数据库建表时怎么设置外键、sql如何在创建表时设置外键、数据库建表主键外键怎么创建合适等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)