常用关键字
insert into---插入数据
delete---删除数据
update---更新一条数据
select---实际工作中尽量不要写*
set---设置某些属性
where---给执行的语句加限制条件
--增加信息 1
insert into p_dept(deptno,dname,loc)
values (50,'ceshi','ceshi');
commit;
--增加信息 2
insert into p_dept
values (60,'ceshi','ceshi');
commit;
--增加信息 3
insert into p_dept(deptno)
values (70);
commit;
--查询
select t.*, t.rowid from P_DEPT t
select *, t.rowid from P_DEPT
select t.deptno from P_DEPT t where t.dname='SALES'
--修改deptno为60的数据dname为ceshi2
update P_DEPT t set t.dname='ceshi2' where t.deptno=60
--删除数据
delete from p_dept e where e.deptno=60;
commit;
in---在某个范围内
--查询工资是800和3000的
select * from p_emp t where t.sal in (800,3000)
like(%, _)---模糊查询, %表示任意个字符, _表示单个字符
--查询name是T 开头的
select * from p_emp t where t.ename like 'T%'
--查询name是T 开头,后面三个字符的
select * from p_emp t where t.ename like 'T___'
order by---(列名或者写索引:1, 2) ASC正序(默认) DESC倒叙
--按照工资排序
select * from p_emp e order by e.sal
--按照职位和工资排序,工资要大到小
select * from p_emp e order by e.job,e.sal desc
--按照第一列排序
select * from p_emp e order by 1
group by---按照某几列分组
having---分组之后的过滤
--按照职位分组
select e.job from p_emp e group by e.job
--按照职位分组,查人数大于2的
select e.job from p_emp e group by e.job having count(*)>2
case...when...---类似于分支
--sex为1=男,0=女
select e.ename 姓名, case e.sex when 0 then '女' when 1 then '男' else '保密' end 性别 from p_emp e
--另一种写法
select e.ename, case when e.sex=0 then '女' when e.sex=1 then '男' else '保密' end from p_emp e
distinct---去除重复
--去重复
select distinct e.job from p_emp e
between...and(闭合区间, 即包括前面的数, 也包括后面的数)
--查工资在800-3000的
select * from p_emp e where e.sal between 800 and 3000
all---表示一个集合中所有的元素
any/some---表示一个集合中任意一个元素
--查询工资最高的
select * from p_emp t where t.sal >=all(select t1.sal from p_emp t1)
常用函数 to_char---转换成字符型数据
to_date---转换成日期型数据
--日期与字符转换,dual为虚拟表
select to_char(t.hiredate,'yyyy-mm-dd') from p_emp t
select to_date('1994-10-20','yyyy-mm-dd') from dual
--计算时间差
select to_date('1994-10-20','yyyy-mm-dd')-sysdate from dual
--查询1990之后出生
select * from p_emp t where t.hiredate > to_date('19900101','yyyymmdd')
分组函数:
mod---取余函数
avg---平均数函数
sum---求和函数
count---计数函数
--计算每个工作的总工资,平均工资,人数 分组
select t.job,sum(t.sal),avg(t.sal),count(t.ename) from p_emp t group by t.job
decode---类似于分支语句的函数
--查询性别
select e.ename ,decode(e.sex,1,'男',0,'女','保密') from p_emp e
substr---分割字符串
--分割name
select substr(e.ename,1) from p_emp e
max---取最大值函数
min---取最小值函数
--查询最高,最低工资
select max(e.sal) from p_emp e
select min(e.sal) from p_emp e
trunc---取整函数
ceil---向上取整函数
floor---向下取整
--取整,向上,向下 可用于日期
select trunc(12.345) from dual
select trunc(sysdate) from dual
select ceil(12.345) from dual
select floor(12.345) from dual
nvl---过滤空值函数
nvl2---过滤空值函数2
--过滤空值为0,只能处理数字
select nvl(e.comm,0) from p_emp e
select avg(e.comm) from p_emp e --除以不为空的人数
select avg(nvl(e.comm,0)) from p_emp e --除以总人数
--可以处理字符串,传三个参数
select nvl2(e.comm,'为空','不为空') from p_emp e
lower---将字母全部改为小写
upper---改为大写
concat---连接两个字符串
? wm_concat---列转行函数(也属于分组函数)
--只能连接两个字符串
select concat('aaa','bbb') from dual
select wm_concat() from --不推荐使用,将一列值链接可分租