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 "年薪";