当前位置: 首页 > news >正文

[Oracle数据库] ORACLE基本DML操作

目录

一、准备工作:创建测试表

二、插入记录:向表中添加数据

1️⃣部分字段添加

2️⃣所有字段插入数据

3️⃣插入空值

三、删除记录:移除表中的数据

1️⃣删除指定行

2️⃣删除指定字段为空值的记录

3️⃣删除表所有记录

4️⃣使用 truncate 关键字删除所有记录

5️⃣删除表结构

四、修改记录:更新表中的数据

1️⃣修改单个字段

2️⃣修改多个字段

五、简单查询:获取表中的数据

1️⃣查询所有列

2️⃣查询指定列

3️⃣消除重复行

4️⃣别名的使用

5️⃣使用算数表达式

6️⃣|| 操作符

六、条件查询:精准获取所需数据

1️⃣比较运算符

2️⃣逻辑运算符

3️⃣In 操作符

4️⃣like 操作符

5️⃣交互式操作符

七、排序:对查询结果排序


对于刚接触 Oracle 数据库的初学者来说,数据操纵语言(DML)是必须掌握的基础。DML 主要用于对数据库中的数据进行插入、删除、修改和查询等操作,熟练运用这些操作,能让你轻松应对日常的数据处理需求。

一、准备工作:创建测试表

在学习 DML 操作之前,我们先创建一个测试表 BK1,后续的操作都将围绕这个表进行。创建语句如下:

sql

create table BK1
(EMPNO INTEGER ,ENAME VARCHAR2(20)
)

这里需要注意的是,在 Oracle 中,除了字段值之外,其他内容如表名、字段名等不区分大小写。

二、插入记录:向表中添加数据

在 SQL 中,添加数据使用 insert 关键字,其基本格式为 insert into 表名(字段1,字段2…) values(值1, 值2..)。具体有以下几种插入方式:

1️⃣部分字段添加

当我们只需要为表中的部分字段插入值时,可以这样操作:

sql

Insert into bk1(EMPNO) values(2);

这种情况下,未插入值的字段会取默认值;如果该字段没有设定默认值,则为 NULL(空值)。

2️⃣所有字段插入数据

若要为表中的所有字段插入数据,字段名可以省略,但需要保证插入数据的类型、顺序和数量与表定义时一致。例如:

sql

