oracle的5个体系结构概念讲解
一、oracle的体系结构===【5个概念】
--1.数据库 database
Oracle数据库 只有一个database 名字orcl
--2.实例 由一系列的进程和内存结构组成,
--实例可以有多个,但是在使用时99.9%都使用一个实例
--3.数据文件 .dbf
存放数据的文件
--4.表空间###
就是数据文件的逻辑映射
--5.用户###
用来操作表空间的
二 、首先是system系统用户,执行如下代码可以【切换用户】。
---------Scott用户默认密码是tiger【重置密码】
使用sql重置Scott的密码
alter user scott identified by tiger
---###---select * from scott.emp; --访问scott用户的emp表
-----------------------以下使用scott用户---------------------------
select * from dept;-- 部门
select * from emp; --员工
select * from salgrade;--工资等级
三、查询
--1.简单查询
1、别名的使用---乱码
select empno as "员工编号" ,ename as 员工姓名 , job "职位" ,mgr 领导 from emp
select empno as "员工编号" from emp
解决乱码
中文乱码问题解决
/*
1.查看服务器端编码
select userenv('language') from dual;
我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK
2.执行语句 select * from V$NLS_PARAMETERS
查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。
如果不是,需要设置环境变量.
否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码.
3.设置环境变量
计算机->属性->高级系统设置->环境变量->新建
设置变量名:NLS_LANG,变量值:第1步查到的值, 我的是 AMERICAN_AMERICA.ZHS16GBK
4.重新启动PLSQL,插入数据正常
*/
2、四则运算
select sal , sal*12 from emp;
3、连接符 ||
--dual伪表 目的:【就是为了配置查询语句】---了解
"员工编号是XXX,姓名是XXX,职位是XXX"
select '员工编号是XXX'||'姓名是XXX'||'职位是XXX' info from dual
select '员工编号是'||empno||'姓名是'||ename||'职位是'||job from emp;
4、去重 distinct
--2.条件查询 where
1、查询工资大于1500并且小于3000的员工
select * from emp where sal>1500 and sal<3000
2、between ..and --包含临界值
select * from emp where sal>=1500 and sal<=3000;
select * from emp where sal between 1500 and 3000;
3、null 不是空字符串也不是0,是未知类型的数据并且 null和null不相等,
查询奖金为空的员工
select * from emp where comm is null
查询奖金不为空的员工
select * from emp where comm is not null
4、not
查询工资不大于1500
select * from emp where not(sal>1500)
5、 in
查询员工编号是7788,7369,7566
select * from emp where empno in(7788,7369,7566)
查询员工姓名是 SMITH JONES SCOTT
select * from emp where ename in('SMITH', 'JONES', 'SCOTT')
--3.模糊查询
like % _
注意:Oracle中是大小写敏感
查询员工姓名中第二个字母是M的
select * from emp where ename like '_M%'
select * from emp where ename like '%M%'
查询员工姓名中带_的
select * from emp where ename like '%1_%' escape '1'
select * from emp where ename like '%d_%' escape 'd'
select * from emp where ename like '%@_%' escape '@'
select * from emp where ename like '%#_%' escape '#'
select * from emp where ename like '%__%' escape '_'
错误的
select * from emp where ename like '%%_%' escape '%'
select * from emp where ename like '%&_%' escape '&'
---4.排序
order by desc asc
按照奖金从高到低排序
select * from emp order by comm desc nulls last
按照奖金从低到高排序
select * from emp order by comm nulls first
四、函数
--1.单行函数
1.1字符串类型
lower--转小写
select lower('ORACLE') from dual
select ename,lower(ename) from emp
upper--转大小
initcap--首字母大写
substr--截取
oracle截取时起始位置写0和1是一样的
select substr('qwertyui',0,4) from dual;--qwer
select substr('qwertyui',1,4) from dual;--qwer
select substr('qwertyui',2,4) from dual--wert
length--长度
select length('qwertyui') from dual--8
replace--替换
select replace('qwertyui','qw','aa') from dual-- aaertyui
concat--连接两个字符串函数 ===推荐使用||
select concat('aaa' ,'bbb') from dual
select concat(concat(concat('aaa' ,'bbb'),'ccc' ),'ddd') from dual