目錄
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)班')