Oracle常用基础知识

news2024/11/23 23:34:51

整体介绍

SQL语言是一种数据库语言

 1、DDL:数据定义语言

create-创建  drop-删除 alter-修改 rename-重命名 truncate-截断

2、DML:数据操作语句

insert-插入 delete-删除 update-更新 select-查询

3、DCL:数据控制语句

grant-授权 revoke-回收权力 commit-提交事务 rollback-回滚事务

注:Oracle命令不区分大小写,但数据和内容区分 

一、select语法

1、基本结构和简单查询

基本结构:select 查询的信息 from 数据来源

select * from emp
select deptno,sal,ename from emp

*:表示查询该表的所有数据

查询的信息可以是*也可以是一个或多个字段名;多个字段之间用逗号分隔,字段的顺序即查询结果顺序

2、去重(distinct)

select distinct deptno from emp;

distinct去重是去除的整条记录的重复

3、别名

给列取别名有两种写法:

写法1: 字段名后跟空格和别名

select ename 姓名,sal 工资 form emp

写法2:使用as关键字

select ename as 姓名,sal as 工资 from emp;

4、排序(order by)

降序:desc  升序:asc(默认升序排序)

select ename,sal from emp order by sal desc

多字段排序:用逗号分隔

select ename,sal from emp order by deptno asc,sal desc

解释:查询emp表中的ename,sal字段,查询结果集按照先deptno字段值升序排序,在deptno升序的基础上,按照sal降序排序;

5、伪列

生成表中没有的数据列称为伪列

select ename,sal,sal*2 年薪 from emp

其中年薪属于别名而sal*2是表中没有的数据,是通过计算得到,所以称为伪列

6、字符串拼接 ||

select ename,ename || ‘a’ 别名 from emp

注:两个变量拼接时,如a||b,当a为null则结果为b

7、虚表 dual

只有一行一列,是用来构成select的语法规则,可以执行插入、更新、删除操作,还可以执行drop操作

注:虽然可以执行drop操作,但是还是不建议对dual执行drop操作,否则会使系统不能用、起不了数据库。

select 11*22 from dual

8、select 执行顺序

 select distinct 查询字段1 别名,查询字段2 as 别名,表达式 别名 from 数据来源 order by 排序字段 desc

 以上是之前知识的综合语句:

解析顺序:from====》select====》order by

先找表,再找需要查询的内容,最后对结果集排序

9、条件查询*

结构:select 查询内容 from 数据来源 where 行记录条件

 解析过程:1、查询数据源 2、判断是否符合行记录条件 3、将满足条件的记录在select指定的信息中存放(结果集当中)

条件运算

=、>、<、>=、<>、!=、between and、in

基础结构:

select * form emp where deptno=10;

 between...and... 值在一定范围内、闭区间(包含两段界限)

select * from emp where sal between 2000 and 4000

in(a,b)满足a或b都可以

select * from emp where deptno in(10,20)

条件连接运算

and、or、not

and 同时满足

select * from emp where sal>1500 and deptno=20;

 or 满足一个即可

select * from emp where sal>1500 or deptno=20;

 not 取反

select * from emp where not deptno=20;

10、null处理

nvl(expl,res)

null在参加计算式,结果为null,使用nvl(expl,res)处理空值:expi-表达式、res-结果

当expi不为空时,结果为expi,为空时结果为res

select ename,sal,comm,sal+nvl(comm,0)月收入 from emp

null排序

nulls first、nulls last 将空值放置在列前或后

select * from emp order by comm desc nulls first

null查询

不为空

select * from emp where comm is not null;

 为空

select * from emp where comm is null;

 不为空

select * from emp where not comm is null;

11、模糊查询 like

select * from emp where like ‘%s%’

%表示任意个字符  _表示一个任意字符

当模糊查询的内容包含”%“、”_“时

select * from emp where like ‘%a%%’ escape(‘a’)

