没有直接从两个基本表直接生产新表的,只能分下面2个步骤创建
(1)先创建新表,里面包括tab1,tab2的字段,如
CREATE TABLE new_table
( F1 varchar(20) NOT NULL,
F2 varchar(11) NOT NULL,
F3varchar(40) NOT NULL,
F4 money NOT NULL
)
(2)用INSERT new_table SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.F1=tab1.F3 插入二个基表的数据,这里假定你二个表通过F1,F3关联(关联有一一或一对多,多对一,你要注意JOIN的类型)
如果你可以用视图,视图名叫new_view则,可以直接生成2个表数据的视图
CREATE VIEW new_view AS SELECT tab1.*, tab2.* FROM tab1 INNER JOIN tab2 ON tab1.F1=tab1.F3
你好,这种功能的实现方法有很多。下面提供两种方案。
1 . 建立级联
2 . 建立触发器
参见下面的代码,有问题再追问。
-- 建立测试环境-- 创建测试主表. ID 是主键.
CREATE TABLE test_main (
id INT NOT NULL,
value VARCHAR(10),
PRIMARY KEY(id)
)
-- 创建测试子表.
CREATE TABLE test_sub (
id INT NOT NULL,
main_id INT ,
value VARCHAR(10),
PRIMARY KEY(id)
)
-- 插入测试主表数据.
INSERT INTO test_main(id, value) VALUES (1, 'ONE')
INSERT INTO test_main(id, value) VALUES (2, 'TWO')
-- 插入测试子表数据.
INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE')
INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO')
方法一、级联
-- 增加外键约束, 实现级联删除
-- 创建外键(使用 ON DELETE CASCADE 选项,删除主表的时候,同时删除子表)
ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCEStest_main ON DELETE CASCADE
-- 测试删除主表数据. 将成功地执行.
DELETE TEST_MAIN WHERE ID = 1
-- 测试检索子表,应该只有一条 main_id = 2 的数据.
SELECT * FROM test_sub
go
(1 行受影响)
id main_id value
----------- ----------- ----------
2 2 TWOTWO
(1 行受影响)
方法二、建立触发器进行删除
IF EXISTS (SELECT NAME FROM SYSOBJECTS
WHERE NAME = 'DEL_TR' AND TYPE = 'TR')
DROP TRIGGER DEL_TR
GO
CREATE TRIGGER DEL_TR
ON TEST_MAIN
FOR DELETE
AS
IF (SELECT COUNT(*) FROM DELETED) > 0
DELETE FROM TEST_SUB WHERE ID IN (SELECT ID FROM DELETED)
GO
1、首先我们打开Workbench创一个建数据库(这里都使用闪电1执行选定命令行)。
2、先创建Student学生表。
3、再创建course课程表。
4、然后就可以创建sc关联表了我们先写上Student的主键和course的主键,并写上sc自己的属性成绩。
5、再写上主键约束,以及把sc表的学号属性和Studnet的学号关联、课程号属性和course的课程号关联。
6、再次运行就可以看到我们成功创建了学生表和课程表的关联表sc。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)