❶ sql 主碼和外碼
表外建主鍵:alter table 課程表add constraint major_id_pk primary key(課程號);表外建外碼:alter table 成績表add constraint major_id_fk foreign key
(課程號) references 課程表(課程號);成績表外碼 課程號 參照課程表 課程號
❷ sql里的主碼和外碼的設置可以一樣嗎
主碼包含候選碼和碼,候選碼包含碼。
1、含義不同:若關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼;若一個關系有多個候選碼,其中任何一個都可以做主碼,主碼的諸屬性就正侍搭稱為主屬性;一個表中如果有一個欄位,存儲另外一個表的主鍵,這個欄位就是外鍵,又稱外碼。
2、實際操作不同:碼是可以確定一個元組的所有信息的屬性名或屬性名組。
例如在{a,b,c,d}中,假設知道a的值就能確定a,b,c,d的值,假設知道c,d的值就可以確定a,b,c,d的值,那麼{a}就是碼,{c,d}就是碼。
並且{a,b},{a,c},{a,b,c},{a,b,c,d}等也都是碼,因為它們也可以確定一個元組的所有值,即使很多餘。
候選碼的真子集中不存在碼,候選碼可以有多個。
就上面的例子而言舉拿,{a}是候選碼,{c,d}是候選碼,因為它們的真子集中不存在碼。
而諸如{a,b}並不是候選碼,因為它的真子集中含有{a
開通談好VIP解鎖全文
❸ sql server 2008如何設置外碼
用關鍵語句:foreign key ...(屬性名) references ....表名+(屬性名)
下邊舉例說明:
create table Student /*建立一個學生表*/
Sno char(8),
Sname char(6) unique not null default 'wang',
Ssex char(2) check(Ssex='男'or Ssex='女') not null,
Sage smallint not null check(Sage<150),
Sdept char(20) not null,
primary key(Sno)
create table Course /*建立課程表*/
(Cno char(3) primary key ,
Cname char(20) not null,
Cpno char(3) foreign key references Course(Cno), /*這里是自引用主碼*/
Ccredit smallint,
--foreign key Cpno references Course(Cno)
create table SC /*建立學生選課表*/
(Sno char(8) ,
Cno char(3) not null ,
Grade smallint not null,
--foreign key Sno references Student(Sno)
primary key (Sno,Cno), /*主碼由兩個屬性構成*/
foreign key (Sno) references Student(Sno), /*引用學生表的主碼Sno*/
foreign key (Cno) references Course(Cno) /*引用課程表的主碼Cno*/
(3)sql可視化設外碼擴展閱讀
SQL Server 有兩個接畝旅喊口可以認為是 SQL Server 7.0 的本機介面,即 OLE-DB 和 ODBC。DB-Library 介面也是本機的,它與 TDS 通信,但是 DB-Library 使用的迅野是 TDS 較老的版本,需要在伺服器上進行一些轉換。
現有的 DB-Library應用程序仍然可以繼續與 SQL Server 7.0 協同使用,但是很多新的功能和性能提高等好處只能通過 ODBC 和 OLE DB 才能利用。
參鎮頌考資料來源:網路-Microsoft SQL Server
❹ 怎麼在SQL server2005中為表添加外碼限制
外碼?
如果你說的是外鍵就應該這樣寫SQL語句
alter table 表名1
add constraint fk_表名1_表名2 foreign key (列名) references 表名2(列名)
可以可視化操作,用SQL Server Management Studio在表右鍵-設計,再列名右鍵-關系 裡面有設置
❺ sql,如何用sql語句對一個已經編輯好的表在設置主碼和外碼
sql中的主碼和外碼,屬於索引,SQL索引有兩種,聚集索引和非聚集索引,索引主要目的是提高了SQLServer系統的性能,加快數據的查詢速度與減少系統的響應時間
創建索引的語法:
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_name
ON{table_name|view_name}[WITH[index_property[,....n]]
說明:
UNIQUE:建立唯一索引。
CLUSTERED:建立聚集索引。
NONCLUSTERED:建立非聚集索引。
Index_property:索引屬性。
UNIQUE索引既可以採用聚集索引結構,也可以採用非聚集索引的結構,如果不指明採用的索引結構,則SQLServer系統默認為採用非聚集索引結構。
刪除索引語法:
DROPINDEXtable_name.index_name[,table_name.index_name]
說明:table_name:索引所在的表名稱。
index_name:要刪除的索引名稱。
修改索引的語法:
ALTER INDEX命令在其用來做什麼方面多少有些欺騙性。截止到現在,ALTER命令總是與修改對象的定義有關。例如ALTER表以添加或禁用約束和列。ALTER INDEX是不同的-該命令與維護有關,而與結構完全不相干。如果需修改索引的組成,那麼只能DROP然後CREATE索引,或者用DROP_EXISTING=ON選項CREATE並使用索引。
ALTER INDEX {<name of index> | ALL}
ON<table or view name>
{ REBUILD
[[ WITH (
[PAD_INDEX = {ON | OFF}]
| [[,] FILLFACTOR = <fillfactor>
| [[,] SORT_IN_TEMPDB = { ON | OFF }]
| [[,] IGNORE_DUP_KEY = { ON | OFF }]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
| [[,] ONLINE = { ON| OFF }]
| [[,] ALLOW_ROW_LOCKS = { ON | OFF }]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF }]
| [[,] MAXDOP = <max degree of parallelism>
)]
|[ PARTITION = <partition number>
[ WITH (< partition rebuild index option>
[,...N])]]]
| DISABLE
| REORGANIZE
[ PARTITION = <partition number> ]
[ WITH (LOB_COMPACTION = { ON | OFF })]
| SET ([ ALLOW_ROW_LOCKS = { ON | OFF} ]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF } ]
| [[,] IGNORE_DUP_KEY = { ON | OFF } ]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
)
}[;]
❻ 用SQL SERVER 如何在建好表後添加外碼SQL語句怎麼寫呀
1、打開SQL,選擇「WINDOWS身份驗證」,點擊連接。在左邊的框條中找到「資料庫「,右擊選擇」新建資料庫「,建立名為」test「的資料庫,其他默認。可以在資料庫下找到新建的test。
❼ sql server怎樣在現有表上創建外碼
在 SQL Server Management Studio 中,打開對象資源管理器。
在對象資源管理器中,單擊「連接」,然後選擇「SQL Server Compact Edition」。
在「連接到伺服器」對話框的「資料庫文件」下拉列表中,選擇「<新建資料庫…」。
在「創建新的 SQL Server Compact Edition 資料庫」對話框中,為新資料庫文件鍵入文件路徑和文件名。您也可以選擇默認排序順序和選擇是否要對資料庫進行加密或密碼保護。如果選擇對資料庫進行加密或密碼保護,請鍵入密碼,然後單擊「確定」。
單擊「連接」,連接到新的 SQL Server Compact Edition 資料庫。此資料庫現在將顯示在對象資源管理器中。
❽ sql,如何用sql語句對一個已經編輯好的表在設置主碼和外碼
--修改主鍵
ALTER
TABLE
tablename
--修改表
ADD
CONSTRAINT
tb_PRIMARY
PRIMARY
KEY
CLUSTERED
(列名)
/*將你要設置為主鍵約束的列*/
--修改約束ALTER
TABLE
銷售表
--修改表
ADD
CONSTRAINT
ck_sl
--創建檢查約束
CHECK
(數量
>=
1
and
數量
<=
10000)
--添加約束條件
--修改外鍵alter
table
表名
add
constraint
外鍵名稱
foreign
key
(欄位)
references
關系表名
(關系表內欄位)
❾ 在SQL SERVER中,外碼是怎麼建立的有什麼作用
外碼就是其他欄位的主碼,外碼的取值只能是主碼。如果取其他的值就會報錯。建立的時候指定是哪個表中的哪個欄位的外碼就行
❿ SQL語言創建表時候怎麼定義主碼和外碼
SQL語言創建表時候用Primary Key(屬如局性名)定義主碼,用Foreign Key(屬性名)定義外碼。
主碼是一種唯一關鍵字,表定義的一部分。一個表的主碼可以由多個關鍵字共同組成,並且主碼的列不能包含空值。主碼是可選的,並且可在 CREATE TABLE語句中用Primary Key(屬性名)定義。
將一個表的值放入第二個表來表示關聯,所使用的值是第一個表的主鍵值(在必要時可包括復合主洞雹鍵值)。此時,第二個表中保存這些值的屬性稱為外鍵,用Foreign Key(納橡帆屬性名)定義。
如:
CREATE TABLE Customer
(SID integer,
CID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID),ForeignKey(CID名));
(10)sql可視化設外碼擴展閱讀:
主碼不應包含動態變化的數據,如時間戳、創建時間列、修改時間列等。實際上,因為主碼除了唯一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主碼需要更新,則說明主碼應對用戶無意義的原則被違反了。
主碼應當由計算機自動生成。如果由人來對主碼的創建進行干預,就會使它帶有除了唯一標識一行以外的意義。一旦越過這個界限,就可能產生人為修改主碼的動機,這樣,這種系統用來鏈接記錄行、管理記錄行的關鍵手段就會落入不了解資料庫設計的人的手中。