escape中的a属于标识符,用于证明a后的字符不是特殊字符,只对其身后的一位字符有效

如想查询‘a%’则,...like ‘%aaa%%’ escape(‘a’)

12、where子句

select * from emp where deptno = (select deptno from dept where dname = ‘SALES’)

二、函数

1、函数介绍

根据函数的返回结果,分为单行函数和多行函数。

单行函数:一条记录返回一个结果。

多行函数(组函数、聚合函数):可同时对多条记录进行操作,并返回一个结果。

2、常用的单行函数

字符函数

concat(x,y):连接字符串x和y

instr(x,str,start,n):在x中查找str,从start开始,也可以从第n次开始。初始位置从1开始。

select instr(‘HelloWorld’,‘l’,1,3)from dual

length(x):返回x的长度

lower(x):x转换为小写

upper(x):x转换为大写

itrim(x,trim_str):把x左边截去trim_str字符串,没有写trim_str就截去空格

replace(x,old,new):在x中,将old替换为new,替换的是能找到的所以old

substr(x,start,length):从start开始,截取length个字符,缺length默认到结尾

日期函数

sysdate、current_date:当前日期(精确到秒)

add_months(d1,n1):在d1基础上再加n1个月后的日期

last_day(d1):放回d1所在月份的最后一天

months_between(d1,d2):从d1到d2之间的月数

next_day(d1[ ,c1]):d1日期的下周星期几(c1)

转换函数

to_char(x,c):将日期或数据x按照c格式转换

to_date(x,c):将字符串x按照c的格式转换为日期

to_number(x):将字符串x转为数字型

3、组行数

avg()平均值、sum()求和、min()最小值、max()最大值、count()统计

注:null不参与运算

group by 分组

结构:select...from...group by....

select deptno,avg(sal)from emp group by deptno

having 过滤组信息

select deptno,avg(sal)from emp group by deptno having avg(sal)>2000

执行顺序:①找到数据源from emp ②对数据源进行分组group by deptno ③对分组内容进行过滤having avg(sal)>2000 ④从分组中查询数据select deptno,avg(sal)

过滤行记录和组信息

行记录的过滤是针对每条记录的筛选,组信息的过滤是针对组的筛选,是可以同时出现的先筛选行,再过滤组

结构:⑤select...①from...②where...③group by...④having...(序号代表执行顺序)

三、分页和去重

1、分页

假分页:一次查询出数据库中的所有记录,然后在每页中显示指定的记录

缺:服务器负载大 优:与数据库只对接一次

真分页:对数据库多次查询,每次只获得本页的数据并显示

缺:频繁操作数据库 优:服务器负载小

2、rownum

是对每一个结果集中的每一条记录的编号,从1开始

查询伪列rownum

select ename,sal,deptno,rownum from emp

将查询出的结果集作为临时的数据来源,此时结果集中的rownum rw为普通字段

select * from(select ename,sal,deptno,rownum rw from emp)where rw>5 and rw <=10

3、排序分页(每页只展示3条数据)

select ename,sal,deptno,r1,r2
  from(select ename,sal,deptno,r1,rownum r2
    from(select ename,sal,deptno,rownum r1
      from emp order by sal desc))
where r2>(3-1)*3 and r2<=3*3

4、rowid去重

rowid相当于伪列,由Oracle生成,是唯一的

delete from copy where rowid not in(select min(rowid)from copy group by deptno)

四、表连接

概念:多表查询-多表拼接

1、92语法

结构:select...from table1,table2...where

很多时候需要为表取别名(①简化表名②可能存在自连接的情况)

原理:from后面出现的顺序,前面的表作为内存的for循环,后出现的表作为外层的for循环

笛卡儿积

两个集合中的每一个成员,都与对方集合中的任意一个成员有关联;如果没有给筛选条件,即为笛卡儿积

等值连接

在笛卡儿积的基础上取条件列相同的值

select * from emp e,deptno d where e.deptno=d.deptno

非等值连接

