--主鍵約束(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