数据库表操作

建表删表

建表语句

--建表语句
create table Student
(ID                INTEGER constraint Student_KEY_1 primary key,--设定主键,同时会自动创建唯一索引NAME              VARCHAR2(50) NOT NULL , --设定非空SEX               CHAR(1)  constraint SEX_CHK CHECK (SEX IN ('0','1')),--添加检查性约束,值只能为0/1AGE               NUMBER(3),BIRTHDAY          DATE,Student_NUMBER    NUMBER(3,1),--设定为:3位数字.1位数字Student_CHAR      CHAR(10) default '默认值1',--注意CHAR类型对于不足的长度会自动补空格Student_VARCHAR2  VARCHAR2(10) default '默认值2'
);--添加注释
comment on table Student is '学生表';
comment on column Student.ID is '主键';
comment on column Student.NAME is '姓名';
comment on column Student.SEX is '性别';
comment on column Student.AGE is '年龄';
comment on column Student.BIRTHDAY is '生日';
comment on column Student.Student_NUMBER is 'NUMBER类型测试';
comment on column Student.Student_CHAR is 'CHAR类型测试';
comment on column Student.Student_VARCHAR2 is 'VARCHAR2类型测试';

删除表

--删除表,包括表数据和结构
drop table 表名-- 清空表数据
truncate table 表名

添加注释

--表注释
comment on table 表名 is '注释';
comment on table 所有者.表名 is '注释';--字段注释
comment on column 表名.字段名 is '注释';
comment on column 所有者.表名.字段名 is '注释';

字段类型

下表列出了几种常用数据类型。要注意,不同的关系数据库管理系统中支持的数据类型不完全相同

数据类型含义
CHAR(n),CHARACTER(n)长度为 n 的定长字符串,对于长度不足n的数据会自动补空格
VARCHAR(n) ,CHARACTERVARYING(n)最大长度为 n 的变长字符串
CLOB字符串大对象
BLOB二进制大对
INT,INTEGER长整数(4字节)
SMALLINT短整数(2字节)
BIGINT大整数(8字节)
NUMERIC(p,d)定点数,由 p 位数字(不包括符号、小数点)组成,小数点后面有 d 位数字。即(3,1)应为:3位数字.1位数字
DECIMAL(p,d),DEC(p,d)同 NUMERIC
REAL取决于机器精度的单精度浮点数
DOUBLE PRECISION取决于机器精度的双精度浮点数
FLOAT(n)可选精度的浮点数,精度至少为 n 位数字
BOOLEAN逻辑布尔量
DATE日期,包含年、月、日,格式为 YYYY - MM - DD
TIME时间,包含一日的时、分、秒,格式为 HH : MM : SS
TIMESTAMP时间戳类型
INTERVAL时间间隔类型

字段修改

--新增字段
--新增字段名之后跟新增字段的类型
alter table 表名 add(新增字段名 varchar2(4))--修改字段类型
--修改字段名之后跟修改为的参数类型和长度
alter table 表名 modify(修改字段名 NUMBER(8,2));
--修改字段名
alter table 表名 rename column 旧字段名 to 修改后的新字段名;--删除字段
alter table 表名 drop column 删除字段名

修改字段默认值

--修改字段默认值
--主要此修改不会影响到存量数据,之后影响之后的增量数据
alter table 表名 modify 字段 default 默认值;

关键字约束

类型和概念

类型含义备注
unique唯一约束创建唯一约束会自动创建唯一索引
primary主键约束创建主键约束会自动创建唯一索引
foreign外键约束

主键约束(PRIMARY KEY)

1、主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
2、是不可能(或很难)更新.
3、主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
4、主健可作外健,唯一索引不可;

唯一性约束(PRIMARY KEY)
1、唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
2、只要唯一就可以更新.
3、即表中任意两行在指定列上都不允许有相同的值, 允许空(NULL).
4、一个表上可以放置多个唯一性约束

相关语句

