ORACLE基本DML操作

1 插入记录

  • 创建测试表
create table temp(
       name varchar2(5),
       age number(3)
);

1.1 添加数据

  • 语法:insert into 表名(字段1,字段2…) values(值1,值2…);
  • 示例:
--所有字段插入数据,字段可以省略
insert into temp values('张三',30);
insert into temp(name,age) values('李四',35);
--部分字段插入数据
insert into temp(name) values('王五');
insert into temp(age) values(42);
--插入空值
insert into temp(name,age) values('赵六',null);

1.2 数据持久化

数据如果没有持久化,只能自己看到,且不会保存

commit;

2 删除记录

  • 语法:delete from 表名 where 字段名=值;
  • 示例:
--删除指定行
delete from temp where name='张三';
--删除指定字段空值的行
delete from temp where name is null;
--删除指定字段非空值的行
delete from temp where age is not null;
--删除表中所有记录,效率不高,可以回滚(恢复数据)
delete from temp;
--删除表中所有记录,效率更高,但不可以回滚(无法恢复数据)
truncate table temp;
--删除表结构
drop table temp;

3 修改记录

  • 语法:update 表名 set 字段名=值 where 字段名=值;
  • 示例:
--修改单个字段
update temp set name='钱三' where name='张三';
--修改多个字段
update temp set name='钱三',age=43 where name='钱三';
--不写条件,修改所有数据
update temp set age=53;
--使用表达式
update temp set age=53+5;
--逻辑删除
alter table temp add(dflag number(1));
--dflag字段的值为0表示逻辑删除,1表示没删除
update temp set dflag=1;
update temp set dflag=0 where name='李四';

4 简单查询

  • 复制表:只会复制表的结构和数据,不会复制约束
create table dept as select * from scott.dept;
alter table dept add primary key(deptno);
create table emp as select * from scott.emp;
alter table emp add primary key(empno);
create table salgrade as select * from scott.salgrade;

4.1 列查询

  • 查询所有列
--*会自动解析为所有列,默认按主键进行升序排序
select * from emp;
  • 查询指定列
select empno,ename,sal from emp;
  • 消除重复行
select distinct job from emp;

4.2 别名

4.2.1 字段别名

--as和双引号可以省略
select empno as "工号",
       ename as 姓名,
       sal*2 工资 from emp;

4.2.2 表别名

select e.empno,
       e.ename,
       e.job,
       e.mgr,
       e.hiredate,
       e.sal,
       e.comm,
       e.deptno from emp e;

4.3 算数表达式

select 1+1 from dual;
select empno,ename,sal*12 from emp;

4.4 ||操作符

在oracle中用于字符串和字段的拼接

select empno||'.'||ename from emp;

4.5 条件查询

WHERE 子句用于条件的查询

--查询名字叫做SMITH的员工信息
select * from emp where ename='SMITH的信息';

4.6 比较运算符

=:相等
!=和<>:不等于
>[=]:大于[等于]
<[=]:小于[等于]

select * from emp where deptno=20;
select * from emp where deptno!=20;
select * from emp where deptno<>20;
select * from emp where sal<1500;
select * from emp where sal>=3000;
--值为空使用is
select * from emp where comm is null;
select * from emp where comm is not null;

4.7 逻辑运算符

not:取反
and:并且
or:或
between a and b:在a和b之间

select * from emp where not sal>=3000;
select * from emp where deptno=20 and sal>=3000;
select * from emp where sal<1500 or sal>=3000;
select * from emp where sal between 1500 and 3000;

4.8 in操作符

select * from emp where empno=7369 or empno=7521;
select * from emp where empno in (7369,7521);
select * from emp where empno not in (7369,7521);

4.9 like操作符

用于模糊查询

%:表示n个字符
_:表示单个字符

select * from emp where ename like 'S%';
select * from emp where ename like '%A%';
select * from emp where ename like '__A%';
select * from emp where ename like '___D';

4.10 交互式操作符

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

--注意区分大小写
select * from emp where ename='&ename';
select * from emp where empno='&empno';

4.11 排序

使用order by 子句进行排序

asc:升序排序,默认的排序方式,可以不写
desc:降序排序

select * from emp order by sal;
select * from emp order by sal desc;
select * from emp order by deptno desc,sal asc;
--对于查询为较为复杂的算术表达式,可使用别名排序
select ename,sal*12 年薪 from emp order by "年薪";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值