数据库约束怎么写

数据库约束怎么写,第1张

一、约束的分类
在SQLServer中,有3种不同类型的约束。
1、实体约束
实体约束是关于行的,比如某一行出现的值就不允许出现在其他行,例如主键
2、域约束
域约束是关于列的,对于所有行,某一列有那些约束,例如CHECK约束。
3、参照完整性约束
如果某列的值必须与其他列的值匹配,那就意味着需要一个参照完整性约束,例如外键。
二、约束命名搜索
在学习约束之前,首先来了解下为约束命名需要注意哪些地方。
SQLServer在我们不提供名称时,会自动创建名称,但是由系统自动创建的名称并不是特别有用。
例如,系统生成的主键名称可能是这样的:PK_Employees_145C0A3F。
PK代表主键(primary key),Employees代表在Employees表中,而剩下的“145C0A3F”部分是为了保证唯一性而随机生成的值。只有通过脚本创建才会得到这种值,如果是通过Managerment Studio创建表,那么就直接是PK_Employees。

在创建表的时候,你直接在该字段后加上代表定义主键的关键字就行了。
说些题外话,在我做项目的时候设计数据字典的时候,用到联合主键的可能性不大,用到3个字段以上的联合主键的可能性几乎没有~
所以,一般联合主键2个字段就很多了。

表创建了么如果创建了,用ALTER TABLE table_name ADD PRIMRAY KEY ON (学生学号)如果没创建CREATE TABLE table_name(学生学号 类型 PRIMARY KEY,其他列)

五大约束
1—-主键约束(Primay Key Coustraint) 唯一性,非空性
2—-唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个
3—-检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等)
4—-默认约束 (Default Counstraint) 该数据的默认值
5—-外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列
五大约束的语法示例
1—-添加主键约束(将stuNo作为主键)
alter table stuInfo
add constraint PK_stuNo primary key (stuNo)
2—-添加唯一约束(身份z号唯一,因为每个人的都不一样)
alter table stuInfo
add constraint UQ_stuID unique(stuID)
3—-添加默认约束(如果地址不填 默认为“地址不详”)
alter table stuInfo
add constraint DF_stuAddress default (‘地址不详’) for stuAddress
4—-添加检查约束 (对年龄加以限定 15-40岁之间)
alter table stuInfo
add constraint CK_stuAge check (stuAge between 15 and 40)
alter table stuInfo
add constraint CK_stuSex check (stuSex=’男’ or stuSex=’女′)
5—-添加外键约束 (主表stuInfo和从表stuMarks建立关系,关联字段stuNo)
alter table stuInfo
add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)
约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。

1(SQL 方式) ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY (以","分隔的属性列表)
2( *** 作方式) 在表设计器中选中两个字段再设为主键

新建表:
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,\'51WINDOWSNET\')
删除数据:
DELETE FROM [表名] WHERE [字段名]>100
更新数据:
UPDATE [表名] SET [字段1] = 200,[字段2] = \'51WINDOWSNET\' 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 \'51WINDOWSNET\' 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)
ConnExecute(\"Alter Table \"&TableName&\" Add \"&ColumnName&\" \"&ColumnType&\"\")
End Sub
\\\'更改字段通用函数
Sub ModColumn(TableName,ColumnName,ColumnType)
ConnExecute(\"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=connexecute(sql)
responsewrite 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

在sql中唯一约束和主键约束应用性在我的理解上几乎是一样的
就是确保某一个列或者某几个列的(组合)值唯一
而两者的区别在于单个表上唯一约束可以定义多个,而且字段可以为空
主键约束在单个表上只能定义一个,而且字段不能为空
应用性上,单个表涉及到人员的,只需要定义一个主键约束就可以了
希望能帮到你

表有唯一的主键约束。表的主键可以保护一个或多个列,主键约束可与NOT
NULL约束共同作用于每一数据列。NOT
NULL约束和唯一性约束的组合将保证主键唯一地标识每一行。像唯一性约束一样,主键由B-tree索引增强。
创建主键约束使用CREATE
TABLE语句与表一起创建,如果表已经创建了,可以使用ALTER
TABLE语句。
CREATE
TABLE
policies
(policy_id
NUMBER
CONSTRAINT
pk_policies
PRIMARY
KEY,
holder_name
VARCHAR2(40),
gender
VARCHAR2(1),
marital_status
VARCHAR2(1),
date_of_birth
DATE
);
与唯一性约束一样,如果主键约束保护多个数据列,那么必须作为一个表约束创建。
CREATE
TABLE
insured_autos
(policy_id
NUMBER,
vin
VARCHAR2(40),
coverage_begin
DATE,
coverage_term
NUMBER,
CONSTRAINT
pk_insured_autos
PRIMARY
KEY
(policy_id,vin)
USING
INDEX
TABLESPACE
index
STORAGE
(INITIAL
1M
NEXT
10M
PCTINCREASE
0)
);
禁用或删除主键必须与ALTER
TABLE
语句一起使用
ALTER
TABLE
policies
DROP
PRIMARY
KEY;

ALTER
TABLE
policies
DISABLE
PRIMARY
KEY;


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13146582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-11
下一篇 2023-06-11

发表评论

登录后才能评论

评论列表(0条)

保存