Oracle 表-初步涉水不深(第一天)
oracle 关系型数据库
注释:面对大型数据处理,市场占有率40%多(但是目前正往分布式转换)
故事:本来一台大型计算机才能处理的数据,美国科学家用100台家用电脑连接,成功处理了数据。。
tables 表格
(emp:员工管理;dept:部门;salgrade: 工资等级)
注释
单行注释:-- 标题
多行注释:/*内容 */
语句
--------------1.起名方式:
1空格+name2 as+名字 2.1as + " name"
select empno ,ename,hiredate 入职年 from emp
select empno ,ename,hiredate as 入职年1y from emp
select empno ,ename,hiredate as "year" from emp
--------------2.列的连接
select empno||'是谁的'||ename,hiredate 入职年 from emp
--------------3.distinct去重查询--where过滤查询
练习:--查询工作是经理的人;--查询工资大于3000的人
select ename from emp where job='manager'
select * from emp where sal>3000
---------------4.多条件and,or, <>连接
select * from emp where deptno=10 and job='manager'
select * from emp where deptno=10 or job='manager'
select * from emp where deptno<>10
---------------5. ....之间 :between and;--or or;--job in
select * from emp where deptno between 10 and 20
select * from emp where deptno =10 or deptno =20 or deptno =30
select * from emp where job in( 'manager','analyst')
-- ------------6.内容是否为空,is null ; is not null
select * from emp where comm is null --jian奖金是否为空
-------------- 7.排序 order by lie desc 降序 asc
--工资从大到小
select * from emp order by sal desc
--入职时间
select * from emp order by hiredate asc
--部门升序,工资降序
select * from emp order by deptno asc ,sal desc
--以年新
select ename,sal*12 from emp order by sal *12 desc
************综合练习标准写法
--练习: 查询一下deptno20 ;sal>2000 ; hiredate
select
ename 名字 ,
empno 编号,
sal 工资,
hiredate 入职年
from
emp
where deptno=20
and sal>2000
order by
hiredate
asc
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------1.模糊查询 like 和 not like :
select ename from emp where ename like '%s%'
select * from emp where ename not like '%s%'
------查询名字或者工作带有s的
select * from emp where ename like '%s%' or job like '%s%'
select * from emp where ename || job like '%s%'
--------------2.字符函数,大小型转换
select lower (ename) from emp
select upper (ename) from emp
--首字母大写
select initcap (ename)from emp
--查名字中含有s的(包括大小写)
--------------字符串的拼接
select concat(concat (ename,deptno),hiredate)from emp
------------求长度
select ename ,length(ename) from emp
select ename from emp where length(ename)=5
--substr(列,起始位置,截取长度)
--substr(列,起始位置)
select ename,substr(ename,2 ,2) from emp
select ename,substr(ename,2) from emp
----------------截取后四位
select ename,substr(ename,-4) from emp
--------------dual 伪表
select substr('18342214598',1,3 ) ||'****'||substr('18342214598',-4 ) from dual
--------------replace 替换(
--名字中有a的替换成b
--准备对象,a替换成b
select replace (ename ,'a','b') from emp
--脱敏
select replace ('18342214598',substr('18342214598',4,4),'****') from dual
--查找名字中没有s的人
select * from emp where ename not like '%s%'
select * from emp where instr (ename,'s') =0 --0没有s =1 表示以s开头
------------------trim 去首尾字母
select ename ,trim ('s' from ename) from emp
--左右填充
select ename ,sal,lpad(sal,6,'0') from emp
select ename,sal, rpad(sal,6,'a') from emp