[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;