mysql/oracle----约束
来源:互联网 发布:windows telnet 漏洞 编辑:程序博客网 时间:2024/06/05 02:42
约束最重要的作用就是定义规则。
1、非空约束
1).在创建表时设置非空约束语法:CREAETE TABLE table_name(column_name datatype NOT NULL, ...);
2).在修改表时添加非空约束
语法:ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
3).在修改表时去除非空约束
语法:ALTER TABLE table_name MODIFY column_name datatype NULL;
2、主键约束
作用:确保表当中每一行数据的唯一性。特点:非空,唯一。
一张表只能设计一个主键约束,
但主键约束可以由多个字段构成(联合主键)
--1).在创建表时设添加主键约束--语法1SQL> CREATE TABLE table_name (id int NOT NULL PRIMARY KEY, age int);-- 语法2:建议用这种写法SQL> CREATE TABLE table_name (id int NOT NULL, age int, CONSTRAINT pk_id_age PRIMARY KEY(id,age));--2).在创建表后时添加主键约束SQL> ALTER TABLE table_name ADD CONSTRAINT pk_id PRIMARY KEY(id);--3).更新约束的名称SQL> ALTER TABLE table_name RENAME CONSTRAINT pk_id TO new_pk_id;--4).删除主键的约束 禁用约束语法:disable|enanle constraint constraint_nameSQL> ALTER TABLE table_name DISTABLE CONSTRAINT pk_id; 删除约束语法1:drop constraint constraint_nameSQL> ALTER TABLE table_name DROP CONSTRAINT pk_id; 删除约束语法2:drop primary key [cascade]SQL> ALTER TABLE table_name DROP PRIMARY KEY;
3、外键约束
references 注意:1.设置外键约束时,主表的字段必须是主键
2.主从表中相应的字段必须是同一个数据类型
3.从表中外键字段的值必须来自主表中的相应字段的值,或者为null值
-------------------1).在创建表时设置外键约束-- 语法1--主表SQL> CRERATE TABLE table_name1(type_id int primary key);SQL> CRERATE TABLE userinfo_f (id int primary key, type_id_new int REFERENCES table_name1(type_id));SQL> insert into table_name1 values(1,1);SQL> insert into userinfo_f(id,typeid_new) values(1,2);ORA-02291: 违反完整约束条件 (SYS.SYS_C0011150) - 未找到父项关键字SQL> insert into userinfo_f(id,typeid_new) values(1,1);1 row insertedSQL> insert into userinfo_f(id,typeid_new) values(1,null);ORA-00001: 违反唯一约束条件 (SYS.SYS_C0011149)SQL> insert into userinfo_f(id,typeid_new) values(2,null);1 row inserted--语法2:CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name)[ON DELETE CASCADE]-- 如果要级联删除,在后面加ON DELETE CASCADE就行SQL> create table userinfo_f2 (id varchar2(10) primary key, typeid_new varchar2(10), constraint fk_typeid_new foreign key(typeid_new) references table_name1(type_id));-----------------2).在修改表时添加外键约束--语法:ADD CONSTRAINT constraint_name FOREIGN KEY(column_name) REFERENCES table_name(column_name)[ON DELETE CASCADE]SQL> ALTER TABLE alter table userinfo_f2 ADD CONSTRAINT fk_typeid_new foreign key(typeid_new) references table_name1(type_id);----------------3).删除外键约束--禁用/启用约束:DISABLE|ENABLE CONSTRAINT constraint_nameSQL> select constraint_name, constraint_type, status from user_constraints 2 where table_name='USERINFO_F4';CONSTRAINT_NAME CONSTRAINT_TYPE STATUS------------------------------ --------------- --------SYS_C0011153 P ENABLEDFK_TYPEID_ALTER R ENABLEDSQL> alter table userinfo_f4 disable constraint FK_TYPEID_ALTER ;SQL> select constraint_name, constraint_type, status from user_constraints 2 where table_name='USERINFO_F4';CONSTRAINT_NAME CONSTRAINT_TYPE STATUS------------------------------ --------------- --------SYS_C0011153 P ENABLEDFK_TYPEID_ALTER R DISABLED--删除约束语法:DROP CONSTRAINT constraint_name;SQL> alter table userinfo_f4 drop constraint FK_TYPEID_ALTER ;SQL> select constraint_name, constraint_type, status from user_constraints 2 where table_name='USERINFO_F4';CONSTRAINT_NAME CONSTRAINT_TYPE STATUS------------------------------ --------------- --------SYS_C0011153 P ENABLED
4、唯一约束
作用:保证字段值的唯一性唯一约束与主键约束的区别:
1.主键字段值必须是非空的,唯一约束允许有一个空值
2.主键在每张表中只能有一个,而唯一约束可以有多个
---------------1).-创建表时设置唯一约束------------------语法1:SQL> CREATE TABLE table_name1 (id INT PRIMARY KEY NOT NULL, username varchar(20) UNIQUE);--语法2:SQL> CREATE TABLE table_name1 (id INT PRIMARY KEY NOT NULL, username varchar(20) , CONSTRAINT un_username UNIQUE(username));---------------2).在修改表时添加唯一约束---------------SQL> ALTER TABL table_name ADD CONSTRAINT un_username UNIQUE(username);---------------3).删除唯一约束(同上)-------------- 禁用/启用约束:ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name 删除约束:ALTER TABLE table_name DROP CONSTRAINT constraint_name;
5、检查约束
--------------1).在创建表时设置检查约束----------------语法1:SQL> CREATE TABLE table_name1 (id INT PRIMARY KEY NOT NULL, salary INT CHECK(salary>0));--语法2:SQL> create table table_name2 (id varchar2(10) primary key, salary INT CHECK, constraint ck_salary check(salary>0));SQL> INSERT INTO table_name1 VALUES(1,-10);ORA-02290: 违反检查约束条件 (SYS.SYS_C0011161)--------------2).在修改表时添加检查约束-------------- 语法:ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);-------------3).删除检查约束(同上)---------------- 禁用/启用约束:ALTER TABLE table_name DISABLE|ENABLE CONSTRAINT constraint_name 删除约束:ALTER TABLE table_name DROP CONSTRAINT constraint_name;
6、默认约束
DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。-- 设置默认约束SQL> create table table_name (id varchar2(10) primary key, age int DEFAULT 18);-- 已建表修改SQL> ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT defaultvalue;-- 删除SQL> ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;
1 0
- mysql/oracle----约束
- oracle约束
- ORACLE 约束
- Oracle 约束
- Oracle约束
- Oracle约束
- oracle约束
- Oracle约束
- Oracle 约束
- Oracle约束
- oracle 约束
- oracle 约束
- oracle 约束
- Oracle约束
- ORACLE 约束
- ORACLE--约束
- oracle约束
- Oracle 约束
- 代码控制键盘只用浮点型类输入
- C/C++可变参数函数
- Java面向对象-3.包
- 工作半年之总结
- C++ 中初始化列表
- mysql/oracle----约束
- JavaScript基础
- hdu 2823 The widest road (旋转卡壳求两凸包的最近距离)
- APK拆分配置
- Sqoop简介与实例
- Android线程和线程池(一)
- js数组操作
- 修改Linux系统日期与时间date clock
- HTML5开发 移动Web App阅读器