!=、>、<、<>、between...and...

select ename,sal,hiredate,grade s from emp e,salgrade s where e.sal between losl and hisal

自连接

特殊的等值连接(来自于同一张表)

外连接

内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行

外连接可以是左向外连接、右向外连接或完整外部连接

注:没有+的是主表

select * 
  from detp d,(select count(*),deptno 
    from emp group by deptno)c
where d.deptno=c.deptno(+)

2、99语法

笛卡儿积 cross join

select * from dept cross join emp

自然连接 natural join

做等值连接,需要有(同名列,主外键关系)

select ename,empno,deptno,dname from emp natural join dept

using连接、等值连接 join using

select ename,empno,deptno,daname from emp join dept using(deptno)

join on

等值:

select ename,empno,e.deptno,dname from emp e join dept d on e.deptno=d.deptno

非等:

select ename,sal,deptno,grade from emp e join salgrade s on sal between losal and hisal

outer join

left [outer] join on | using

right [outer] join on | using

 全连接 full join on

select ... from table full join table2 on 连接条件 where...

 3、集合操作

union 并集 union All 全集 instersect 交集 Minus 差集

五、DDL语法

1、表操作

创建表

create table 表名(字段名 类型(长度),...)

 数据类型

详细解释可以查看官方文档

修改表结构

修改表名:

rname 原表名 to 新表名

修改列名:

alter table 表名 rename column 列名 to 

修改字段类型:

alter table 表名 modify(字段类型)

alter table tb_student modify(studentId char(10))

添加列:

alter table 表名 add 字段 类型

删除列:

alter table 表名 drop column 字段

2、删除表

drop table 表名

 3、约束

主键约束(primary key):该字段在表中唯一且非空

唯一性约束(unique):只能出现一次

非空约束(not null):不能为空

外键约束(foreign key):外键(从表)中的数据必须在主表中已经存在才能使用

检查约束(check)

创建表的同时,将约束进行创建,约束不设定名称

create table tb_user(
  userid number(5) primary key,
  username varchar2(30) check(length(username) berween 4 and 20) not null,
  age number(3) default(18) check(age>=18),
  gender char(3) default('男') check(gender in('男','女')),
  regtime date default(sysdate)
)

创建表的同时,给约束设定名称

create table tb_user(
  userid number(5),
  username varchar2(30) not null,
  age number(3) default(18),
  gender char(3) default('男'),
  regtime date default(sysdate),
  constraint pk_user_id primary key(userid),
  constraint ck_user_name check(length(username) berween 4 and 20),
  constraint ck_user_age check(age>=18),
  constraint ck_user_gender check(gender in('男','女'))
)

创建完表后,追加约束

alter table tb_user add constraint pk_user_id primary key(userid)

 修改约束

alter table tb_user modify(username constrant nn_user_name no null)

 外键处理方式

强制不让删除

alter table tb_txt add constraint fk_txt_user_id foreign key(userid) references tb_user(userid)

删除后自动设置为null

alter table tb_txt add constraint fk_txt_user_id foreign key(userid) references tb_user(userid) on delete set null

级联删除

alter table tb_txt add constraint fk_txt_user_id foreign key(userid) references tb_user(userid) on delete cascade

禁用和启用约束

启用/禁用(enable/disable):对后来的数据进行校验

验证/非验证(validate/novalidate):对已存在的数据进行校验

删除约束

alter table tb_user drop cpnstraint ag_user_email cascade

六、DML

1、插入

insert into 表名 [(字段列表)] values(值列表)

 插入记录时要满足长度兼容、约束

默认添加:

insert into 表名 values(值列表)

 使用默认添加时,数据必须和表结构字段顺序和个数一致

添加时指定列和顺序

insert into 表名(指定列)values(值列表)

 如果是外键,被参考的主表字段一定要有数据

2、更新

update 表名 set 字段1=值1[字段2=值2,...] where 过滤行记录

 注:在更新时一定记得加上where条件

