主鍵,子外來鍵查詢

2022-05-31 18:39:12 字數 3102 閱讀 9916

主鍵

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

create table student

( scode int primary key identity(1001,1),

sname varchar(10),

xuanke int

)create table teacher

( tcode int primary key identity(1,1),

kemu varchar(18),

tname varchar(10),

age int

)insert into teacher values('數學','張三',31)

insert into teacher values('語文','李四',36)

insert into teacher values('英語','王五',28)

insert into teacher values('物理','趙六',50)

insert into teacher values('化學','馮七',24)

insert into student values('aa',1)

insert into student values('bb',2)

insert into student values('cc',3)

insert into student values('dd',4)

insert into student values('ee',5)

insert into student values('ff',5)

select * from student

select * from teacher

select kemu from teacher where tname='張三'

select top 1 kemu from teacher order by age

select kemu,tname,age from teacher where tcode=(select xuanke from student where scode=1002)

select sname from student where xuanke=(select tcode from teacher where tname='張三')

alter table student

add sage int

select top 1 sname from student where xuanke=(select tcode from teacher where tname='張三') order by sage

select * from teacher where age

select * from student where xuanke in (select tcode from teacher where kemu='數學')

select * from student where xuanke in (select tcode from teacher where age>20)

mysql外來鍵 子查詢

外來鍵 foreign key,外面的鍵 鍵不在自己表中 如果一張表中有乙個字段 非主鍵 指向另外一張表的主鍵,那麼該欄位稱之為外來鍵。增加外來鍵 外來鍵可以在建立表的時候或者建立表之後增加 但是要考慮資料的問題 建立表的時候增加外來鍵 在所有的表字段之後,使用foreign key 外來鍵字段 r...

查詢表主鍵 外來鍵

專案中用到的一些sql oracle下的 總結 1 查詢表的所有索引 包括索引名,型別,構成列 select t.i.index type from user ind columns t,user indexes i where t.index name i.index name and t.tab...

mysql 主鍵 外來鍵

1 候選鍵 關係中的乙個屬性組,其值能唯一標識乙個元組,若從該屬性組中去掉任何乙個屬性,它就不具有這一性質了,這樣的屬性組稱作候選碼。比如人的自然屬性 身高,體重,年齡,指紋樣式.2 主鍵 當有多個候選碼時,可以選定乙個作為主碼,選定的候選碼稱主鍵。主鍵是能確定一條記錄的唯一標識 比如上面例子中的指...