SQL查询–约束「建议收藏」

SQL查询–约束「建议收藏」在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看约束是数据库用来确保数据满足业务规则的手段约束的作用:定义规则、确保完整性1.非空约束

大家好,又见面了,我是你们的朋友全栈君。

在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看
 
约束是数据库用来确保数据满足业务规则的手段
约束的作用:定义规则、确保完整性
 
1.非空约束
非空约束作用的列也叫强制列。顾名思义,强制键列中必须有值
 
创建表时设置非空约束
create table table_name (
column_name datatype not null,
...
)

如下
SQL查询--约束「建议收藏」

 

修改表时添加非空约束
alter table table_name modify column_name datatype not null;
注意:在设置非空约束之前,表中不应该有数据

 
修改表时去除非空约束
alter table table_name modify column_name datattype null;

 
2.主键约束:
确保表中每一行数据的唯一性(设置了主键约束的字段,要求这个字段是 非空的+唯一的)
 
所以如果一个字段被设置为主键,则查看表结构时,会发现这个字段为非空,即 NOT NULL;
一张表只能设计一个主键约束,但是主键约束可以由多个字段构成(联合主键或复合主键)
 
在创建表时设置主键约束
方式一:
create table table_name(
column_name datatype PRIMARY KEY,...
);

如下
SQL查询--约束「建议收藏」

 

方式二:(创建联合主键)
constraint constraint_name primary key(column_name1,...)

 

如下
SQL查询--约束「建议收藏」
如果忘记一个表的约束名称了,可以从user_constraints表中查询所有表的约束,如下
SQL查询--约束「建议收藏」
 
在修改表时添加主键约束
alter table table_name add constraint constraint_name primary key(column_name1,...);

设置主键之前,表中这个字段最好没有数据,如果有数据则值必须是唯一的,且不能有空值
如下
SQL查询--约束「建议收藏」

 

更改约束名称
alter table table_name rename constraint old_name to new_name

 
删除主键约束
alter table table_name disable|enable constraint constraint_name; (禁用或启用约束)
alter table table_name drop constraint constraint_name; (通过主键名删除约束)
alter table table_name drop primary key[cascade]; (因为一个表只有一个主键,所以也可以直接这样删除主键;可选参数cascade用于级联删除,比如有外键的情况)

 
3.外键约束:
1)在Oracle数据库中,外键是用来实现参照完整性的方法之中的一个。打个形象的比喻,外键是指定义外键的表的列的值必须在另一个表中出现。
2)被參照的表称之为父表(parent table),创建外键的表称之为子表(child table)。子表中的外键关联了父表中的主键。
3)外键能够在创建表时定义或者通过ALTER TABLE语句创建。
 
在创建表时设置外键约束
 
方式一(列集)
create table table1(从表)
(
column_name datatype references table2(主表)(column_name),...
);
设置外键约束时,主表的字段必须是主键;主从表中相应的字段必须是同一个数据类型;从表中外键字段的值必须来自主表中相应字段的值,或者为null
例子
先创建一个主表
create table typeinfo
(
typeid varchar2(10) primary key, 设置主键
typename varchar2(20)
);
接下来创建一个从表
create table userinfo
(
id varchar2(10) primary key, 设置主键
username varchar2(20),
typeid_new varchar2(10) references typeinfo(typeid)
(将 typeid_new 设为外键,引用的是 typeinfo 表的主键)
);

 

方式二(表集)
constraint contraint_name(约束名) foreign key(column_name) references table_name(column_name) [on delete cascade]
[]中的东西表示级联删除,添加以后,则删除主表的字段值,从表的外键也会删除
create table userinfo
(
id varchar2(10) primary key, 设置主键
username varchar2(20),
typeid_new varchar2(10),
constraint fk_typeid_new foreign key(typeid_new) references typeinfo(typeid)
);
 
在修改表时添加外键约束
create table userinfo
(
id varchar2(10) primary key, 设置主键
username varchar2(20),
typeid_new varchar2(10)
);
alter table userinfo
add constraint fk_typeid_alter foreign key(typeid_new)references typeinfo(typeid);

 

删除外键约束
 
(1)禁用外键约束
disable|enable constraint constraint_name (放到alter table 后面使用)
通过user_constraints表查看有哪些约束
select table_name,constraint_name,constraint_type,status from user_constraints where table_name='APPR_ITM_DEFINE_EX'

SQL查询--约束「建议收藏」
 
constraint_type的含义
 
SQL查询--约束「建议收藏」

 

禁用约束
alter table userinfo disable constraint fk_typeid_alter;

 
(2)删除外键约束
drop constraint constraint_name;(放到alter table 后面使用)
如下:
alter table userinfo drop constraint fk_typeid_alter;

 
4.唯一约束
 