--新增单个唯一性约束
alter table 表名 add constraint 添加的唯一性约束名 unique(对应的字段列);
--新增组合唯一性约束
alter table 表名 add constraint 添加的唯一性约束名 unique(对应的字段列1,对应的字段列2);--新增单个主键约束
alter table 表名 add constraint 添加的关键字名称 primary key(对应的主键列);
--新增组合主键约束
alter table 表名 add constraint 添加的关键字名称 primary key(对应的主键列1,对应的主键列2);--新增外键约束
--与外键关联的主表的字段必须设置为主键
--要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。
alter table 表名 add constraint 外键约束名 foreign key(表名对应的字段) references 外键约束对应的表名(外键约束对应的字段名);--删除关键字约束
alter table 表名 drop constraint 删除的关键字名称;--禁用关键字约束
alter table 表名 disable constraint 关键字约束名;
--启用关键字约束
alter table 表名 enable constraint 关键字约束名;

在这里插入图片描述

关键字约束的区别

唯一性约束和主键约束的区别:(PRIMARY KEY)
1、唯一性约束允许在该列上存在NULL值,而主键约束的限制更为严格,不但不允许有重复,而且也不允许有空值。
2、在创建唯一性约束和主键约束时可以创建聚集索引和非聚集索引,但在 默认情况下主键约束产生聚集索引,而唯一性约束产生非聚集索引

检查约束

--添加检查约束
--只能输入限定的值
alter table 表名 add constraint 检查约束名称 check(检查字段 in ('检查值1','检查值2'));
--只能输入限制范围的值
alter table 表名 add constraint 检查约束名称 check(检查字段>0 and 检查字段<=100);--删除检查
ALTER TABLE 表名 DROP constraint 检查约束名称

在这里插入图片描述

索引

查询现有的索引

SELECT c.table_name      AS 表名,i.index_name      AS 索引名,i.index_type      AS 索引类型,c.column_name     AS 索引列名称,c.column_position AS 列的位置FROM user_ind_columns cJOIN user_indexes iON c.index_name = i.index_nameWHERE c.table_name = '表名';

索引类型

索引类型含义
NORMAL普通 B 树索引
UNIQUE唯一索引
BITMAP位图索引
FUNCTION-BASED NORMAL基于函数的普通 B 树索引
FUNCTION-BASED BITMAP基于函数的位图索引
DOMAIN域索引,用于实现对象类型的索引
LOBLOB 索引,用于索引长对象(Large Object,LOB)数据类型的表
IOT - TOP索引组织表(Index-Organized Table,IOT)的顶层索引
IOT - NESTEDIOT 的嵌套索引
IOT - OVERFLOWIOT 的溢出段索引
DOMAIN - LOB用于索引基于对象类型的 LOB 数据类型的表的域索引
XMLTYPEXML 数据类型的索引

索引的分类

按数据结构分类:B+tree索引、Hash索引、Full-text索引。
按物理存储分类:聚集索引、非聚集索引(也叫二级索引、辅助索引)。
按字段特性分类:主键索引(PRIMARY KEY)、唯一索引(UNIQUE)、普通索引(INDEX)、全文索引(FULLTEXT)。
按字段个数分类:单列索引、联合索引(也叫复合索引、组合索引)。

各种索引的概念

🎈按数据结构分类

B树索引:普通 B 树索引。B树索引是Oracle默认的索引类型,它以B树结构组织并存储索引数据,不懂什么是B树的可以百度一下,你就知道。B树索引中的数据是以升序方式排序的,B树索引由根块、分支块和叶块组成,其中主要数据都集中在叶子节点上。Oracle采用这种方式的索引,可以确保无论索引条目在何处,只需要花费相同的I/O即可获取它,所以它被称为B(Balanced)树索引。如果在Where子句中要经常引用某列或某几列,应该基于这些列建立B树索引
在这里插入图片描述

