sql增加約束


--主鍵約束(Primary Key constraint):要求主鍵列的數據唯一,並且不允許為空。

--唯一約束(Unique Constraint):要求該列唯一,允許為空,但只能出現一個空值。

--檢查約束(Check Constraint):某列取值范圍限制、格式限制等,如有關年齡的約束。

--默認約束(Default Constraint):某列的默認值,如我們的男性同學較多,性別默認為男。

--外鍵約束(Foreign Key):用於在兩表之間建立關系需要制定引用主表的哪一列。

 

 

語法如下

 

alter table 表名

add constraint 約束名 約束類型具體的約束說明

 

 

示例:

--添加主鍵約束

alter table stuInfo

add constraint PK_stuNo primary key(stuNo)

--添加唯一鍵約束

alter table stuInfo

add constraint UQ_stuID unique(stuID)

--添加默認約束

alter table stuInfo

add constraint DF_stuAddress default('地址不詳') for stuAddress

--添加檢查約束

alter table stuInfo

add constraint CK_stuAge check(stuAge between 15 and 40)

--添加外鍵約束

alter table stuInfo

add constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)

 

 

刪除約束

 

alter table 表名 drop constraint 約束名

【轉自】http://blog.sina.com.cn/s/blog_63a48d250100smu3.html

 

另外附:

主鍵:

添加列語法:ALTER TABLE 表名
Add 列名 類型 ...
添加主鍵語法:ALTER TABLE 表名
ADD CONSTRAINT 主鍵名 PRIMARY KEY(列名)

1.新建一數據表,里面有字段id,將id設為為主鍵 

create table tb(id int,constraint pkid primary key (id)) 
create table tb(id int primary key ) 

2.新建一數據表,里面有字段id,將id設為主鍵且自動編號 

create table tb(id int identity(1,1),constraint pkid primary key (id)) 
create table tb(id int identity(1,1) primary key ) 

3.已經建好一數據表,里面有字段id,將id設為主鍵 

alter table tb alter column id int not null 
alter table tb add constraint pkid primary key (id) 

4.刪除主鍵 

Declare @Pk varChar(100); 
Select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('tb') and xtype='PK'; 
if @Pk is not null 
exec('Alter table tb Drop '+ @Pk) 

5.也可以添加列時直接指定是主鍵

alter table tb add id int not null identity(1,1) primary key (id) 

 

 

再附: 常用sql語句

新建表: 
create table [表名] 

[自動編號字段] int IDENTITY (1,1) PRIMARY KEY , 
[字段1] nVarChar(50) default \'默認值\' null , 
[字段2] ntext null , 
[字段3] datetime, 
[字段4] money null , 
[字段5] int default 0, 
[字段6] Decimal (12,4) default 0, 
[字段7] image null , 


刪除表: 
Drop table [表名] 

插入數據: 
INSERT INTO [表名] (字段1,字段2) VALUES (100,\'51WINDOWS.NET\') 

刪除數據: 
DELETE FROM [表名] WHERE [字段名]>100 

更新數據: 
UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWS.NET\' WHERE [字段三] = \'HAIWA\' 

新增字段: 
ALTER TABLE [表名] ADD [字段名] NVARCHAR (50) NULL 

刪除字段: 
ALTER TABLE [表名] DROP COLUMN [字段名] 

修改字段: 
ALTER TABLE [表名] ALTER COLUMN [字段名] NVARCHAR (50) NULL 

重命名表:(Access 重命名表,請參考文章:在Access數據庫中重命名表) 
sp_rename \'表名\', \'新表名\', \'OBJECT\' 

新建約束: 
ALTER TABLE [表名] ADD CONSTRAINT 約束名 CHECK ([約束字段] <= \'2000-1-1\') 

刪除約束: 
ALTER TABLE [表名] DROP CONSTRAINT 約束名 

新建默認值 
ALTER TABLE [表名] ADD CONSTRAINT 默認值名 DEFAULT \'51WINDOWS.NET\' FOR [字段名] 

刪除默認值 
ALTER TABLE [表名] DROP CONSTRAINT 默認值名 

刪除Sql Server 中的日志,減小數據庫文件大小 
dump transaction 數據庫名 with no_log 
backup log 數據庫名 with no_log 
dbcc shrinkdatabase(數據庫名) 
exec sp_dboption \'數據庫名\', \'autoshrink\', \'true\' 

\\\'添加字段通用函數 
Sub AddColumn(TableName,ColumnName,ColumnType) 
Conn.Execute(\"Alter Table \"&TableName&\" Add \"&ColumnName&\" \"&ColumnType&\"\") 
End Sub 

\\\'更改字段通用函數 
Sub ModColumn(TableName,ColumnName,ColumnType) 
Conn.Execute(\"Alter Table \"&TableName&\" Alter Column \"&ColumnName&\" \"&ColumnType&\"\") 
End Sub 

\\\'檢查表是否存在 

sql=\"select count(*) as dida from sysobjects where id = object_id(N\'[所有者].[表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1\" 

set rs=conn.execute(sql) 

response.write rs(\"dida\")\'返回一個數值,0代表沒有,1代表存在 


判斷表的存在: 
select * from sysobjects where id = object_id(N\'[dbo].[tablename]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1 

某個表的結構 
select * from syscolumns where id = object_id(N\'[dbo].[你的表名]\') and OBJECTPROPERTY(id, N\'IsUserTable\') = 1 


免責聲明!

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



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