单表查询
--这是注释
--查询员工表的所有信息
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;