位图索引:位图索引是一种高度压缩的索引类型,适用于在大型表中包含少量不同值的列上。位图索引适用于等值搜索,并且可以更快地处理多个位图索引之间的逻辑运算。位图索引不适用于频繁的插入、更新和删除操作。
对于不同值多少的划分,采用Oracel基数划分,比如一个表有10000行数据,其中的某一字段只有100种取值,基数则为1%,Oracle推荐,当一个字段基数小于1%时,适合建立位图索引

散列索引:散列索引使用散列函数将索引键转换为散列值,从而提高索引搜索性能。散列索引适用于等值搜索,但不适用于范围搜索或排序操作。散列索引在写入高并发表时性能通常很好,但是当表的大小增长时,它们可能会变得不稳定。

反向键索引:Oracle会自动为表的主键创建B树索引,通常主键会是一个递增的序列编号,如果使用默认的B树索引,当数据量巨大时会导致索引数据分布不均,叶子节点可能会偏向某一个方向,这时就需要另一个索引机制,反向键索引,它可以将添加的数据随机(全部数据都会进行反向)分散到索引中,它在顺序递增列上建立索引时非常有用。反向键索引的工作原理非常简单,在存储结构方面它与常规的B树索引相同。然而,如果用户使用序列在表中输入记录,则反向键索引首先指向每个列键值的字节,然后在反向后的新数据上进行索引。例如,如果用户输入的索引列为2011,则反向转换后为1102; 9527 反向转换后为7259。需要注意的是,刚才提及的两个序列编号是递增的,但是当进行反向键索引时却是非递增的。这意味着,如果将其添加到子叶节点中,则可能会在任意的子叶节点中进行。这样就使得新数据在值的范围上的分布通常比原来的有序数更均匀。

函数索引:函数索引是基于表达式的索引,可以用于在非直接存储在列中的值上进行搜索,例如,将字符串转换为大写字母。函数索引可以帮助您避免在查询中使用昂贵的函数操作,但是创建和维护函数索引可能会增加查询的成本。

--例如有函数索引
SUBSTR(字段名,1,1)--则只能触发
SELECT * FROM 表名 WHERE SUBSTR(字段名,1,1)=''--下面的这种方式也不能触发
SELECT * FROM 表名 WHERE SUBSTR(字段名,1,2)=''

🎃按物理存储分类

聚集索引(主键索引):将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据(所有字段的值)

非聚集索引(辅助索引):将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置

⚽按字段特性分类

主键索引:是基于表的主键列创建的索引。主键是唯一标识表中每一行的列,它可以确保表中的每一行都有一个唯一的标识。主键索引可以加速对表的快速查找和唯一性约束。

唯一索引:唯一性是很常见的一种索引约束需求,重复的数据记录会带来许多处理上的麻烦,比如订单的编号、用户的登录名等。通过建立唯一性索引,可以保证集合中文档的指定字段拥有唯一值。.唯一性索引对于文档中缺失的字段,会使用null值代替,因此不允许存在多个文档缺失索引字段的情况

普通索引(INDEX):建立在普通字段上的索引被称为普通索引。

全文索引(Full-text Index):全文索引是用于对文本数据进行全文搜索的索引。它可以加速对文本内容的关键字搜索,支持模糊匹配和语义搜索等功能。

🎄按索引字段的个数分类

单列索引:建立在单个列上的索引被称为单列索引。

联合索引(复合索引、组合索引):建立在多个列上的索引被称为联合索引,又叫复合索引、组合索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460114.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ctfshow-命令执行(web118-web122)

web118 是一个窗口 查看源码 发现是system($code) 命令执行 经过测试禁用了很多东西 很多很多 $IFS可以 思路就是使用系统变量 构造我需要的poc 这些都是系统的环境变量 这是答案${PATH:~A}${PWD:~A}$IFS????.??? 解释一下 PATH变量输出结尾一般都是n 因为网站默认根目…

解决“使用Edge浏览器每次鼠标点击会出现一个黑色边框”的问题

