Oracle 数据库查询

单表查询

--这是注释

--查询员工表的所有信息

select * from emp;

--查询员工表中的员工编号,姓名,工资

select empno,ename,sal from emp;

--as 别名(可省略不写)

select empno as 员工编号,ename 姓名,sal  工资 from emp;

--连接符 ||

select  ename || '的月薪是'  ||  sal  from emp;

--除去重复的一行

select distinct  ename from emp;

--order by 进行排序,asc 升序 (默认),desc  降序

--按工资进行升序

select  *from emp order by sal ;

--按工资进行降序

select * from emp order by sal deselsc;

--where 查询条件

--查询名字叫SCOTT的员工信息

select * from emp where ename='SCOTT';

--查询工资为1250的员工信息

select * from emp where sal =1250;

--查询入职日期大于1981-1-1的员工信息

select * from emp where hiredate>'1-1月-81';

--(注意:时间的书写格式)

--between A and B  查询A和B之间,包含A和B

--查询员工工资在800和1000之间的员工信息

select  * from  emp where  sal between 800 and 1000 ;

--in (集合)集合中的任意一个

--查询工资为800,900,1250,3000的员工信息

select * from emp where  sal in(800,900,1250,3000);

--查询佣金为空的员工信息

select * from emp where comm is null;

--查询佣金不为空的员工信息

select * from emp where comm is not null;

--like 模糊查询,通配符%代表所有,_代表一个字符

--查询员工姓名以S开头的基本信息

select * from emp where ename like 'S%';

--查询员工姓名的第二个字符为O 的基本信息

select * from emp where ename like '_O%';

-- and    or       not      逻辑运算符

--查询工资大于900并且名字以S开头的员工信息

select * from emp where  sal>900 and ename like 'S%';

--查询工资大于900或名字以S开头的员工信息

select * from emp where  ename like 'S%' or sal >900;

--查询工资不是800,1250的员工信息

select * from emp where sal not in(800,1250);

--常用字符函数

--查询员工的姓名,并且首字母变为大写

select initcap(ename) from emp;

--查询员工的姓名,全部转为小写

select lower(ename)  from emp;

--查询员工的姓名,全部转为大写

select upper(ename) from enp;

--左移除

select  ltrim('123admin','123') from dual;

--右移除

select rtrim('123admin','123') from dual;

--替换

select replace('hello','e','a') from dual;

--翻译

select translate('hello','el','23') from dual;

--查找字符第一次出现的位置

select instr('adminnn','n') from dual;

--substr(eg,n,m) 截取字符串 n开始,包含n,截取m个

select substr('abcdefg',2,3) from dual;

--concat 字符串连接

select concat('admin','123456') from dual;

--数值函数

--绝对值

select abs(-20) from dual;

--x的y 次幂

select power(2,3) from dual;

--ceil 向上取整

select ceil(12.6) from dual;

--floor 向下取整

select floor(12.6) from dual;

--trunc 截断

select trunc(12.325,2) from dual;

--rount 四舍五入

select rount(12.5) from dual;

--sqrt 开平方

select sqrt(4) from dual;

--mod 取余数

select mod(10,3) from dual;

--sign 取符号

select sign(-1) from dual;

--日期函数

--months_between两个日期间隔的月份

select months_between(sysdate,'9-12月-99') from dual;

--add_months 修改月份

select add_months(sysdate,1) from dual;

--next_day 返回指定日期后的一个星期几的日期

select next_day('8-9月-12','星期四') from dual;

--last_day 返回指定日期的这个月的最后一天

select last_day(sysdate) from dual;

--日期四舍五入 round

select round(sysdate,'year') from dual;

select round(sysdate,'month') from dual;

select round(sysdate,'day') from dual;

--日期做截断 trunc

select trunc(sysdate,'year') from dual;

select trunc(sysdate,'month') from dual;

select trunc(sysdate,'day') from dual;

--to_char日期转字符串

select to_char(sysdate,'yyyy-mm-dd hh:mi:ss')from dual;

--to_date字符串转日期

select to_date('2017年8月16日 16点20分30秒','yyyy"年"mm"月"dd"日"hh24"点"mi"分"ss"秒"') from dual;

--nvl 空转数

select ename,nvl(comm,0) from emp;

--nvl2(e,n,m)e为空转m,不为空转n

select nvl2(comm,'有','无')from emp;

--聚合函数 sum(),avg(),max(),min(),count();

--查询最大工资

select max(sal) from emp;

--查询最小工资

select min(sal) from emp;

--查询平均工资

select avg(sal) from emp;

--查询所有工资

select sum(sal) from emp;

--查询一共有几个员工

select sount(*) from emp;

--聚合函数不可以和单行数据同时使用

select ename, max(sal) from emp; --错误

--group by 分组

--查询平均工资

select deptno ,avg(sal),from emp group by deptno;

--having 分组后的条件

--查询每个部门的平均工资要求平均工资大于2000

select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

--insert 插入语句

--向员工表中插入一条数据

insert into emp values (9527,'周星星','百变超人','9568',sysdate,100,null,10);

--创建一个表的临时表

create table temp

as

select * from emp where 1=2;

--查询结果插入

insert into temp select * from emp;

--update 更新语句

--将周星星的名字改为周晓星

update emp

set ename='周晓星' where ename='周星星';

--delete 删除表中信息

delete emp where empno=9527;

--删除表中所有信息

delete temp;

--drop删除表

drop table emp;












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值