目录
关于“连接”我摸索了两三天才最终知道哪里出了问题,博客也停更起码三天,这种感觉谁懂啊,难受死了!
一:手动连接
上次我们说到,我们在输入表的数据前必须设置主键才能防止出现二个或多个记录重复的情况,即数据冗余。
那么,我们在一个库里创建两个表后,如何让他们产生关联呢?或者说如何让他们连接起来?
(如图,stu 和 tea 是我们在同一个库:coco 里创建的两个表)
我们想让这两个表产生关联,即“连接”起来;
1.具体操作
(下面的演示我们就不从零开始一步一步的逐个详解了)
1.1 创建一个表,设置主键,输入有关记录,点击保存(这一步最后一个记录是没有的,我比较懒,没有从零开始建表);
1.2 我们再创建一个表,设置主键,点击保存;
1.3 我们回到 stu表 中,插入 tea 表中的主键,右击该记录,选择“关系”,点击“添加”,在名称这里,修改名称为“外键”(最好修改一下,不修改也行);]
点击“表和列规范”右端,会出现一个弹窗,这是“连接”中最重要的一步;
“外键表”是固定的,我们不能修改。我们知道“含有其他表的主键的表称为外键表”,所以他显示为“stu”是有道理的。
1.4 我们需要在“stu”表里使用 tea表 里的“tea_id”主键,所以我们修改后的数据应该是这样的:(如下图 ,意思是:外键表“stu”中的“tea_id”来自主键表“tea”中的“tea_id”;
这样两个表就靠“tea_id”连接起来了,们就能在外键表“stu”使用tea_id了。
1.5 我们需要验证一下,打开外建表,出现了 “tea_id” 这一纪录,说明我们的连接是成功的。
1.6 阻挠我的是1.3这一步骤,当时无论我怎么做都无法创建成功,打开主键表根本没有添加的外表,我一直很纳闷,想了两天都没有想出来。后来尝试的过程中我注意到一个弹窗,我没有保存,从网上照了一张;
解决办法:工具——选项——设计器——表设计器和数据库设计器:(取消对号)阻止保存要求重新创建表的更改 ;
二:用命令连接
首先数据库语言不同于编程语言。
Java,python等语言都源自 c 语言,语法基本相同,我们称之为类c语言。而数据库语言则不同,在下面使用命令建表大家会感受的到。
(1)新建
点击“新建查询”,选择数据库,我选择的是叫 “coco” 的库,然后就可以直接输入命令符了。
(2)相关规则
use 库名 : 表示在哪个库新建表;
create table 表名:告诉计算机你需要创建一个表,并且告诉计算机它的名字;
注意,数据库语言里内容放在“()”,而不是编程语言的 “ { } ” ;
我们尽量优先创建主键,这是一个很好的习惯;
PK 即 primary key 的缩写,表示主键; FK即 foreign key的缩写,表示外键;
数据名 数据类型 primary key :定义主键;
(另一个表的)数据名 数据类型 foreign key references 表名(数据名):定义外键
数据名 nvarchar(20) not noll :定义记录,类似定义于Java 中的成员变量,只不过“变量名”必须放在 “数据类型” 前面,一般后面要加上“not null”,毕竟大多数数据不为空,语句与语句之间用逗号隔开;
其实,创建表的时候,可以在内容的最后一行后面加上“逗号”,但是,Oracle数据库里不允许这样写,为了数据库之间便于移植,我们建议在最后一行的末尾不要加上逗号;
(3)“数据类型”
常用的大概有 nvarchar(20),nchar(1),int这几个。
nvarchar(20)表示长度20不超过国际化的变量字符,n 是 national 的缩写,国际化的意思,即可以是中文;var是 variate 的缩写,变量的意思;20是字符的最大长度;
nchar(1)表示长度为1的字符变量;
(4)分析-执行
输入完毕后,我们点击 “ √ ”,(快捷键为Ctrl+F5),编译一下,看看有没有错误,但此时,左边库中没有显示新建的表;
· 点击执行,可以看到如下,说明我们的表创建完成了,但是好像没有显示出来;
我们右击空白刷新一下,就可以看到该库中存在该表;
(我一次创建了两个表,只需要选中一个表点击“分析”——“执行”就能生成选择的那个表。)
最后,我们来验证一下吧,可以看到外键表中存在外键;