數據庫的外鍵約束、多表查詢

目錄

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章