Java数据库建表和存储过程答题.doc
文本预览下载声明
在数据中,建表处理是很常见且很实用的方法。
表和表之间的关系有 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
显示全部