目录 一 问题描述 二 解决方案 三 方案来源 四 参考资料 & AI工具 一 问题描述 为了方便进行收藏夹同步&#xff0c;开始从Chrome浏览器切换到Edge浏览器。在使用Edge浏览器过程中发现“每次鼠标点击会出现一个黑色边框”&#xff08;效果如下图所示&#xff09;&#…

使用异步命名管道通信的实例

记录一个使用异步命名管道通信的实例。代码参考了 MSDN 的文档&#xff1a;使用完成例程的命名管道服务器 - Win32 apps | Microsoft Learn。 服务端代码 #include <windows.h> #include <stdio.h> #include <tchar.h> #include <strsafe.h>#define…

containerd中文翻译系列(十五)转运服务

传输服务是一种简单灵活的服务&#xff0c;可用于在源和目的地之间传输人工制品对象。灵活的应用程序接口&#xff08;API&#xff09;允许传输接口的每个实施方案决定是否可以在源和目的地之间进行传输。这样&#xff0c;实现者就可以直接添加新功能&#xff0c;而无需对应用程…

高斯伪谱C++封装库开源!

Windows x64/86 C无依赖运行高斯伪谱法求解最优控制问题&#xff0c;你只需要ElegantGP! Author: Y. F. Zhang His Github: https://github.com/ZYunfeii 写在前面 这个库在你下载它的那一时刻起不再依赖任何其他代码&#xff0c;直接可用来构建C的最优控制问题并进行求解。…

机器学习--K-近邻算法常见的几种距离算法详解

文章目录 距离度量1 欧式距离(Euclidean Distance)2 曼哈顿距离(Manhattan Distance)3 切比雪夫距离 (Chebyshev Distance)4 闵可夫斯基距离(Minkowski Distance)5 标准化欧氏距离 (Standardized EuclideanDistance)6 余弦距离(Cosine Distance)7 汉明距离(Hamming Distance)【…

一起玩儿物联网人工智能小车(ESP32)——57. SPI总线协议初探(一)

摘要&#xff1a;介绍SPI总线的基本知识 前面已经学习过IIC总线协议&#xff0c;今天开始介绍另一个总线协议——SPI。SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;是由Motorola提出的一种高速、全双工、同步的通信总线。并且在芯片的管脚…

防静电地板行业研究:市场需求不断的扩大

防静电地板又叫做耗散静电地板&#xff0c;是一种地板&#xff0c;当它接地或连接到任何较低电位点时&#xff0c;使电荷能够耗散&#xff0c;以电阻在10的5次方到10的9次方欧姆之间为特征。 目前防静电地板产业还没有集中完成规模化&#xff0c;标准化&#xff0c;规范化&…

c++阶梯之类与对象(中)< 续集 >

前文&#xff1a; c阶梯之类与对象&#xff08;上&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;-CSDN博客 前言&#xff1a; 在上文中&#xff0c;我们学习了类的六个默认成员函数之构造&#xff0c;析构与拷贝构造函数&#xff0c;接下来我们来看看剩下…

堆排序-Python实现

简述 堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构所设计的一种排序算法。堆排序是一种选择排序&#xff0c;它的最坏&#xff0c;最好&#xff0c;平均时间复杂度均为O(nlogn)&#xff0c;它也是不稳定排序。 堆 堆排…

【数据结构】链表OJ面试题4(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表&#xff0c;判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 记录每天的刷题&#xff0c;继续坚持&#xff01; 2.OJ题目训练 10. 给定一个链表&#xff0c;返回链表开始…

豪掷770亿!华为员工集体“分红大狂欢”:至少14万人受益

豪掷770亿&#xff01;华为员工集体“分红大狂欢”&#xff1a;至少14万人受益 近日&#xff0c;华为宣布了其2023年度分红计划&#xff0c;总金额高达770.85亿元&#xff0c;预计至少将惠及14万员工。这一消息引发了广泛关注和热议&#xff0c;成为业界的一大亮点。作为中国领…