3、删除

delete from 表名 where 过滤行记录

 注:先删从表后删主表

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

c++字符串函数

在 C 中有大量用于操作 C-style 字符串的函数&#xff0c;它们集成在头文件 <cstring> 中。其常见的函 函数作用strcpy(s1,s2) 复制字符串 s2 到 s1strcat(s1,s2) 将字符串 s2 连接到 s1 末尾strlen(s) 计算字符串 s 长度strcmp(s1,s2) 比较字符串 s1 和 s2 …

deepin 深度操作系统正式适配苹果 M1 芯片

导读近日消息&#xff0c;据深度操作系统官方消息&#xff0c;在已经发布的 deepin V23 beta 版本中&#xff0c;深度操作系统正式适配 Apple Mac mini M1 了。 官方表示&#xff0c;Mac mini M1 是苹果于 2020 年 11 月发布的迷你电脑主机&#xff0c;它搭载了最高 3.2GHz …

走进知识图谱(三)【世界知识图谱篇】其他的知识表示学习模型

除了上篇文章介绍到的基于复杂关系建模的知识表示方法&#xff0c;我们还有多种基于平移模型而改进的知识图谱知识表示方法&#xff0c;并且它们都是对关系的深入建模。可以将它们归为两类&#xff0c;分别是知识图谱结构建模和知识图谱多源信息融合建模。这也对应了之前说的&a…

Mac远程桌面连接软件 Jump Desktop 8

Jump Desktop是一款功能强大的远程桌面连接软件&#xff0c;可让您从任何地方远程访问和控制您的计算机或服务器。它提供了快速、安全和可靠的远程连接&#xff0c;使您能够轻松访问您的文件、应用程序和数据&#xff0c;无论您身在何处。 以下是Jump Desktop的一些主要特点和功…

【图像分类】理论篇(3)交叉熵损失函数的理解与代码实现

理论公式 计算实例 图像分类实例&#xff1a; 我们希望根据图片动物的轮廓、颜色等特征&#xff0c;来预测动物的类别&#xff0c;有三种可预测类别:猫、狗、猪。假设我们当前有两个模型&#xff08;参数不同)&#xff0c;这两个模型都是通过sigmoid/softmax的方式得到对于每个…

又有大动作!美的集团计划在港交所上市,推进全球化布局

撰稿|行星 来源|贝多财经 8月9日&#xff0c;美的集团&#xff08;SZ:000333&#xff09;发布《关于研究论证重大事项的公告》&#xff0c;称其正在对境外发行证券&#xff08;H股&#xff09;并上市事项进行前期论证。若能成功发行&#xff0c;美的集团将实现“AH”两地上市…

用Python做一个滑雪小游戏

游戏是让人娱乐和放松的好方式&#xff0c;而编写和玩自己的游戏则是一种特别有趣的体验。在本文中&#xff0c;我们将使用Python和pygame库来创建一个简单的滑雪小游戏。通过这个小游戏项目&#xff0c;我们将学习如何使用Python编程语言来制作自己的游戏&#xff0c;并且享受…

timeout limit is 100 seconds错误

使用SERVER 2019进行开发&#xff0c;出现100秒超时的问题&#xff0c; Load operation failed for query GetDOC_STAFFWithPhoto. The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing 解决办法&#xff1a; 方法一&#xff1a;浏览…

卫星--夏令营

几何问题&#xff1a;就是用几何数学知识解题即可 但是越是数学编程题&#xff0c;越容易忽略数学题中的细节 1.地球半径你算进去了吗? 2.sin三角函数&#xff0c;M_PI标准圆周率在cmath文件里 3.有可能给出的夹角超过180呢&#xff0c;没给数据要求&#xff0c;就要自己考…

React源码解析18(5)------ 实现函数组件【修改beginWork和completeWork】

