SQL CHECK?約束。
創(chuàng)新互聯(lián)公司主營景泰網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),景泰h5微信小程序開發(fā)搭建,景泰網(wǎng)站營銷推廣歡迎景泰等地區(qū)企業(yè)咨詢
CHECK?約束用于限制列中的值的范圍。
如果對單個列定義?CHECK?約束,那么該列只允許特定的值。
如果對一個表定義CHECK約束,那么此約束會在特定的列中對值進行限制。
--刪除表
drop table temp;
--創(chuàng)建表
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);
--測試效果(約束禁止插入數(shù)據(jù)),提示權(quán):違反檢查約束條件
insert into temp values(2);
insert into temp values(3);
SQL CHECK Constraint on CREATE TABLE。
下面的?SQL?在?"Persons"?表創(chuàng)建時為?"Id_P"?列創(chuàng)建?CHECK?約束。CHECK?約束規(guī)定?"Id_P"?列必須只包含大于?0?的整數(shù)。
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_P0)
)
擴展資料:
不同數(shù)據(jù)庫的約束寫法:
SQL Server / Oracle / MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL?CHECK (Id_P0),
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_P0 AND City='Sandnes')
)
SQL CHECK Constraint on ALTER TABLE.
如果在表已存在的情況下為?"Id_P"?列創(chuàng)建?CHECK?約束,請使用下面的?SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CHECK (Id_P0)
如果需要命名?CHECK?約束,以及為多個列定義?CHECK?約束,請使用下面的?SQL?語法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P0 AND City='Sandnes')
撤銷?CHECK?約束。
如需撤銷?CHECK?約束,請使用下面的?SQL:
SQL Server / Oracle / MS Access:
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
1. 給字段添加注釋
-- alter table? sc modify column 字段名? int not null comment? '只能是1-8';
2.MySQL 所有的存儲引擎都不支持 CHECK 約束,MySQL中可以寫 CHECK 約束,但會忽略它的作用,因此 CHECK 并不起作用,因此實現(xiàn)對數(shù)據(jù)約束有兩種方法:
在 MySQL 種約束,如使用?ENUM 類型?或者?觸發(fā)器?。
CREATE TABLE person(
id tinyint(4) NOT NULL AUTO_INCREMENT,
name varchar(16) NOT NULL,
sex enum('男','女') NOT NULL
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在應(yīng)用程序里面對數(shù)據(jù)進行檢查再插入。
mysql目前還不支持檢查約束。如果你要是輸入1-8之間的數(shù)字,可以把這個字段類型設(shè)置為enum類型,例如:
status enum(1,2,3,4,5,6,7,8)
這個status字段在插入數(shù)據(jù)的時候就只能插入1,2,3,4,5,6,7,8中的某一個。除此之外的數(shù)據(jù)將不能被正確插入。