Oracle 上下合并两张表格
题目:2查询所有教师和同学的name、sex和birthday.
查询需要的结果:
基本思路:取别名,与集合思想 union
将教师与同学的表格需要上下合并的查找出来,然后别名修改成相同的就可以改别名让他们相同,然后就可以合并了。
所需表格
--学生表
CREATE TABLE STUDENT
(
SNO VARCHAR2 (3) NOT NULL,
SNAME VARCHAR2 (6) NOT NULL,
SSEX VARCHAR2 (3) NOT NULL,
SBIRTHDAY DATE NOT NULL,
CLASS VARCHAR2 (5) NOT NULL
);
COMMENT ON COLUMN STUDENT.SNO IS '学生编号';
COMMENT ON COLUMN STUDENT.SNAME IS '学生姓名';
COMMENT ON COLUMN STUDENT.SSEX IS '学生性别';
COMMENT ON COLUMN STUDENT.SBIRTHDAY IS '生日';
COMMENT ON COLUMN STUDENT.CLASS IS '班级';
--学生数据
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
VALUES ('108', '曾华', '男', TO_DATE ('1977-09-01', 'YYYY-MM-DD'), '95033');
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
VALUES ('105', '匡明', '男', TO_DATE ('1975-10-02', 'YYYY-MM-DD'), '95031');
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
VALUES ('107', '王丽', '女', TO_DATE ('1976-01-23', 'YYYY-MM-DD'), '95033');
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
VALUES ('101', '李军', '男', TO_DATE ('1976-02-20', 'YYYY-MM-DD'), '95033');
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
VALUES ('109', '王芳', '女', TO_DATE ('1975-02-10', 'YYYY-MM-DD'), '95031');
INSERT INTO STUDENT (SNO, SNAME, SSEX, SBIRTHDAY, CLASS)
VALUES ('103', '陆君', '男', TO_DATE ('1974-06-03', 'YYYY-MM-DD'), '95031');
--教师表
CREATE TABLE TEACHER
(
TNO VARCHAR2 (3) NOT NULL,
TNAME VARCHAR2 (6) NOT NULL,
TSEX VARCHAR2 (3) NOT NULL,
TBIRTHDAY DATE NOT NULL,
PROF VARCHAR2 (9) NOT NULL,
DEPART VARCHAR2 (15) NOT NULL,
CONSTRAINT PK_TEACHER PRIMARY KEY (TNO)
);
COMMENT ON COLUMN TEACHER.TNO IS '教师编号';
COMMENT ON COLUMN TEACHER.TNAME IS '教师姓名';
COMMENT ON COLUMN TEACHER.TSEX IS '性别';
COMMENT ON COLUMN TEACHER.TBIRTHDAY IS '生日';
COMMENT ON COLUMN TEACHER.PROF IS '职称';
COMMENT ON COLUMN TEACHER.DEPART IS '部门';
--教师数据
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES ('804', '李诚', '男', TO_DATE ('1958-12-02', 'YYYY-MM-DD'), '副教授', '计算机系');
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES ('856', '张旭', '男', TO_DATE ('1969-03-12', 'YYYY-MM-DD'), '讲师', '电子工程系');
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES ('825', '王萍', '女', TO_DATE ('1972-05-05', 'YYYY-MM-DD'), '助教', '计算机系');
INSERT INTO TEACHER (TNO, TNAME, TSEX, TBIRTHDAY, PROF, DEPART)
VALUES ('831', '刘冰', '女', TO_DATE ('1977-08-14', 'YYYY-MM-DD'), '助教', '电子工程系');
答案
--学生表
select sname name,ssex sex,sbirthday birthday,'学生' person from student
--教师表
select tname name,tsex sex,tbirthday birthday,'老师' person from teacher
--学生表与教师表合并
select sname name,ssex sex,sbirthday birthday,'学生' person from student
union
select tname name,tsex sex,tbirthday birthday,'老师' person from teacher)
--合并后创建视图
create view vw_person as(
select sname name,ssex sex,sbirthday birthday,'学生' person from student
union
select tname name,tsex sex,tbirthday birthday,'老师' person from teacher)
order by person
查看
select * from vw_person