主鍵
數據庫主鍵是指表中一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。當創建或更改表時可通過定義 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)