-
2021-01-19 08:48:21
用alter table语句:
完整用法:
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
alter_specification:
table_option ...
| ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
| ADD [COLUMN] (column_definition,...)
| ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP {INDEX|KEY} index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name [, col_name] ...
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
index_col_name:
col_name [(length)] [ASC | DESC]
index_type:
USING {BTREE | HASH}
删除 主键 和外键约束:
ALTER TABLE mytablename
DROP PRIMARY KEY
DROP FOREIGN KEY fk_symbol;
还有就是怎么样查询 约束;
你可以通过查看该表的 创建语句来 查看 约束:
SHOW CREATE TABLE mytablename;
得到ddl语句;
参考资料:http://arpoon.info/zh
更多相关内容 -
Oracle修改check约束的sql语句
2021-05-02 08:02:21开始想修改这张表的其中一个字段的约束 check约束,百度各种说不能修改check约束??只能删掉了约束,再重新修改约束。经过各种测试得出,oracle是可以修改check约束,但是也是必须需要删掉原来的约束(我天真的以为...开始想修改这张表的其中一个字段的约束 check约束,百度各种说不能修改check约束??只能删掉了约束,再重新修改约束。经过各种测试得出,oracle是可以修改check约束,但是也是必须需要删掉原来的约束(我天真的以为,修改会自动删掉,是不会的!),才能插入数据成功!!!!上代码。
(1)首先使用desc 表名字查看表结构。
desc 表名字;
也就是修改该表名字中的stat_cde,原本类型是 not null varcher2(1) ,累似于性别的标记。需要填写指定的字符。
(2)再看表约束,sql如下:
--查询约束关系
select * from user_constraints where table_name='ES_SUNING_AUTO_TASK';
查询结果如下,查询出来 stat_cde 是SPAE字符。现在需要修改成SPAEI。
(3)正确的修改 check的语句:(stat_cde是字段名字)
--更改约束关系
alter table 表名字 modify STAT_CDE VARCHAR2(1) check(STAT_CDE in('S', 'P', 'A', 'E','I'));
修改执行结果:
(4)再次查询结果,是多了一条约束记录,之前的约束是还在的。
当你再次选择插入的时候,还是会报错。因为原来既有SPAE约束,也有你新加入的SPAEI 判断约束,两条都执行。因此会报错。
执行插入语句,会报错:
insert into 表名字 (ID,ORDER_CODE,ORDER_KEY,STAT_CDE,MSG,creat_dte) values (SQ_ES_SUNING_AUTO_TASK_ID.nextval,'123',null,'I',null,sysdate);
报错结果
在行: 514 上开始执行命令时出错 -
insert into 你的表名字 (ID,ORDER_CODE,ORDER_KEY,STAT_CDE,MSG,creat_dte) values (SQ_ES_SUNING_AUTO_TASK_ID.nextval,'123',null,'I',null,sysdate)
错误报告 -
ORA-02290: check constraint (SYS_ES.SYS_C00114563) violated
(5)因此,是还需要删除你原来的约束的!并且先查找除你的contanatnt_name,后删除提交。
你的contraint name,不需要加单引号,直接复制。
--先查询一次你的contraint name
select * from user_constraints where table_name='大写表名字';
--删除约束 , SYS_C00114563 是你的contraint name,并且,不需要加单引号,直接复制
alter table 表名字 drop constraint SYS_C00114563;
(6)删除约束成功后,重新插入,即可插入成功。修改check约束完毕
最后成功解决
标签:name,约束,修改,报错,sql,Oracle,null,check
来源: https://blog.csdn.net/qq_36411874/article/details/87971883
-
SQLServer之修改CHECK约束
2020-03-31 09:01:21SQLServer之修改CHECK约束 原创小子pk了 最后发布于2018-09-05 15:20:34 阅读数 2767 收藏 展开 使用SSMS数据库管理工具修改CHECK约束 1、打开数据库,选择数据表-》右键点击-》选择设计(或者展开约束,选择约束,...SQLServer之修改CHECK约束
原创小子pk了 最后发布于2018-09-05 15:20:34 阅读数 2767 收藏
展开
使用SSMS数据库管理工具修改CHECK约束
1、打开数据库,选择数据表-》右键点击-》选择设计(或者展开约束,选择约束,右键点击,选择修改,后面步骤相同)。2、选择要修改的数据列-》右键点击-》选择CHECK约束。
3、在CHECK约束弹出框中-》选择要修改的约束-》输入约束表达式-》输入约束名和约束描述-》选择表设计器规则-》点击关闭。
4、点击保存按钮(或者ctrl+s)-》刷新表查看修改结果。
使用T-SQL脚本修改CHECK约束
CHECK约束修改规则必须首先删除现有的CHECK约束,然后使用新定义重新创建,才能使用Transact-SQL修改CHECK约束。语法:
--修改check约束
use 数据库名
go--如果约束存在则先删除
if exists(select * from sysobjects where name=约束名)
alter table 表名 drop constraint 约束名;
go--添加约束
alter table 表名
--with check --该约束是否应用于现有数据,with check表示应用于现有数据,with nocheck表示不应用于现有数据
add constraint 约束名
check
not for replication --当复制代理在表中插入或更新数据时,禁用该约束。
(约束表达式);
go--向表中添加新数据或更新表中现有数据时是否禁用该约束。check表示校验,nocheck表示不校验
--alter table 表名
--check
--constraint 表名;
--go--添加check约束描述
execute sp_addextendedproperty N'MS_Description', N'约束描述', N'SCHEMA', N'dbo', N'TABLE', N'表名', N'CONSTRAINT', N'约束名';
go示例:
--修改check约束
use testss
go--如果约束存在则先删除
if exists(select * from sysobjects where name='u_check2')
alter table test1 drop constraint u_check2;
go--添加约束
alter table test1
--with check --该约束是否应用于现有数据,with check表示应用于现有数据,with nocheck表示不应用于现有数据
add constraint u_check2
check
not for replication --当复制代理在表中插入或更新数据时,禁用该约束。
(height>=100 and height <=200);
go--向表中添加新数据或更新表中现有数据时是否禁用该约束。check表示校验,nocheck表示不校验
--alter table test1
--check
--constraint u_check2;
--go--添加check约束描述
execute sp_addextendedproperty N'MS_Description', N'修改约束', N'SCHEMA', N'dbo', N'TABLE', N'test1', N'CONSTRAINT', N'u_check2';
goCHECK约束修改优缺点
优点:1、修改数据库CHECK约束可以保证数据的规范性和完整性。
缺点:
1:修改约束的表设计器使用规则时,可能会引起原有数据与约束的冲突。
————————————————
版权声明:本文为CSDN博主「小子pk了」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_24188927/article/details/82424497 -
mysql 的 check约束
2021-03-16 16:21:04mysql的check约束在当前mysql版本中依然是个摆设(mysql版本5.7.9)那么要怎么取现救国,实现类似check约束的功能呢?解决方案:1.使用触发器,来完成类似check的约束验证2.使用set或enum方式来完成字符串的值范围check...mysql的check约束在当前mysql版本中依然是个摆设(mysql版本5.7.9)
那么要怎么取现救国,实现类似check约束的功能呢?
解决方案:
1.使用触发器,来完成类似check的约束验证
2.使用set或enum方式来完成字符串的值范围check约束
//1.set的效果
mysql> create table test(
-> id bigint primary key auto_increment,
-> paymethod set('货到付款','支付宝付款')
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> insert into test(paymethod) values('货到付款');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test(paymethod) values('货到付');
ERROR 1265 (01000): Data truncated for column 'paymethod' at row 1
在java程序中可以读取相关信息:
package com.xie.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Test {
public static void main(String[] args){
try {
Class.forName("com.mysql.jdbc.Driver");
Connection ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/shop","root","centre");
PreparedStatement ps=ct.prepareStatement("select * from test");
ResultSet rs=ps.executeQuery();
while (rs.next()) {
System.out.println(rs.getLong(1));
System.out.println(rs.getString(2));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}运行结果:
1
货到付款
//2.enum的效果:
mysql> create table test(
-> id bigint primary key auto_increment,
-> paymethod enum('货到付款','支付宝付款')
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test(paymethod) values('货到付款');
Query OK, 1 row affected (0.00 sec)
mysql> insert into test(paymethod) values('货到付');
ERROR 1265 (01000): Data truncated for column 'paymethod' at row 1
测试java代码如上:
测试结果:
1 货到付款
-
MySQL怎么使用check约束
2021-01-18 20:02:52MySQL使用check约束的方法:1、如果要设置CHECK约束的字段范围小,并且比较容易列举全部的值,可以将该字段的类型设置为enum类型或set类型。2、如果需要设置CHECK约束的字段范围大,且列举全部值比较困难,使用... -
CHECK约束(示例代码)
2021-01-21 04:20:38CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK... -
Mysql中怎样实现check约束?
2021-01-18 20:02:52现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束。(MySQL 版本 >= 8.0.16)mysql> create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));Query OK, 0 rows affected ... -
MySQL检查约束(CHECK)
2021-01-18 20:02:55MySQL 检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。设置检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。在《MySQL默认值》和... -
SQL之check约束增删操作
2021-04-23 11:18:13check约束的增删操作 以MySQL为例: 添加语法: alter table table_name add constraint check_name check(约束条件); 删除语法: alter table student drop check check_name; 以上两条语句可对于已经建成的表... -
MySQL8.0添加和删除check约束
2019-11-07 19:09:48在MySQL8.0中,添加了对check约束的操作,我使用的MySQL版本是8.0.17.0,下面我使用navicat for MySQL来演示。 check约束作用效果 使用show create table来查看创建表的语句 | testtable | CREATE TABLE `testtable`... -
第04期:列 CHECK 约束
2020-05-13 16:42:20check 约束意思,就是对一列或者多列按照一定的预先设置好的规则进行过滤,条件为真,则过滤成功;条件为假,则过滤失败,返回失败代码给客户端。 为什么要把这个单独列出来写呢,经常遇到不规范的 SQL,很多时候... -
SQL server 中设置CHECK约束
2019-03-23 17:34:28在表内对想设置CHECK约束的属性右击, 在弹出的选项卡中选择CHECK约束 4、在检查约束的窗口中 点击添加 在右侧的界面进行约束设置 写入约束表达式 关于约束表达式的3个例子: 1.... -
mysql中文解决和check约束
2014-12-15 10:53:39对于mysql的认识和使用例子,以及check约束的实例案例 -
如何修改或删除mysql CHECK约束 constraint
2021-01-19 02:00:56create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));Query OK, 0 rows affected (0.03 sec)mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not e... -
SQL CHECK 约束
2022-03-29 14:29:19SQL CHECK 约束 CHECK 约束用于限制列中的值得范围。 如果对单个定于的CHECK 约束,那么该列只允许特定的值。 如果对一个表定于CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。 CREATE TABLE... -
Oracle之Check约束实例详解
2014-11-10 21:07:28实例讲解在Oracle中如何使用CHECK约束(创建、启用、禁用和删除) -
关于MYSQL 检查check约束
2021-01-30 19:27:34MYSQL 目前版本貌似不支持 SQL标准的 检查约束(check);SQL如:ALTER TABLE emp ADD CONSTRAINT ck_emp_sex CHECK(sex ='男' OR sex='女');CHECK子句会被分析,但是会被忽略。请参见13.1.5节,“CREATETABLE语法”... -
SQL学习之check约束
2019-12-12 21:59:36目录参考源SQL check 约束示例数据create table 添加 check 约束多个字段添加约束给 check 约束命名alter table 时的 SQL check 约束删除 check 约束SQL Server / Oracle / MS AccessMySQL建议 参考源 简单教程 ... -
SQL研习录(24)——CHECK约束
2020-01-07 14:06:33SQL研习录(24)——CHECK约束版权声明一、CHECK约束1、基本语法 版权声明 本文原创作者:清风不渡 博客地址:https://blog.csdn.net/WXKKang 一、CHECK约束 在数据库中,CHECK 约束是指约束表中某一个或者... -
CHECK约束
2018-10-21 01:35:00CHECK约束会检查输入到记录中的值是否满足一个条件,如果不满足这个条件则对数据库做的修改不会成功。比如,一个人的年龄是不可能为负数的,一个人的入学日期不可能早于出生日期,出厂月份不可能大于12。可以在CHECK... -
sql check约束中怎么把性别字段的check约束设成男或女(在企业管理器中)?
2021-02-06 16:08:19create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));Query OK, 0 rows affected (0.03 sec)mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not e...