使用SQL语句向已有数据表添加约束

如果向存在数据的表里添加约束,有可能会出现数据不符合检查约束而造成添加约束失败。

如:

这是一个表,为身份证号添加检查约束。

USE DEmo--指向当前操作的数据库
GO
ALTER  TABLE Employee
ADD  CONSTRALNT CK_EmployeeID CHECK(LEN(EmployeeID=18)

然后会出现

报错意思是数据表里面的身份证号现有数据有不等于18的,与检查约束冲突,会添加失败。

用ALTER  TABLE Employee+ WITH NOCHECK可以解决。

WITH NOCHECK表示:

对表中现有的数据不做检查,只对添加约束之后在录入的数据进行检查。

时间: 2025-01-14 13:02:43

使用SQL语句向已有数据表添加约束的相关文章

修改数据表——添加约束

比如,原来数据表根本就没有约束,或者说,约束不够.那么如何来添加约束呢? 添加约束 1.添加主键约束(只能一个) 2.添加唯一约束(可以多个) 3.添加外键约束() 4.添加默认约束() 现在,先创建 create table user2( username varchaer(10) not null , pid smallint unsigned ); show columns from user2; alter table user2 add id smallint unsigned ; s

SQL笔记-第二章,数据表的创建和管理

数据类型 分5类:整数.数值.字符相关.日期时间以及二进制 1.整数 数据库系统 类型 说明 MYSQL tinyint [unsigned] 一个很小的整数.有符号的范围是-128 到127,无符号的范围是0 到255. smallint [unsigned] 一个小整数.有符号的范围是-32768到32767,无符号的范围是0 到65535. mediumint [unsigned] 一个中等大小整数.有符号的范围是-8388608到8388607,无符号的范围是0到16777215. in

sql server 对已有数据的表,添加核查约束 [失败],请使用with nocheck 子句

一.在已有数据表中,添加一个约束,但不让这个约束使用到已存在的数据中,在执行ALTER TABLE语句添加时使用WITH NOCHECK子句,这样新增的约束就不会去约束已存在的数据,而只会对新增的数据进行约束检查: alter table [tablename] with nochek add constraint [ ck_XXX] check (核查条件) 二.NOCHECK还可以禁用约束,禁用就不用删除这个约束: alter table [tablename] nocheck constr

mysql更改已有数据表的字符集,保留原有数据内容

mysql更改已有数据表的字符集,保留原有数据内容     原文网址:http://blog.csdn.net/learn_2/article/details/6460370 环境:在应用开始阶段没有正确的设置字符集,在运行一段时间以后才发现存在不能满足需求需要调整,又不想丢弃这段时间的数据,那么就需要进行字符集的修改.字符集的修改不能直接通过"alter database character set *** " 或者 "alter table tablename chara

SQL语句汇总(终篇)—— 表联接与联接查询

既然是最后一篇那就不能只列出些干枯的标准语句,更何况表联接也是SQL中较难的部分,所以此次搭配题目来详细阐述表联接. 上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. 而表联接是通过笛卡尔乘积将表进行横向联接,所谓的通过笛卡尔乘积简单说就是两表的行依次相联再相加.要想更详细的理解可以百度下,毕竟本文主要是汇总SQL语句. 现在有如下两张表: 这是

sql语句查询重复的数据

查找所有重复标题的记录:SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORDER BY Title DESC一.查找重复记录1.查找全部重复记录Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)2.过滤重复记录(只显示一条)Select * From HZT Whe

SQL语句汇总(一)——数据库与表的操作以及创建约束

首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易出错.博主希望通过此文来战胜自己的健忘,如果大家认可也可以保留起来. "SQL"是 "Structured Query Language" 即“结构化查询语言”的简称,它是用来管理关系型数据库的. 其包括: –数据定义语言(DDL) –数据查询语言(DQL) –数据操作

sql Server中临时表与数据表的区别

sql server 中临时表与数据表的区别 1.如何判断临时表和数据表已生成 --如何判断临时表是否已创建--- if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#Temp_Student')) begin print '存在临时表'; end else begin print '不存在临时表'; end --如何判断数据表是否已创建--- if exists(select * from sys.ta

怎样用sql语句复制表table1到表table2的同时复制主键

原文:怎样用sql语句复制表table1到表table2的同时复制主键 在从table1表复制到table2的时候,我们会用语句: select * into table2 from table1 但这个语句并不能在复制数据的同时,复制主键. 下面的代码通过动态语句,来实现在复制数据的同时,也会复制主键: if OBJECT_ID('table1') is not null drop table table1 go create table table1 ( id int , idd int,