作用:保证字段值的唯一性
与主键约束的区别:
1.主键约束的主键字段必须是非空的,而唯一约束允许有一个空值
2.主键在每一张表中只能有一个,而唯一约束在每张表中可以有多个
 
在创建表时设置唯一约束
方式一(列集)
create table table_name(column_name datatype unique,...)
 
create table userinfo
(
id varchar2(10) primary key, 设置主键
username varchar2(20) unique, 设置唯一约束
typeid_new varchar2(10)
);
 
方式二(表集)
constraint constraint_nameunique(column_name)
 
create table userinfo
(
id varchar2(10) primary key, 设置主键
username varchar2(20) ,
typeid_new varchar2(10),
constraint un_username unique(username) 设置唯一约束
);
如果要设置多个唯一约束,需要继续添加constraint constraint_nameunique(column_name)才行,不能写在一个constraint中

 
在修改表时添加唯一约束
 
create table userinfo
(
id varchar2(10) primary key, 设置主键
username varchar2(20) ,
typeid_new varchar2(10)
);
alter table userinfo add constraint un_username unique(username);

 
删除唯一约束
 
1.禁用唯一约束
disable|enable constraint constraint_name (放到alter table 后面使用)
 
禁用约束
alter table userinfo disable constraint un_username;
 
2.删除唯一约束
drop constraint constraint_name;(放到alter table 后面使用)
如下:
alter table userinfo drop constraint un_username;

 

以上内容来自慕课网的相关教程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155133.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月2日 下午7:46
下一篇 2022年7月2日 下午8:00


相关推荐

  • file.delete无法删除文件解决

    file.delete无法删除文件解决file delete 无法删除文件的问题排查思路一般遇到这种问题 需要思考 没有删除的文件是什么原因造成的 常见的有 1 第一种是不是你本地打开该文件 导致系统占用该文件 这种先自查 2 代码种有对该文件操作的流未全部关闭 导致文件被 java 进程占用无法上传 3 要删除的文件名称路径是否有错误 导致文件不存在 4 假如是文件夹需要看文件夹下面是否有文件 一般文件夹如果有文件 删除虽然不会报错 但是返回的是 false 也不能删除 上代码 第一版第一次考虑到可能是文件被占用 所以使用

    2026年3月16日
    3
  • Java是什么软件-详细解答Java到底是什么「建议收藏」

    Java是什么软件-详细解答Java到底是什么「建议收藏」许多想要接触计算机编程的朋友对于开发语言没有一个系统性的概念,会问出类似于Java是什么软件?这类问题,实际上我们通常不把Java定义为软件,那么Java到底是什么?Java开发用什么软件?请容我细细道来。

    2022年7月7日
    35
  • Java学习之Cookie与Session篇

    Java学习之Cookie与Session篇0x00前言到后面的学习中,其实大部分都是一些类的调用,只要清楚一些方法的使用。0x01Cookiecookie概念:客户端会话技术,将数据保

    2021年12月12日
    52
  • MD5加密算法「建议收藏」

    MD5加密算法「建议收藏」MD5的全称是Message-DigestAlgorithm5(信息-摘要算法),在90年代初由MITLaboratoryforComputerScience和RSADataSecurityInc的RonaldL.Rivest开发出来,经MD2、MD3和MD4发展而来。MD5加密算法:http://blog.csdn.net/huangxiaoguo1/artic

    2022年7月11日
    29
  • Vmware安装Ubuntu16.4、Ubuntu里安装python3.9、Ubuntu安装PyCharm的过程及出现的问题的解决[通俗易懂]

    Vmware安装Ubuntu16.4、Ubuntu里安装python3.9、Ubuntu安装PyCharm的过程及出现的问题的解决[通俗易懂]目录1、VMware安装Ubuntu16.4虚拟机1.1、下载Ubuntu镜像文件1.2、安装Ubuntu虚拟机1.2、装Ubuntu系统和虚拟机工具1.3、解决Ubuntu不能全屏显示1.4、设置共享文件夹1.4.1、主机上的文件夹设置1.4.2、虚拟机上的设置1.5、解决/mnt下没有hgfs文件夹1.6、解决找不到共享文件夹的问题1.7、解决重启后共享文件夹没有了的问题2、Ubuntu安装Python3.92.1、安装Python3.92.

    2022年8月29日
    7
  • Java是一种什么语言[通俗易懂]

    Java是一种什么语言[通俗易懂]Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。Java编程语言的风格十分接近C++语言。继承了C++语言面向对象技术的核心,Java舍弃了C++语言中容易引起错误的指針,改以引用取代,同时移除原C++与原来运算符重载,也移除多重继承特性,改用接口取代,增加垃圾回收器功能。在JavaSE1.5版本中引入了泛型编程、类

    2022年7月7日
    29

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号