SQL中规定某列值只能是0或者1的约束该怎么写?
今天装修百科网给各位分享数据库怎么设置最小的知识,其中也会对SQL中规定某列值只能是0或者1的约束该怎么写?(sql列值唯一)进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在我们开始吧!
SQL中规定某列值只能是0或者1的约束该怎么写?
SQL CHECK 约束。
CHECK 约束用于限制列中的值的范围。

如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义CHECK约束,那么此约束会在特定的列中对值进行限制。
--删除表
drop table temp;
--创建表
CREATE TABLE temp (flag NUMBER(1));
--增加约束
ALTER TABLE temp ADD CONSTRAINT ck_temp_flag CHECK
(flag=1 or flag=0);
--测试效果版
insert into temp values(1);
insert into temp values(0);
insert into temp values(1);
--测试效果(约束禁止插入数据),提示权:违反检查约束条件
insert into temp values(2);
insert into temp values(3);
SQL CHECK Constraint on CREATE TABLE。
下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。
My SQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)
扩展资料:
不同数据库的约束写法:
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
)
SQL CHECK Constraint on ALTER TABLE.
如果在表已存在的情况下为 "Id_P" 列创建 CHECK 约束,请使用下面的 SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Id_P>0)
如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
撤销 CHECK 约束。
如需撤销 CHECK 约束,请使用下面的 SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
java数据库连接池最大连接数最小连接数怎么设置
最大连接数:这个连接池最多能有几条连接,如果初始化的连接数没有了,用户可以创建,但是要给个判断不能超过最大连接数。
最小连接数:就是连接池初始化的连接(连接池初始化多少条连接)
// 设置最大连接数,(根据并发请求合理设置)。
config.setMaxTotal(100);
// 设置最大空闲连接数,(根据并发请求合理设置)
config.setMaxIdle(20);
// 多长空闲时间之后回收空闲连接
setMinEvictableIdleTimeMillis(60000);
// 设置最小空闲连接数或者说初始化连接数
config.setMinIdle(10);
// 设置最大等待时间
config.setMaxWaitMillis(500);
// 跟验证有关
config.setTestOnBorrow(true);
// 跟验证有关
config.setTestOnReturn(false);
// 启动空闲连接的测试
config.setTestWhileIdle(false);
怎样减少ACCESS数据库大小
我的下面一些经验可以为你的问题提供答案。
常规办法:
1)删除不必要的数据和无用的ACCESS数据库对象例如表、查询、窗体和模块等;
2)压缩数据库
ACCESS2003压缩举例:打开数据库,点击菜单(工具)——数据库实用工具——压缩和修复数据库
非常规办法:
ACCESS数据库经过一段时间添加、更改和删除数据库对象后会产生很多代码及数据库对象碎片和垃圾,对于这些东西常规办法是无法清除的。这也是为什么你的ACCESS数据删除很多数据后,大小不变的原因所在。
怎么办呢?可以这样做:先建立一个同名空白数据库,放在另一个文件夹下,接着打开该空白数据库,导入原数据库全部有用的对象(包括:表、窗体、查询、模块、页、宏,无用的不要导入)
ACCESS2003导入对象举例:文件——获取外部数据——导入 ,打开“导入”对话框选择需要缩小的数据库后,点击导入按钮,打开“导入对象”对话框 选择全部有用的数据库对象,例如表、窗体等等后点击“确定”按钮 完成导入全部数据库对象。
经过上述过程后,所有的数据库垃圾都会被清除掉。再对其进行一次压缩操作,ACCESS数据库将会处在理论上最小状态。
如何有效控制SSISDB的数据库文件的大小
1. 设置SSIDB Properties,仅保留1天的日志和3个project部署版本
SSISDB会创建一个agent job - SSIS Server Maintenance Job,根据以上配置来定期清理SSISDB内容。这个job的第一步会调用[SSISDB].[internal].[cleanup_server_retention_window]存储过程,涉及多表的级联删除,会产生大量transaction log。所以我们还需要进行以下操作。
2. SSISDB数据库的恢复模式默认是Full,如果不进行日志备份并截断,SSISDB.ldf会持续增长,很快占满磁盘。考虑到SSIDB并没有容灾要求,直接将恢复模式改为Simple Recovery,这样的好处是数据库Checkpoint之后会自动截断transaction log,SSISDB.ldf会控制在一个稳定的大小。但稳定值在40G左右还是无法接受,需要进一步优化
3. 在SSISDB中查看[internal].[cleanup_server_retention_window]的代码,在删除日志的核心代码中加入CHECKPOINT,促使数据库在每个级联删除事务之后尽快进行checkpoint,从而自动截断transaction log,下一轮循环中的删除操作就可以重用该文件空间;同时,减少@delete_batch_size为100,使每个批次中删除数据量减少。最终SSISDB.ldf稳定大小缩小至20G左右。
注意:需要给AllSchemaOwner赋予CHECKPOINT权限
4. 设置Customized Logging Level,只记录error和warning信息,这样就大大减少了写入SSIDB表中的记录数。DELETE时的事务日志自然也缩减了
如何压缩减少数据库的大小
直接用acdsee的编辑器模式,点几保存就可以了,它会跳出一个窗口,问你要不要压缩,你点压缩就行了,大小可以自己控制
SQL 2008的数据库文件太大,如何减小啊
收缩数据库
一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定
3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据