数据库的外键约束、多表查询 浅浅的花香味﹌ 2023-06-24 08:15 1阅读 0赞 **目录** 1、外键的应用 2、多表查询 3、子查询 ### 1、创建外键: ### --主表:建立一个班级表,记录班级的名称 create table class( cNumber number primary key, className varchar(20) ); --从表:建立一个学生表 create table student( classNumber number, name varchar(20) not null, grade float ); --为学生表的classNumber(班级编号)创建一个外键,而这个学生表中的classNumber应该受班级表中cNumber的限制 --添加外键的写法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名); alter table student add constraint FK_ID foreign key(ClassNumber) references class(cNumber); --因为受外键的限制,所有先要将数据插入到主表中 insert into class(cNumber,className)values(1,'高一(1)班'); insert into class(cNumber,className)values(2,'高一(2)班'); insert into class(cNumber,className)values(3,'高一(3)班'); insert into class(cNumber,className)values(4,'高一(4)班'); insert into student(classNumber,name,grade)values( 1,'张三',98.5); insert into student(classNumber,name,grade)values( 2,'李四',96.5); insert into student(classNumber,name,grade)values( 4,'王五',97.5); insert into student(classNumber,name,grade)values( 3,'赵六',90.5); select *from class order by cNumber select *from student ### 2、多表查询 ### --笛卡尔积查询 select *from class,student; --内连接查询 --隐式内连接查询 select *from class,student where cNumber=ClassNumber; --给表取别名,效果和上面语句一样 select *from class c,student s where c.cNumber=s.ClassNumber; --显示内连接查询 select *from class c inner join student s on c.cNumber=s.ClassNumber; 二者区别: 隐式内连接:在查询的基础上去做的where条件筛选 显示内连接:带着条件去查询结果,效率高一些 --外连接查询 --左外连接(显示左边表格所有的数据。) select *from class c left outer join student s on c.cNumber=s.ClassNumber; --右外连接 select *from class c right outer join student s on c.cNumber=s.ClassNumber; ### 3、子查询 ### --子查询 例如:查询高一班的所有同学的信息 1、查询班级表中id为1 select *from class where className='高一(1)班' 2、再得出CNumber=1的所有学生信息 select *from student where classNumber=1 3、得到子查询 select *from student where classNumber=(select cNumber from class where className='高一(1)班')
还没有评论,来说两句吧...