Insert into bk1 values(1,‘zhangsan');

3️⃣插入空值

如果要为某个字段明确插入空值,可以使用 null 关键字,如下:

sql

Insert into bk1(EMPNO,DEPTNO) values(2, null);

三、删除记录:移除表中的数据

删除数据使用 delete 关键字,基本格式为 delete from 表名 where 字段名=值。此外,还有其他一些删除相关的操作。

1️⃣删除指定行

通过 where 子句可以指定删除满足条件的行,例如:

sql

Delete from bk1 where EMPNO = 1;

2️⃣删除指定字段为空值的记录

需要注意的是,删除和查询空值时不能使用 =null,而应使用 is null。比如删除 ENAME 为空值的记录:

sql

Delete from bk1 where ENAME IS NULL;

3️⃣删除表所有记录

如果要删除表中的所有记录,可以使用:

sql

Delete from bk1

这种方式在数据量大时效率较低,但删除操作可以通过回滚恢复数据。

4️⃣使用 truncate 关键字删除所有记录

truncate 关键字也能删除表中所有记录,其语法为:

sql

truncate table bk1;

它的效率较高,但删除后不能回滚,且不能用于删除指定记录。

5️⃣删除表结构

如果表已经作废,想要同时删除表结构和数据,可以使用 drop 关键字:

sql

Drop table bk1

四、修改记录:更新表中的数据

修改记录使用 update 关键字,基本格式为 update 表名 set 字段名 = 值 where 字段名 =值

1️⃣修改单个字段

例如,将 EMPNO 为 1 的记录的 ename 修改为 smith

sql

update bk1 set ename = ‘smith' where EMPNO =1;

2️⃣修改多个字段

修改多个字段时,字段之间用逗号分隔。比如:

sql

update bk1 set ename = ‘john’ ,empno = 3 where empno =1;

需要特别注意的是,任何 DML 语句执行完毕后,必须执行 commit 语句提交,否则修改不会被保存。

五、简单查询:获取表中的数据

查询是数据库操作中使用最频繁的操作之一,通过查询可以获取我们需要的数据。

1️⃣查询所有列

使用 * 可以查询表中的所有列:

sql

Select * from bk1;

2️⃣查询指定列

如果只需要查询部分列,可以在 select 后指定列名,多个列名之间用逗号分隔。例如:

sql

Select empno,ename from emp;

3️⃣消除重复行

当查询结果中有重复值时,使用 distinct 关键字可以只显示一个,如:

sql

select distinct empno from bk1;

4️⃣别名的使用

别名就是给列或表起的名字,合理使用别名能让查询语句更清晰易懂。

  • 给字段起别名:

sql

Select ename “员工姓名”from bk1;
Select ename as“员工姓名”from bk1 ;
Select ename 员工姓名 from bk1;

可以加引号,也可以不加,但建议加上引号遵循潜规则。

  • 给表起别名:

sql

Select b.* from bk1 b;
Select b.ename from bk1 b;

5️⃣使用算数表达式

SQL 允许在查询或设置值时使用算术表达式。比如在 bk1 表中添加 sal(月工资)字段并添加记录后:

  • 查询所有人的年薪:

sql

Select sal*12 from bk1;

  • 给所有人的月薪加 100:

sql

Update bk1 set sal = sal+100;

6️⃣|| 操作符

|| 在 Oracle 中用于字符串和字段的拼接,例如:

sql

Select empno||ename from bk1;

六、条件查询:精准获取所需数据

WHERE 子句用于条件查询,通过设置条件可以精准获取我们需要的数据。

1️⃣比较运算符

Oracle 中可以使用的比较运算符有

  • =:判断是否相等
  • != 和 <>:不等于
  • >=】:大于【等于】
  • <=】:小于【等于】
  • Is null:判断是否为空

例如:

sql

-- 查询名为‘SMITH’的人的信息
Select * from bk1 where ename=‘SMITH’;
-- 查询所有名字不是‘SMITH’的人的信息
Select * from bk1 where ename != ‘SMITH’;
Select * from bk1 where ename <>‘SMITH’;
-- 查询工资大于1000的人员
Select * from bk1 where sal>1000;
-- 查询工资小于等于5000的人员
Select * from bk1 where sal<=1000;
-- 查询名字为空的人员信息
Select * from bk1 where ename is null;

2️⃣逻辑运算符

常用的逻辑运算符有:

  • Not:取反
  • And:并且
  • Or:或者
  • Between A and B:在 A 和 B 之间(包含 A 和 B)

例如:

sql

-- 查询名字不为空的人员的信息
Select * from bk1 where ename is not null;
select * from bk1 where not(ename is null);
-- 查询empno大于1,并且sal大于1000的人员信息
Select * from bk1 where empno>1 and sal>1000;
-- 查询empno大于1,或者sal小于1000的人员信息
Select * from bk1 where empno>1 or sal<1000;
-- 查找工资在3000-5000之间的人,包括3000和5000
select ename ,sal from bk1 where sal between 3000 and 5000;
-- 等同于
select ename ,sal from bk1 where sal >= 3000 and sal<=5000;

3️⃣In 操作符

In 表示包含的意思,用于查询字段值在指定集合中的记录。例如:

sql

Select * from bk1 where empno in (7788,7889);

该语句查询 empno 在 7788、7889 中的 bk1 行的所有信息。

4️⃣like 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式,进行模糊查询。其中 % 表示 0 到多个字符,_ 表示单个字符。例如:

sql

-- 查询首字符为‘S’的人员信息
SELECT * FROM bk1 WHERE ename LIKE ‘S%’;
-- 查询第二个字符为‘A’的人员信息
SELECT * FROM bk1 WHERE ename LIKE ‘_A%’;

5️⃣交互式操作符

& 可以代替变量,要求用户输入,例如:

sql

select * from bk1 where ename = ‘&ename’;

七、排序:对查询结果排序

Oracle 中使用 order by 子句对查询结果进行排序,格式为 order by 字段1 排序方式【,字段2 排序方式…】。排序方式有:

  • desc:降序排序
  • asc:升序排序(默认,可以不写)

例如:

sql

-- 查询所有人信息,并按工资升序排序
Select * from bk1 order by sal asc;
-- 查询所有人信息,优先按工资升序排序,如有相同,按员工号降序排序
Select * from bk1 order by sal asc, empno desc;
-- 对于查询为较为复杂的算术表达式,可使用别名排序
-- 查询员工名和年工资,并按年工资降序排序
Select ename,sal*12 “年薪” from bk1 order by “年薪” desc;
http://www.dtcms.com/a/330481.html

相关文章:

  • 【软件测试】自动化测试 — selenium快速上手
  • Java设计模式之《策略模式》
  • STM32L051C8与STM32L151C8的主要区别
  • visual studio调试cmake项目记录
  • 用飞算JavaAI一键生成电商平台项目:从需求到落地的高效实践
  • 远程影音访问:通过 cpolar 内网穿透服务使用 LibreTV
  • Mybatis学习笔记(九)
  • Spring Boot + Redis + 布隆过滤器防止缓存穿透
  • [已解决]当启动 Spring Boot 应用时出现 Using generated security password xxx提示
  • OpenCV 视频处理全解析
  • EI学术会议 | 可再生能源、智能电网、电力系统优化、能源存储技术
  • Linux系统Namespace隔离实战:dd/mkfs/mount/unshare命令组合应用
  • 缓存元数据损坏操作步骤(lvmcache修复)
  • 微软推出AI恶意软件检测智能体 Project Ire
  • 截断重要性采样(TIS)在医疗AI大模型训练中的优化路径
  • 嵌入式领域,ROM和RAM的区别
  • pytorch学习笔记-Loss的使用、在神经网络中加入Loss、优化器(optimizer)的使用
  • 基于SpringBoot+Vue的轻手工创意分享平台(WebSocket即时通讯、协同过滤算法、Echarts图形化分析)
  • 依托AR远程协助,沟通协作,高效流畅
  • 七、SpringBoot工程日志设置
  • [前端算法]动态规划
  • 【保姆级教程】CentOS 7 部署 FastDFS 全流程(避坑指南)
  • 【Docker】安装kafka案例
  • 深入解析 Spring IOC 容器在 Web 环境中的启动机制
  • ActiveReports 19.1 Crack
  • 新手向:Python条件语句(if-elif-else)使用指南
  • 初识HTML
  • 云原生俱乐部-k8s知识点归纳(1)
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 游戏行业DevOps实践:维塔士集团基于Atlassian工具与龙智服务构建全球化游戏开发协作平台