- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在数据中,建表处理是很常见且很实用的方法。
表和表之间的关系有 1:1
1:N
N:N
三种方式。
1对1的方式
?
HYPERLINK /kf/201512/453276.html ?
1
2
3span style=font-size:18px;示例:一夫一妻
思考:在一个表中保存着所有人的信息。有男有女,要求查询出所有的夫妻,即一男一女。
注意下面:王五是光棍不应该能查询出来。/span HYPERLINK /kf/201512/453276.html ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22span style=font-size:18px;CREATE TABLE person(
???id INT,
???NAME VARCHAR(10),
???sex CHAR(1),
???wife INT,
???husband INT
);
INSERT INTO person VALUES(1,小花,0,0,3);
INSERT INTO person VALUES(2,玉芬,0,0,4);
INSERT INTO person VALUES(3,张三,1,1,0);
INSERT INTO person VALUES(4,李四,1,2,0);
INSERT INTO person VALUES(5,王五,1,0,0);
?
?
//一对一关系的操作:查出每对夫妻的姓名
CREATE VIEW w AS SELECT * FROM person WHERE sex=0;
CREATE VIEW m AS SELECT * FROM person WHERE sex=1;
//不利用表与表之间的关系
SELECT w.NAME AS 妻子, m.NAME AS 丈夫 FROM w,m WHERE w.husband=m.id AND m.wife=w.id;
//现在更先进的方式:利用表间的关系
SELECT w.NAME AS 妻子, m.NAME AS 丈夫 FROM w INNER JOIN m ON w.husband=m.id AND m.wife=w.id;
/span
?
1对多的方式
?
HYPERLINK /kf/201512/453276.html ?
1
2
3
41对多,多对1。
一个人可以拥有多辆汽车,要求查询出某人所拥有的所有汽车。
根据范式的要求,应该设计两张表,分别表示人的信息和汽车的信息。strong
/strong HYPERLINK /kf/201512/453276.html ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44//步骤1:画E-R图
//步骤2:分别建实体表,并给多方的表添加外键约束
CREATE TABLE person2(
???id VARCHAR(32) PRIMARY KEY,
???pname VARCHAR(30),
???sex CHAR(1)
);
CREATE TABLE car(
???id VARCHAR(32) PRIMARY KEY,
???cname VARCHAR(30),
???price NUMERIC(10,2),
???pid VARCHAR(32),
???CONSTRAINT car_fk FOREIGN KEY(pid) REFERENCES person2(id)
);
DROP TABLE car;
?
?
//步骤3:为两个表添加测试数据
//实体表1
INSERT INTO person2(id,pname,sex) VALUES(P001,Jack,1);
INSERT INTO person2(id,pname,sex) VALUES(P002,Tom,1);
INSERT INTO person2(id,pname,sex) VALUES(P003,Rose,0);
INSERT INTO person2(id,pname,sex) VALUES(P004,Mary,0);
INSERT INTO person2(id,pname,sex) VALUES(P005,Mike,1);
SELECT * FROM person2;
?
?
////实体表2
INSERT INTO car(id,cname,price,pid) VALUES(C001,BMW,123.5,P001);
INSERT
文档评论(0)