-
数据库约束
2017-06-21 23:11:11关于李兴华老师数据库建表的约束总结约束简介:(重点) 数据表本身只支持数据的存储操作,但是在数据库上为了保证数据的完整性, 特别增加了约束,即需要满足若干条件才可以进行操作,本质上数据库的约束 一共有六...关于李兴华老师数据库建表的约束总结
约束简介:(重点) 数据表本身只支持数据的存储操作,但是在数据库上为了保证数据的完整性, 特别增加了约束,即需要满足若干条件才可以进行操作,本质上数据库的约束 一共有六种: ---------- 数据类型 非空约束(重点) 唯一约束 主键约束(重点) 检查约束(了解) 外键约束(重点) 约束的确保证了数据在合法后才进行保存,但是一个数据库中设置了过多的约束,那么更新的速度慢,所以在开发中,某一些验证操作还是交给程序完成。
- 数据类型
常用的数据类型 VARCHAR2 字符串(200个文字以内使用 ) NUMBER 数字 DATE 日期(oracle包含日期时间) CLOB 大文本数据(可保存4G文字信息)
2、 非空约束 NOT NULL
当表中某一个字段不允许为空,如果要使用非空约束,只需要使用非空约束 "NOT NULL"声明即可。 CREATE TABLE not_null_demo( name1 VARCHAR2(20) NOT NULL, sex VARCHAR2(6), sal NUMBER(8,2) ); INSERT INTO not_null_demo (name1,sex,sal) VALUES ('张三','boy',10000.00); //当插入下列数据时,会报错 INSERT INTO not_null_demo (name1,sex,sal) VALUES (null,'boy',10000.00);
3、唯一约束 (UNIQUE、UK)
特点:在某一列上的内容不允许出现重复。 CREATE TABLE member( mid NUMBER, name VARCHAR2(20) NOT NULL, email VARCHAR(20) UNIQUE ) INSERT INTO member (mid,name,email) VALUES(1,'xiaomage','123@qq.com'); 报错:INSERT INTO member (mid,name,email) VALUES(2,'ma ge','123@qq.com'); 发现唯一约束并不会向非空约束那样,明确告知错误信息,为了解决此类问题 可以采用 “约束类型简写_[表名]_列名” 如: CREATE TABLE member( mid NUMBER, name VARCHAR2(20) NOT NULL, email VARCHAR(20), CONSTRAINT uk_member_email UNIQUE (email) ) INSERT INTO member (mid,name,email) VALUES(1,'xiaomage','123@qq.com'); 错误:INSERT INTO member (mid,name,email) VALUES(2,'ma ge','123@qq.com'); 错误信息为:在行: 113 上开始执行命令时出错 - INSERT INTO member (mid,name,email) VALUES(2,'ma ge','123@qq.com') 错误报告 - ORA-00001: 违反唯一约束条件 (SCOTT.UK_MEMBER_EMAIL) 注意:只要进行数据表的创建时,约束一定要设置名字,且约束名不能重复。
4、主键约束(PRIMARY KEY 、PK)
CREATE TABLE member( mid NUMBER, name VARCHAR2(20) NOT NULL, email VARCHAR(20), CONSTRAINT pk_member_mid PRIMARY KEY (mid) ) INSERT INTO member (mid,name,email) VALUES(1,'xiaomage','123@qq.com'); 错误: INSERT INTO member (mid,name,email) VALUES(1,'mage','12712@qq.com'); 错误提示:在行: 113 上开始执行命令时出错 - INSERT INTO member (mid,name,email) VALUES(1,'mage','12712@qq.com') 错误报告 - ORA-00001: 违反唯一约束条件 (SCOTT.PK_MEMBER_MID) 主键约束 = 非空约束 + 唯一约束; 也就是说,设置为主键的列不能为空,也不能重复。
5、检查约束 (CHECK、CK)
指在数据列上设置一些过滤条件,当过滤条件满足的时候,才可以进行保存,否则报错。 列如:设置年龄信息在 0 ~ 300之间,性别 CREATE TABLE member( mid NUMBER, name VARCHAR2(20) NOT NULL, age NUMBER, email VARCHAR(20), CONSTRAINT pk_member_mid PRIMARY KEY (mid), CONSTRAINT ck_member_age CHECK (age BETWEEN 0 AND 300) ) INSERT INTO member (mid,name,age,email) VALUES(1,'xiaomage',60,'123@qq.com'); 错误: INSERT INTO member (mid,name,age,email) VALUES(1,'mage',400,'12712@qq.com'); 错误提示:在行: 116 上开始执行命令时出错 - INSERT INTO member (mid,name,age,email) VALUES(1,'mage',400,'12712@qq.com') 错误报告 - ORA-02290: 违反检查约束条件 (SCOTT.CK_MEMBER_AGE) 从实际开发讲,检查约束尽量不要用(损耗性能),检查通过程序完成。
外键约束
定义:在父子表中体现的一种约束模式,列如父表person,子表books,关联字段mid。 在设置外键约束的时候必须设置指定的外键列(MID)列,与哪张表的哪个列有关联。 CREATE TABLE PERSON( MID NUMBER, NAME VARCHAR2(20), CONSTRAINT PK_PERSON_MID PRIMARY KEY (MID) ); 外键约束: (FOREIGN KEY 、FK) CREATE TABLE BOOKS( MID NUMBER, BOOKNAME VARCHAR2(25), bookNumber NUMBER, CONSTRAINT fk_PERSON_MID FOREIGN KEY(MID)REFERENCES PERSON (MID) );
对于外键的使用的限制: 所谓的外键就是相当于子表的某一个字段的内容由父表来决定的其具体的使用数据范围。对外键来说,最麻烦的就是一些限制。 限制一:在删除父表之前,需要先删除其所有的子表才可以删除, 如遇到奇葩设计者,A是B的父表,B又是A的父表,这是可以使用强制删除操作, 删除后不关心子表,DROP TABLE person CASCADE CONSTRAINT; 限制二:如果要作为子表外键的父表列,那么这个列必须设置唯一约束或主键约束 限制三:如果现在主表中的某一行数据有对应的子表数据,那么必须先删除子表的全部数据,再删除父表。如果不想受到子记录的影响,可以使用级联的操作关系,级联关系有两种:级联删除,级联更新。 级联删除:指在父表数据已经被删除的情况下,自动删除其对应子表的数据, 再定义外键的时候后面加上 ON DELETE CASCAED即可。 此时删除父表的数据时,子表的数据会同时删除掉。 级联更新:在删除父表数据的时候,那么对应的子表的数据的外键设置为null, 加上ON DELETE SETNULL。
总结:综合来讲,不要去修改表结构,约束条件应该和表一起创建。 重要的约束 PRIMARY KEY,FROEIGN KEY,NOT NULL
-
数据库约束六大约束语句
2020-03-21 20:03:15数据库约束六大约束语句 1、非空约束 ① 就是给列赋值的时候值不允许为空 name VARCHAR(20) NOT NULL,--创建name列为非空-- 2、主键约束 2.primary key约束 : ①约束唯一标识数据库表中的每条记录 ②主键必须...数据库约束六大约束语句
1、非空约束
① 就是给列赋值的时候值不允许为空name VARCHAR(20) NOT NULL,--创建name列为非空--
2、主键约束
2.primary key约束 :
①约束唯一标识数据库表中的每条记录
②主键必须包含唯一的值
③主键列不能为空
④每个表都应该有个主键,但只能有一个主键StudentID int not null primary key --创建学生编号为主键-- primary key(Students) --创建学生编号为主键-- primary key(StudentID,Email) --创建学生ID和Email为联合主键-- --为已存在的列创建主键-- alter table table_name add primary key(column_name) --删除主键约束-- alter table table_name drop primary key --删除主键约束-- alter table table_name drop constraint --主键约束名 主键约束名可以使用sp_help查询--
3、唯一值约束
3.unique 唯一性约束:
①约束唯一标识数据库表中的每条记录
②unique和primary key都为数据提供了唯一性约束
③primary key 拥有自动定义的Unique约束
④注意:每个表中只能有一个primary key约束,但是可以有多个Unique约束name int unique unique(column_name) CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName) --添加多个约束-- alter table table_name add unique(column_name) --增加表中的约束-- ALTER TABLE table_name DROP CONSTRAINT 主键名 --删除约束--
4、外键约束
4.foreign key约束:
①一个表中的foreign key 指向另一个表的primary key
②foreign key约束用于预防破坏表之间连接的动作
③foreign key约束也能防止非法数据插入外键列,因为它必须是指向的那个表的值之一foreign key (column_name) references 主表名(主键列名) --创建column_name为主表名的外键-- column_name int foreign key references 主表名(主键列名) --创建column_name为主表名的外键-- alter table table_name add foreign key (列名) references 主表名(主键列名) --为已存在的列创建外键-- alter table table_name drop constraint 外键约束名 --删除外键约束(SQL Server oracle--
5、检查约束
5.CHECK 约束:
①.检查||限制列中输入的值sex char(2) CHECK(Ssex='男' or Ssex='女'), --非男即女-- StudentID int not null check (StudentID>0) --大于0约束-- Email varchar(50) CHECK(Email LIKE'%@%'), --必须含有@-- PID nvarchar(18) check (len(PID) =15 or len(PID) =18 ), --身份证号 检查约束 check(len(id)=15 or len(id)=18)-- alter table table_name add check(列名>0) --向已有的列加入check约束-- alter table table_name drop constraint check约束名 --删除约束--
6、默认值约束
6.default约束:
①.在没有输入值得单元格里插入默认值Address varchar(100) default '不详', -- 地址默认值为不详-- outtime date default getdate() --默认值为当前时间-- alter table table_name --向已有列名中插入默认值-- add 列名 set default '数值' alter table table_name drop constraint 约束名 --删除默认约束--
-
MYSQL--数据库约束
2021-04-05 19:14:50数据库约束1.1约束类型1.2 null约束1.3 unique:唯一约束条件1.5 primary key 1.数据库约束 1.1约束类型 not null: 指示某列不能存储null值; unique: 保证某列的每行必须有唯一的值; default: 1.2 null约束 创建...文章目录
1.数据库约束
1.1约束类型
- not null: 指示某列不能存储null值;
- unique: 保证某列的每行必须有唯一的值;
- default: 规定没有给列赋值时的默认值。
- primary key: not null和unique的结合。确保某列(或两个列多个列的结合)有唯一的标识,有助于更容易更迅速的找到表中的一个特定的记录。
- foreign key: 保证一个表中的数据匹配到另一个表中的值的参照完整性。
- check: 保证列中的值符合指定的条件,对于mysql的数据库,对check子句进行分析,但是忽略了check子句。
1.2 null约束
创建表的时候,我们可以指定某些列不能为空。
create table student( id int not null, sno int, name varchar(20) );
此时插入数据时,若在not null时不能插入null值,插入null值时,显示出错。
1.3 unique:唯一约束条件
指定sno为不重复的,唯一的值
create table student( id int not null, sno int unique, name varchar(20) );
此时在unique的值插入相同的值,此时就会出现报错。1.4 default:默认值约束
指定插入数据时,name列为空,默认值为tom。
create table student( id int not null, sn int unique, name varchar(20) default 'tom', qq_mail varchar(20) );
default指定的默认值,会在按列插入时生效(按列插入但是未被指定的列,就是按照默认值来插入),如果手动的给某一列插入null,就不会触发default。
1.5 primary key
设计表的时候,一般都需要指定一个主键,主键就是一条记录的唯一身份标识。
对于一张表来说,主键只能有一个有一个。create table student( id int not null primary key, sn int unique, name varchar(20) default 'tom', qq_mail varchar(20) );
在这里需要注意的是:
1)主键不能为空,
2)主键不能重复。
对于整数类型的主键,常配搭自增长 auto_increment来使用。插入数据对应字段不给值时,使用最大值+1.
1.6 foreign key:外键约束
外键用于关联其他表的主键或唯一键,语法为:
foreign key(字段名) references 主表(列)
外键的用法:
create table class( id int primary key, name varchar(20) ); create table student( id int primary key auto_increment, classId int, name varchar(20), foreign key (classId) references class(id) );
说明: 外键约束就是要求当前表里面的classId字段的值,必须在class表中的id的出现过才可以(此时要求id得时class的主键)
注意: 外键约束也会影响到数据的修改和删除,如果class表中的id已经被student 中的classId用到了,那么就不能删除class表中对应的记录,更不能删除整个class表。2.表的设计
设计数据库的基本思路:
从具体的问题2.1一对一
每个人都只拥有一个身份证,所以设计这种表,用到的是一对一的设计。2.2一对多
一个班级可以有多个学生,所以在此处就是通过把班级和学生通过这种1对多的关系就建立起来了。2.3多对多
一个学生可以选择多个课程,一个课程也可以被多个学生选择,因此此处是通过多对多的关系把学生和课程建立起来。 -
MySQL数据库约束
2018-09-03 19:36:46MySQL数据库约束 非空约束(NOT NULL) 1.含义:加上非空约束的字段,在添加数据时,该字段不能写入null值 2.基本语法: create table 表名称( 字段 数据类型 NOT NULL, ... ); 3.创建表完后,添加非空约束 ...MySQL数据库约束
非空约束(NOT NULL)
1.含义:加上非空约束的字段,在添加数据时,该字段不能写入null值 2.基本语法: create table 表名称( 字段 数据类型 NOT NULL, ... ); 3.创建表完后,添加非空约束 ALTER TABLE 表名称 MODIFY 字段 数据类型 NOT NULL; 4.删除字段的非空约束 ALTER TABLE 表名称 MODIFY 字段 数据类型;
唯一约束(UNIQUE)
1.含义:加上唯一约束的字段,在添加数据时,该字段不能在该表中重复出现。 2.基本语法: create table 表名称( 字段 数据类型 UNIQUE, ... ); 3.创建表完后,添加唯一约束 ALTER TABLE 表名称 MODIFY 字段 数据类型 UNIQUE; 4.删除字段的唯一约束 ALTER TABLE 表名称 DROP INDEX 字段;
主键约束(PRIMARY KEY)
1.含义:加上主键约束的字段,在添加数据时,该字段作为代表该表的标志性字段。该表与其他表联系时,一般都是使用这个字段。主键约束的字段既有非空约束,也有唯一约束。 2.基本语法: create table 表名称( 字段 数据类型 PRIMARY KEY, ... ); 3.设置主键自动增长 create table 表名称( 字段 数据类型 PRIMARY KEY AUTO_INCREMENT, ... ); 4.创建表完后,添加主键约束 ALTER TABLE 表名称 MODIFY 字段 数据类型 PRIMARY KEY; 5.删除字段的主键约束 ALTER TABLE 表名称 DROP PRIMARY KEY;
外键约束(FOREIGN KEY)
1.含义:加上外键约束的字段,该字段都是其他表的主键,从而让表与表之间产生联系,从而保证数据的正确性。 2.基本语法: create table 表名称( 外键列 数据类型, CONSTRAINT 外键名称 FOREIGN KEY(外键列名) REFERENCES 主表名称 主表主键列名; ... ); 3. 创建表之后,添加外键 ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称); 4. 级联操作 1. 添加级联操作 语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ; 2. 分类: 1. 级联更新:ON UPDATE CASCADE 2. 级联删除:ON DELETE CASCADE
数据库备份和还原
1.备份数据库命令行语法: mysqldump -u用户名 -p密码 要备份的数据库 > 备份到的系统路径 2.还原数据库: 1)创建数据库 2)使用数据 3)执行备份。SQL语句:source 文件路径
-
oracle数据库约束
2013-08-03 22:23:50oracle数据库约束 约束用于确保数据库数满足业务规则。 约束包括:NOT NULL,UNIQUE,PRIMARY KEY,FOREIGN KEY以及CHECK等5种类型。 建立主键约束和唯一约束时,Oralce会基于约束列自动建立唯一索引;... -
[亲测]Oracle数据库约束
2019-01-08 20:25:34一、Oracle数据库约束 (一)约束的概念作用 约束是可以更好的保证数据库数据的完整性和一致性的一套机制。 约束可以限制加入表的数据的类型。 如果存在依赖关系,约束可以防止错误的删除数据,也可以级联删除数据... -
openerp学习笔记 数据合法性约束(对象约束+数据库约束)
2015-07-18 00:34:14openerp学习笔记 数据合法性约束(对象约束+数据库约束) #检测同一时间段内是否存在相同的请假单,False 是存在,不允许创建 def _check_date(self, cr, uid, ids): for rec in self.browse(cr, ... -
Java面向对象系列[v1.0.0][SQL语法之数据库约束]
2020-09-25 00:29:28数据库约束:所有关系型数据库都支持对数据表使用约束,在表面上是强制执行的数据校验规则,通过约束可以更好的的保证数据表里数据的完整性 -
断言与数据库约束
2012-11-21 16:00:062.通常情况下,断言被用来表达数据库约束,这些约束不能活很难用其他方法表达 3.SQL创建断言的语句具有如下形式: CREATE ASSERTION CHECK()[约束性质] 举例如下:约束任何部门经理的工资不超过其所在部门平均... -
mysql 删除一个约束条件_oracle数据库约束条件删除、取消、启用
2021-01-27 20:26:49进入 在进行数据库进行操作时,由于各个表的约束条件限制,进行数据批量操作很困难,下面是对oracle数据库约束条件语句进行操作,供大家参考! 删除所有外键约束 Sql代码 复制代码 select 'alter table '欢迎进入... -
数据库约束新建,查看,删除
2018-12-11 20:01:30数据库约束查看 SELECT tc.constraint_name, tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name, tc.is_deferrable,tc.initially_defe... -
数据库约束查询
2017-07-02 21:19:00------数据库中根据约束,查询对应表 --主键约束 SELECT USER_CONS_COLUMNS.CONSTRAINT_NAME AS 约束名, USER_CONS_COLUMNS.TABLE_NAME AS 表名, USER_CONS_COLUMNS.COLUMN_NAME AS 列名, USER_CONS_... -
MySQL笔记-数据库约束条件 与 主键重排序
2016-08-06 11:33:55一、数据库约束 数据库的DDL 语句仅仅指定了一些列定义,这仅是数据表的基本功能。为了数据的完整性,统一性,数据库存在许多约束。 大部分数据库支持的5中完整性约束: 1、NOT NULL:非空约束。 2、UNIQUE:... -
数据库约束基本概念
2020-07-03 12:21:40主键是一种特殊的约束,用来保证一列(或一组列)中的值是唯一的,而且永不改动。表中的一列(或多个列)的值唯一标识表中的每一行。 特性 任意两行的主键值都不相同。 每行都具有一个主键值(即列中不允许NULL 值... -
数据库约束性
2014-12-11 14:53:27(1)NULL | NOT NULL 用于定义列的空值约束。(定义列) (下面的蓝色部份是单选其中之一) 语法:CONSTRAINT 约束名 NULL | NOT NULL a. NOT NULL 约束强制列不接受 NULL 值。 b. NOT NULL 约束强制... -
SQLite数据库约束详解
2016-01-06 16:54:53在SQLite数据库中存储数据的时候,有一些数据有明显的约束条件。 比如一所学校关于教师的数据表,其中的字段列可能有如下约束: 年龄 - 至少大于20岁。如果你想录入一个小于20岁的教师,系统会报错. 国籍 - ... -
修改oracle数据库约束
2017-06-01 10:07:46增加约束 ALTER TABLE tableName ADD [CONSTRAINT constraint] type (column); //name变为唯一性约束 alter table insert_test2 add constraint test_name_uk unique(name) //删除约束 alter table ... -
详细图解数据库约束
2016-08-20 17:09:59可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。 主要有以下几种约束: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT NOT -
让你记住你记不住的数据库约束
2012-05-30 18:19:08对于数据库中的约束,初学者会觉得,这么多...一、 数据库约束的作用和分类 primarykey 和unique他们的作用是为了不让表中有重复的数据(一个表) check表示表中列的数据的范围性的定义(一个表) deful -
oracle数据库约束条件删除、取消、启用
2012-07-26 16:29:08[size=medium]在进行数据库进行操作时,由于各个表的约束条件限制,进行数据批量操作很困难,下面是对oracle数据库约束条件语句进行操作,供大家参考! 删除所有外键约束 Sql代码 复制代码 select '... -
Mysql基本语句之数据库约束
2019-07-06 23:23:00约束是保证用户对数据库所做的修改不会破坏数据的一致性,是保护数据正确性和相容性的一种手段,例如数据长度最大100,不能为空等,如果不满足条件,则数据插不进表中。 mysql约束如下: 1、非空约束(NK): ...