Oracle

select 列名,列名,...,列名 from 表名 where 条件表达式;

where:条件关键字,后面跟条件表达式,这个条件一般是和数据库中列相关
条件表达式:
    >
    <
    >=
    <=
    !=,<>:表示不等于
    =
在oracle数据库中,数字类型直接写就可以,字符串类型的数据要用单引号括起来

all、any:后面都跟一个集合或者子查询
>all:表示大于集合中最大的元素  >all(1,2,3,4,5) 等价于 >5
<all:表示小于集合中最小的元素  <all(1,2,3,4,5) 等价于 <1
>any:表示大于集合中最小的元素  >any(1,2,3,4,5) 等价于 >1
<any:表示小于集合中最大的元素  <any(1,2,3,4,5) 等价于 <5
--查询员工信息,要求员工的工资比以下的值都低 1600,2000,3000
select * from emp where sal <all(1600,2000,3000);
条件连接符
and:表示并且,当and连接的两个条件同时成立时,总条件才算成立,只要有一个条件不成立,整体不成立
or:表示或者,当or连接的两个条件有一个条件成立,整体条件成立,只有两个条件都不成立时,整体才不成立
is null:表示这个值是空时条件成立
is not null:表示值不为空间条件成立
排序
select 列名,列名,..,列名 from 表名 where 条件表达式 order by 排序列的列名 asc|desc;
!!!!!distinct:去重关键字,跟在列的最前面
order by :后面可以跟多个排序列,跟多个排序列时,
exists:它不和任何列一起使用,后面跟的是一个子查询(查询语句select语句)
如果子查询能查出结果,那么这个条件就是成立的,查不出结果条件不成立
not exists:和exists相反
union all:表示取两个集合的并集,不删除重复元素
union :取两个集合的并集,删除重复的元素
intersect:表示交集!!!!!!!!!
聚合函数:对一组值执行计算,并返回单个值
count(列名|*|常数):它求记录数(数据条数)
max(列名):取最大值
min(列名):取最小值
avg(列名):取平均值
sum(列名):求和

--查询员工表中的员工人数
select count(empno) from emp;
select count(*) from emp;
select count(1) from emp;

count(主键列或索引列)
count(*)
count(常数)
count(普通列)
它们执行效率从上到下,依次降低
update 表名 set 列名=新数值 where 列名=旧数值;

--add 增加 drop 删除 drop 修改 select 查找

ALTER TABLE table_name  ADD column_name datatype

ALTER TABLE table_name DROP COLUMN column_name
例子:
ALTER TABLE emp  ADD jiangjin number;
ALTER TABLE emp DROP COLUMN jiangjin;
集合运算,关键字前后的两个sql表示的结果集要完全相同
--差集:第一个集合的所有元素减去两个集合重叠部分的元素
--Minus:表示差集

select * from emp;
--查询EMP表的所有东西
select ENAME from emp;
--查询EMP表格中的ENAME列
select EMPNO as 员工编号,ENAME as 姓名,JOB as 工作,MGR 上级编号,HIREDATE 入职日期,SAL 工资,
COMM 奖金,DEPTNO 部门编号 from emp;
--给表、视图取别名时不能加as
select * from emp e;
--查询工资大于1500的员工信息
select * from emp where sal>1500;
--查询名字叫SMITH的员工的信息
select * from emp where ename !='SMITH'
--查询不是10号部门的员工的信息
select * from emp where deptno!=10;
select * from emp where deptno<>10;
--查询emp表中,工资是800,1600,或者3000的员工信息
select * from emp where sal in (800,1600,3000);
select * from emp where sal not in (800,1600,3000);
--查询员工姓姓名S结尾的员工信息
select *from emp where ename like '%S';
--查询emp表中员工姓名的第二个字符是L的员工信息
select * from emp where ename like '_L%';
--查询员工姓名中有_的员工信息
--escape加一个定义转义符号
select *from emp where ename like '/_' escape '/';
--查询比下任意一个(1600,2000,3000)工资高的员工信息
SELECT * FROM EMP
select * from emp where sal > any(1600,2000,3000);
--查询工资比所有人(1600,2000,3000)都高的员工信息
select*from emp where sal>all(1600,2000,3000);
select * from emp where exists(select * from emp where sal>1000);
select * from emp where sal>1000;
--查询没有佣金的员工信息
select * from emp where comm is null;
--查询有佣金的员工信息
select * from emp where comm is not null;
--查询员工的年薪
select 2*3 from dual;
select ename,sal*12 from emp;
--select 列名,列名,..,列名 from 表名 where 条件表达式 order by 排序列的列名 asc|desc;
select * from emp where sal>1000 order by  sal desc;--降序
select * from emp where sal>1000 order by  sal ;--升序 asc(默认就是升序,可不用写)
--查询员工的最小,最大,平均,总和工资
select min(sal),max(sal),avg(sal),sum(sal) from emp;
--查询计数数量
select count(sal) from emp;
select count(ename) from emp;
--查询员工工资大于1000的员工信息
select * from emp where sal>1000 order by DEPTNO desc;
--查询员工工资小于3000的员工信息
select * from emp where sal<3000;
--查询工资在1000到3000之间的员工信息
---intersect 表示交集
select * from emp where sal>1000 intersect select * from emp where sal<3000;
select * from emp;
select * from emp where sum(sal,comm)>1500;       
--查询各个部门的员工人数
select deptno,count(empno) from emp group by deptno;
select deptno,count(empno) 个数 from emp group by deptno;
update emp set sal = 700.00 where sal = 800.00;
 update emp set sal = 1300.00 where  EMPNO=7934;
--add 增加 drop 删除 update 修改 select 查找
select * from emp;
update emp set comm = 0 where comm is null;
--增加一个名为总收入数字类型的列
ALTER TABLE emp  ADD 总收入 number;
--删除一个名为总收入的列
ALTER TABLE emp DROP COLUMN 总收入;
--工资大于800小于1600的交集
select * from emp where sal>800
intersect
select * from emp where sal<1600;
--总收入的一栏写上工资和奖金的和;
update emp set 总收入=sal+comm where 总收入 is null;
--差集:第一个集合的所有元素减去两个集合重叠部分的元素
--Minus:表示差集
select * from emp where sal>2000
minus
select * from emp where sal<3000;
--等同于
select * from emp where sal>=3000;
--集合运算,关键字前后的两个sql表示的结果集要完全相同
select * from emp;
select * from dept;
select job,sal from dept  cross join emp;
select e.*,d.deptno dno,d.dname,d.loc from dept d cross join emp e;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值