㈠ sql的主鍵和外鍵怎麼設
一、主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,那他就可以是A表的外鍵。
主鍵和外鍵約束的方法:
create table Student --建表格式:create table 自定義的表名
( --欄位名一般為有一定意義的英文
StudentName nvarchar(15), -- 格式:欄位名類型()括弧裡面的是允許輸入的長度
StudentAge int, --int型的後面不需要接長度
StudentSex nvarchar(2) --最後一個欄位後面不要逗號
)
--在創建表時就可以對欄位加上約束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName nvarchar(15) not null, --加非空約束,不加"not null" 默認為:可以為空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯的表名(欄位名)
StudentAge int DEFAULT ((0)), --加默認值約束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加檢查約束,格式:check (條件表達式)
)
--如果在表創建好了以後再加約束,則格式分別為:
-- 主鍵:
alter table 表名
add constraint PK_欄位名--"PK"為主鍵的縮寫,欄位名為要在其上創建主鍵的欄位名,'PK_欄位名'就為約束名
primary key (欄位名) --欄位名同
--唯一約束:
alter table 表名
add constraint UQ_欄位名
unique (欄位名
--外鍵約束:
alter table 表名
add constraint FK_欄位名--"FK"為外鍵的縮寫
foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'
alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)
alter table 成績表 add constraint FK_StudentNo foreign key (StudentNo) references Student(StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。
--檢查約束:
alter table 表名
add constraint CK_欄位名
check (條件表達式) --條件表達式中的條件用關系運算符連接
--默認值約束:
alter table 表名
add constraint DF_欄位名
default '默認值' for 欄位名--其中的'默認值'為你想要默認的值,注意'for'
--刪除創建的約束:
alter table 表名
drop constraint 約束名--約束名為你前面創建的如:PK_欄位這樣的約束名
--注意:如果約束是在創建表的時候創建的,則不能用命令刪除
--只能在'企業管理器'裡面刪除
-- 獲取SqlServer中表結構
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length
FROM syscolumns,systypes
WHERE syscolumns.xusertype = systypes.xusertype
AND syscolumns.id = OBJECT_ID('Student')
-- 單獨查詢表遞增欄位
SELECT [name] FROM syscolumns WHERE
id = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1
-- 獲取表主外鍵約束
EXEC sp_helpconstraint 'StuResults'
-- 查詢表主鍵外鍵信息
SELECT sysobjects.id objectId,OBJECT_NAME(sysobjects.parent_obj) tableName,
sysobjects.name constraintName, sysobjects.xtype AS constraintType,
syscolumns.name AS columnName
FROM sysobjects INNER JOIN sysconstraints
ON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D')
AND sysobjects.id = sysconstraints.constid
LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id
WHERE OBJECT_NAME(sysobjects.parent_obj)='StuResults'
㈡ SQL如何建立外鍵請教高手了
資料庫mysql
建立外鍵的前提:
本表的列必須與外鍵類型相同(外鍵必須是外表主鍵)。
外鍵作用:
使兩張表形成關聯,外鍵只能引用外表中的列的值!
指定主鍵關鍵字:
foreign
key(列名)
引用外鍵關鍵字:
references
<外鍵表名>(外鍵列名)
事件觸發限制:
on
delete和on
update
,
可設參數cascade(跟隨外鍵改動),
restrict(限制外表中的外鍵改動),set
Null(設空值),set
Default(設默認值),[默認]no
action
例如:
outTable表
主鍵
id
類型
int
創建含有外鍵的表:
create
table
temp(
id
int,
name
char(20),
foreign
key(id)
references
outTable(id)
on
delete
cascade
on
update
cascade);
說明:把id列
設為外鍵
參照外表outTable的id列
當外鍵的值刪除
本表中對應的列篩除
當外鍵的值改變
本表中對應的列值改變。
自己實踐
才能完全了解外鍵的作用
關鍵是:事件觸發限制的作用
㈢ sql怎麼創建表
1.1 創建表方法
創建表是指在已存在的資料庫中建立新表。這是建立資料庫最重要的一步,是進行其他操作的基礎。
1.1.1 創建表的語法形式
CREATE TABLE 表名 (
屬性名 數據類型 [ 完整性約束條件 ],
屬性名 數據類型 [ 完整性約束條件 ],
......
屬性名 數據類型 [ 完整性約束條件 ],
)[ 表類型 ] [ 表字元集 ];
SQL 是不區分大小寫。下面將會具體介紹SQL,這種創建表是通過什麼方式起來的效果怎麼樣?
命名規范:
1. 命名富有意義 ( 英文或英文組合 )
2. 自定義名稱使用小寫
3. MySQL 語句使用大寫
CREATE TABLE IF NOT EXISTS data_house(
id INT,
name VARCHAR(20);
gender BOOLEAN,
) Engine = MyISAM;
上面 SQL 語句的含義是:如果不存在 text1 表,就創建它,包含 3 個欄位 id 、 name 和 gender ,它們的類型分別是整形、字元型和布爾型,創建的表的類型是 MyISAM 。
完整性約束條件表
PRIMARY KEY 標識該屬性為該表的主鍵,可以唯一的標識對應的元組
FOREIGN KEY 標識該屬性為該表的外鍵,是與之聯系的某表的主鍵
NOT NULL 標識該屬性不能為空
UNIQUE 標識該屬性的值是唯一的
AUTO_INCREMENT 標識該屬性的值自動增加,這是 MySQL 的 SQL 語句的特色 (null,0)
DEFAULT 標識該屬性設置默認值 (not null defualt 0,not null default 0.0,not null default '')
1.1.2 設置表的主鍵
主鍵是表的一個特殊欄位。該欄位能惟一地標識該表中的每條信息。主鍵和記錄的關系,如同身份證和人的關系。主鍵用來標識每個記錄,每個記錄的主鍵值都不同。身份證是用來標明人的身份,每個人都具有惟一的身份證號。設置表的主鍵指在創建表時設置表的某個欄位為該表的主鍵。
主鍵的主要目的是幫組 MySQL 以最快的速度查找到表中的某一條信息。
主鍵必須滿足的條件:
1. 主鍵必須是唯一的,表中任意兩條記錄的主鍵欄位的值不能相同;
2. 主鍵的值是非空值;
3. 主鍵可以是單一的欄位,也可以是多個欄位組合。
1. 單欄位的主鍵:
CREATE TABLE student1 (
stu_id INT PRIMARY KEY ,
stu_name VARCHAR(20) NOT NULL,
stu_gender BOOLEAN
) Engine = InnoDB;
2. 多欄位主鍵 :
CREATE TABLE student2 (
stu_id INT,
course_id INT,
grade FLOAT,
PRIMARY KEY( stu_id, course_id )
)Engine = InnoDB;
1.1.3 設置表的外鍵
外鍵是表的一個特殊欄位。如果欄位 sno 是一個表 A 的屬性,且依賴於表 B 的主鍵。那麼,稱表 B 為父表,表 A 為子表, sno 為表 A 的外鍵。通過 sno 欄位將父表 B 和子表 A 建立關聯關系。設置表的外鍵指在創建表設置某個欄位為外鍵。
設置外鍵的原則:必須依賴於資料庫中已存在的父表的主鍵;外鍵可以為空值。
外鍵的作用 : 是建立該表與其父表的關聯關系。父表中刪除某條信息時,子表中與之對應的信息也必須有相應的改變。例如, stu_id 就 student 表的主鍵, stu_id 是 grade 表的外鍵。當 stu_id 為 '123' 同學退學了,需要從 student 表中刪除該學生的信息。那麼, grade 表中 stu_id 為 '123' 的所有信息也應該同時刪除。
CONSTRAINT 外鍵別名 FOREIGN KEY ( 屬性 1.1, 屬性 1.2... 屬性 1.n);
REFERENCES 表名 ( 屬性 2.1, 屬性 2.2,..., 屬性 2.n)
CREATE TABLE student3 (
id INT PRIMARY KEY,
stu_id INT,
course_id INT,
# 設置外鍵
CONSTRAINT C_fk FOREIGN KEY (stu_id, course_id) REFERENCES student2(stu_id, course_id)
) Engine = InnoDB;
1.1.4 設置表的非空約束
非空性是指欄位的值不能為空值 (NULL) 。非空約束將保證所有記錄中該欄位都有值。如果用戶新插入的記錄中,該欄位為空值,則資料庫系統會報錯。例如,在 id 欄位加上非空約束, id 欄位的值就不能為空。如果插入記錄的 id 欄位的值為空,該記錄將不能插入。設置表的非空約束是指在創建表時為表的某些特殊欄位加上 NOT NULL 約束條件。設置非空約束的基本語法規則如下:
屬性名 數據類型 NOT NULL
㈣ sql用命令創建主鍵與外鍵,怎麼操作
用命令創建主鍵與外鍵方法如下:
㈤ sql用命令創建主鍵與外鍵。
創建SQL的主鍵和外鍵約束的方法:
--在創建表時就可以對欄位加上約束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName nvarchar(15) not null, --加非空約束,不加"not null" 默認為:可以為空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯的表名(欄位名)
StudentAge int DEFAULT ((0)), --加默認值約束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加檢查約束,格式:check (條件表達式)
)
--如果在表創建好了以後再加約束,則格式分別為:
-- 主鍵:
alter table 表名
add constraint PK_欄位名--"PK"為主鍵的縮寫,欄位名為要在其上創建主鍵的欄位名,'PK_欄位名'就為約束名
primary key (欄位名) --欄位名同上
--唯一約束:
alter table 表名
add constraint UQ_欄位名
unique (欄位名)
--外鍵約束:
alter table 表名
add constraint FK_欄位名--"FK"為外鍵的縮寫
foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'
alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)
alter table 成績表 add constraint FK_StudentNo foreign key (StudentNo) references Student (StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。
--檢查約束:
alter table 表名
add constraint CK_欄位名
check (條件表達式) --條件表達式中的條件用關系運算符連接
--默認值約束:
alter table 表名
add constraint DF_欄位名
default '默認值' for 欄位名--其中的'默認值'為你想要默認的值,注意'for'
--刪除創建的約束:
alter table 表名
drop constraint 約束名--約束名為你前面創建的如:PK_欄位這樣的約束名
--注意:如果約束是在創建表的時候創建的,則不能用命令刪除
--只能在'企業管理器'裡面刪除
參考資料 : http://www.studyofnet.com/news/92.html
希望以上的回答能夠幫到你
㈥ sql中創建組合主鍵和組合外鍵
聯合主鍵:primary key(id,name)
外鍵:FOREIGN KEY (id,name) REFERENCES user(id,name)
註:聯合主鍵的外鍵必須同時引用兩個主鍵無法單個引用
㈦ sql中創建組合主鍵和組合外鍵
聯合主鍵:primary
key(id,name)
外鍵:FOREIGN
KEY
(id,name)
REFERENCES
user(id,name)
註:聯合主鍵的外鍵必須同時引用兩個主鍵無法單個引用
㈧ Sql server怎樣創建主外鍵關系
Sqlserver怎樣創建主外鍵關系的方法。
如下參考:
1.為了幫助你理解,用一個例子來幫助你理解。它基本上是指通過引用表2中的欄位來約束表1中的欄位。
㈨ sql中什麼叫主鍵表,什麼叫外鍵表
主鍵表和外建表是相對來說的,簡單的說就是一個表的主鍵是另外一張表的外鍵。
例如
class
班級表
主要欄位如下:
classId
PRIMARY
KEY(主鍵)班級ID
className
班級名稱
studen
學生表
主要欄位如下
stuId
PRIMARY
KEY(主鍵)學生id
stuName
學生姓名
classId
FOREIGN
KEY(外建)所屬班級id
class表中的主鍵classId
是student表中的外建則認為class為主鍵表
student為外鍵表