摘要 经过之前的几篇文章&#xff0c;我们实现了基本的jsx&#xff0c;在页面渲染的过程。但是如果是通过函数组件写出来的组件&#xff0c;还是不能渲染到页面上的。 所以这一篇&#xff0c;主要是对之前写得方法进行修改&#xff0c;从而能够显示函数组件&#xff0c;所以现…

数字后端笔试题(1)DCG后congestion问题

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 已知某模块的DCG结果显示存在congestion&#xff0c;有congestion部分逻辑结构如下图: 问题1: 如何分析该电路有congestion问题的原因&#xff1f; 答&#xff1a;data selecti…

Android Studio实现列表展示图片

效果&#xff1a; MainActivity 类 package com.example.tabulation;import android.content.Intent; import android.os.Bundle; import android.view.View;import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; im…

概念解析 | 知识蒸馏(Knowledge Distillation)

教师指点弟子 - 深度神经网络知识蒸馏技术详解 注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:知识蒸馏(Knowledge Distillation)。 Knowledge Distillation(知识蒸馏)Review–20篇paper回顾- 知乎 知识蒸馏(Knowledge Dist…

福利!百度Workshop实战课,即刻搭建AI原生应用!| IDCF

你是否希望掌握大模型开发的秘诀&#xff1f;你是否渴望得到实践操作的机会&#xff1f;如果你的心中充满热情和期待&#xff0c;那么&#xff0c;WAVE SUMMIT 2023特别设置的Workshop将会是你的知识启航站&#xff01; 本次Workshop专注于AI开发与大模型应用&#xff0c;邀请…

yolov5 转换为rknn模型在3588上运行

为了把yolov5在rk3588上跑起来&#xff0c;在网上搜罗了一圈,踩了一些坑。由于瑞芯微的文档有升级&#xff0c;导致和网络的文章有出入&#xff0c;所以做个记录。 rknn-toolkit 转换文档&#xff1a; 瑞芯微的转换文档在 rknn-toolkit/example/pytorch/yolov5/REAME.md 里 …

硬件时钟和系统时钟的同步机制及案例分享

1 硬件时钟和系统时钟的同步机制 硬件时钟记录在服务器主板的CMOS芯片里面&#xff0c;与主板的南桥芯片&#xff08;目前Intel与AMD的主板仅有南桥&#xff0c;北桥已集成到CPU&#xff09;相连。硬件时钟一般叫做RTC&#xff08;Real Time Clock&#xff09;、CMOS clock或者…

管易云和金蝶云星空接口打通对接实战

管易云和金蝶云星空接口打通对接实战 对接系统管易云 管易云是上海管易云计算软件有限公司旗下的专注提供电商企业管理软件服务的品牌&#xff0c;总部位于中国上海张江高科技产业园区。管易云旗下拥有管易云C-ERP、EC-OMS、EC-WMS、B2C/B2B/BBC/微商城开发、PDA无纸化仓储解决…

提前预知风险:探索天气预警 API 在灾害管理中的关键作用

引言 自然灾害无情地影响着人类的生活&#xff0c;损害着财产和环境。然而&#xff0c;随着科技的不断进步&#xff0c;人类有了更多的工具来预测和减轻灾害带来的影响。其中&#xff0c;天气预警 API 在灾害管理中扮演着关键的角色&#xff0c;为政府、企业和个人提供了提前预…

JAVA日期相关操作

JAVA日期相关操作 计算两个日期相差的天数 /*** 计算两个日期相差的 天数* param smdate String类型初始时间* param bdate String类型截至时间* return Integer*/public static Integer dayCompare(String smdate, String bdate) throws Exception {Date start sdf.par…

12-数据结构-数组、矩阵、广义表

数组、矩阵、广义表 目录 数组、矩阵、广义表 一、数组 二.矩阵 三、广义表 一、数组 这一章节理解基本概念即可。数组要看清其实下标是多少&#xff0c;且二维数组&#xff0c;存取数据&#xff0c;要先看清楚是按照行存还是按列存&#xff0c;按行则是正常一行一行的取读写…