SQL主、外鍵,子查詢


主鍵

數據庫主鍵是指表中一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。當創建或更改表時可通過定義 PRIMARY KEY約束來創建主鍵。一個表只能有一個 PRIMARY KEY 約束,而且 PRIMARY KEY 約束中的列不能接受空值。由於 PRIMARY KEY 約束確保唯一數據,所以經常用來定義標識列。

主鍵的作用

主鍵的主要作用如下:

(1)保證實體的完整性;

(2)加快數據庫的操作速度;

(3) 在表中添加新記錄時,數據庫會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復;

(4) 數據庫自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的記錄。

 

主鍵具有的特點:唯一性、非空性。

 

設置主鍵語句示例:

code int primary key,   主鍵不能為空,不能重復,確保唯一性

設置自增長主鍵語句示例:

code int primary key identity(1,1)   從1開始,每次增長1,添加values時不用添加此列

設置外鍵:

      在要設置外鍵的表上右鍵,選擇設計,在需要設置外鍵的列名前右鍵,如下圖:

選擇關系單擊,出現對話框,單擊添加,單擊表和列規范后面的省略號,如下圖:

在出現的界面做出如下操作:

點擊確定,再點擊確定,操作成功。

 

 

子查詢,又叫做嵌套查詢。

      將一個查詢語句做為一個結果集供其他SQL語句使用,就像使用普通的表一樣,被當作結果集的查詢語句被稱為子查詢。

子查詢有兩種類型:

一種是只返回一個單值的子查詢,這時它可以用在一個單值可以使用的地方,這時子查詢可以看作是一個擁有返回值的函數;

另外一種是返回一列值的子查詢,這時子查詢可以看作是一個在內存中臨時存在的數據表。

練習

建立兩個表:

1.選課ID 科目名稱 老師姓名 老師年齡

2.學號  姓名  選課ID

我就要選  A老師  教的課

我就要選  老師年齡最小的 課

某個學生選的  哪門課  哪個老師  多少歲

有幾個人選了  老師A   都叫什么

用代碼  給  學生表加一個年齡列

我就要比我小的老師教

老師A的學生里 年齡最小的

所有選擇  數學的學生 信息

所有學生選擇的老師年齡大於20的  學生信息

 

 1 create table student
 2 (
 3     scode int primary key identity(1001,1),
 4     sname varchar(10),
 5     xuanke int
 6 )
 7 create table www
 8 (
 9     tcode int primary key identity(1,1),
10     kemu varchar(18),
11     tname varchar(10),
12     age int
13 )
14 insert into www values('數學','張三',31)
15 insert into student values('AA',1)
16 select * from student
17 select * from www
18 select kemu from www where tname='張三'
19 select top 1 kemu from www order by age
20 select kemu,tname,age from www where tcode=(select xuanke from student where scode=1002)
21 select sname from student where xuanke=(select tcode from www where tname='張三')
22 alter table student
23 add sage int
24 select top 1 sname from student where xuanke=(select tcode from www where tname='張三') order by sage
25 select * from www where age<(select sage from student where scode=1003)
26 select * from student where xuanke in (select tcode from www where kemu='數學')
27 select * from student where xuanke in (select tcode from www where age>20)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM