sql创建表约束,sql创建表约束取值范围
SQL中怎样在创建表的同时创建约束
create?table?A?
(?
Id?int?primary?key?identity,
names?nvarhcar(50),
foreign?key(Id)?references?B(Id)?--b表的id作为a表的外键
)?
create?table?B
(
Id?int?primary?key?identity,
names
)
数据库用SQL语言建表,什么是完整性约束?请问如何写出各种完整性约束?
一、数据的完整性
实体完整性
实体完整性简单的说,就是将表中的每一行看作一个实体。实体完整性要求表的标示符列或主键的完整性。可以通过建立唯一索引、PRIMARY KEY约束、UNIQUE约束,以及列的IDENTITY属性来实施实体完整性。
域完整性
域完整性是指给定列的输入有效性。要求表中指定列的数据具有正确的数据类型、格式和有效的数据范围。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过 CHECK 约束和规则)或可能值的范围。域完整性通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT 定义、NOT NULL 定义和规则来实现。
引用完整性
引用完整性又称参照完整性。引用完整性维持被参照表和参照表之间的数据一致性,他通过主键(PRIMARY KEY)约束和外键(FOREIGN KEY)约束来实现。
用户定义完整性
二、约束操作
与表相关的约束
在SQL 2008中,常用有6种约束,分别是NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY,DEFAULT和CHECK.
--添加主键约束(即primary key约束)
alter table goods add constraint pk_gid primary key(gid)
--1.删除主键约束
alter table goods drop pk_gid
--添加唯一约束(即unique约束)
alter table goods add constraint uq_gname unique(gname)
--删除唯一约束:仿1.
--添加缺省约束(即default约束)
alter table goods add constraint def_gtel default 0000-00000000 for gtel
--删除缺省约束:仿1.
--添加检查约束(即check约束)
alter table goods add constraint ck_gprice check(gprice500)
--删除check约束:仿1.
--创建表2
create table g_p
(
wno int identity(1,1) primary key,
gno int
)
--添加外键约束(即foreign key约束)
alter table g_p
add constraint fk_gno
foreign key(gno) references goods(gid)
--删除外键约束:仿1.
--使用newid()
select newid()--生成全球唯一的ID号
create table customer
(
custID uniqueidentifier not null default newid(),
customer char(30) not null
)
insert customer values(newid(),\''\''accp\''\'')--向customer中插入信息
-----------------------------------慢慢研究----
sql 创建表 日期约束
CREATE TABLE 学生基本信息 ( [Sno] INT NOT NULL IDENTITY(10000,1), [Sname] NVARCHAR(20) NOT NULL, [Ssex] NVARCHAR(5) NOT NULL, [Sage] INT NOT NULL, [Sdate] DATETIME NOT NULL, [Sp] NVARCHAR(25) NOT NULL, [Sdept] NVARCHAR(25) NOT NULL, CONSTRAINT xsjbxx_pk_sno PRIMARY KEY([Sno]), CONSTRAINT xsjbxx_ck_sno CHECK([Sno] BETWEEN 10000 AND 99999), CONSTRAINT xsjbxx_ck_sname CHECK(LEN(Sname)20), CONSTRAINT xsjbxx_ck_ssex CHECK([Ssex]='男' OR [Ssex]='女'), CONSTRAINT xsjbxx_ck_Sdate CHECK([Sdate] BETWEEN '2003-5-1' AND GETDATE()) ) 我试过了可以正常运行
SQL中的几种约束的创建与删除
约束的目的就是确保表中的数据的完整性。
常用的约束类型如下:
主键约束:(Primary Key constraint) 要求主键列唯一,并且不允许为空
唯一约束:(Unique Constraint) 要求该列唯一,允许为空,但只能出现一个空值
检查约束:(Check Constraint) 某列取值范围限制、格式限制等。如有关年龄的限制
默认约束:(Default Constraint) 某列的默认值,如我们的男性学员比较多,性别默认为男
外键约束:(Foreign Key Constraint) 用于在两表之间建立关系,需要指定引用主表的哪一列
一、添加约束
在创建表时,我们可以在字段后添加各种约束,但一般不这样混用,推荐将添加约束和建表的语句分开编写。
添加约束的语法如下:
Code:
Alter Table 表名
Add Constraint 约束名 约束类型 具体的约束类型
上述语法标识修改某个表,添加某个约束,其中约束名的命名规则推荐采用"约束类型_约束字段"这样的形式。
Code:
---添加主键约束
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 stuMarks
Add Constraint FK_stuNo foreign key(stuNo) references stuInfo(stuNo)
二、删除约束
如果错误的添加了约束,则可以删除约束
删除约束的语法如下:
Code:
Alter Table 表名
Drop Constraint 约束名
附加:在创建表的时候同时添加约束的写法:
Code:
use stuDB
go
if exists(select * from Sysobjects where name = 'stuInfo')
drop table stuInfo
go
create table stuInfo
(
stuName varchar(20) not null primary key(stuName)
,stuID int not null unique(stuID)
,stuAddress varchar(20) not null default('地址不详')
,stuAge int not null check(stuAge between 15 and 40)
)
SQL数据库创建表表 'dbo.Student' 的表级别约束未指定列列表怎么办?
如果您要在 SQL 数据库中创建一个名为 "dbo.Student" 的表,并且想要指定一个表级别约束,但没有指定列列表,您可以使用下面的 SQL 语句来完成这个操作:
CREATE TABLE dbo.Student (
-- 指定列的名称、数据类型和约束
);
-- 添加表级别的约束
ALTER TABLE dbo.Student
ADD CONSTRAINT constraint_name constraint_type (column_list);
其中,constraint_name 是您给表级别约束命名的名称,constraint_type 是约束的类型(例如 PRIMARY KEY 或 FOREIGN KEY),column_list 是您想要指定约束的列的列表。
例如,如果您想要为 "dbo.Student" 表添加一个名为 "PK_Student_ID" 的主键约束,指定 "ID" 列作为主键列,可以使用下面的 SQL 语句来完成这个操作:
CREATE TABLE dbo.Student (
ID INT NOT NULL,
-- 其他列的定义
);
ALTER TABLE dbo.Student
ADD CONSTRAINT PK_Student_ID PRIMARY KEY (ID);
希望这些信息能够帮助您解决问题。如果您还有其他问题,欢迎随时继续提问。
用sql语句建表和设置约束
create table 选课及成绩表
(课程号 VARCHAR(20) CHECK (课程号 LIKE '[A-Z][A-Z][0-9][0-9][0-9][0-9]),
学号 VARCHAR(20),
constraint pk_pr primary key(课程号, 学号),
constraint fk_学号 foreign key(学号 ) REFERENCES 学生情况表.学号,
constraint fk_课程号 foreign key(课程号 ) REFERENCES 课程档案表.课程号
)