Oracle学习语句总结
- 格式:pdf
- 大小:631.50 KB
- 文档页数:24
Oracle 的基本操作1.Oracle 的基本操作建立用户:create user 用户名identified by 密码。
分配权限:grant connect, resource to 用户名2.◆解锁用户Alter user 用户名account unlock;◆锁定用户Alter user 用户名account lock;13456790-CVBNM,./005555443[0PU65.,,Bxbn. 70◆修改密码Alter user 用户名identified by 新密码;注意:密码不能时纯粹的数字,他和标识符定义一样,以字母开头的字母数字串◆删除用户:Drop user 用户名cascade;3.数据库的打开与关闭打开:Startup数据库需要三个步骤:1、创建一个Oracle实例(非安装阶段)startupnomount2、由实例安装数据库(安装阶段)startup mount3、打开数据库(打开阶段)open关闭:Shutdown normal / immediate /Transaction/ abort关闭方式A I T N 允许新的连接××××等待直到当前会话中止×××√等待直到当前事务中止××√√强制CheckPoint,关闭所有文件×√√√4.体系结构a)内存结构i.系统全局区(SGA):数据库缓冲区高速缓存、重做缓冲区以及各种池ii.15程序全局区(PGA)b)进程结构i.用户进程和服务器进程ii.后台进程:SMON、PMON、DBW n、CKPT、LGWR、ARC n等c)存储结构i.逻辑:数据库、表空间、段、区和Oracle块ii.物理:用于存储数据、参数、重做和操作系统块的文件1.给表起别名select deptno "部门编号",dname 部门名称,loc位置from dept;select deptno as "部门编号",dname as "部门名称",loc as "位置" from dept;2. -- 查看系统时间select sysdate from dual;--认识系统表:dual 它可以安排你的数据,当你的数据不清楚来自某些表,而希望输出在sqlplus中,那你就可以使用它3. 基本常用函数◆字符串函数# LOWER函数作用:将字符串转换成为小写字母# UPPER函数作用:将字符串转换成为大写字母# INITCAP函数作用:将字符串转换成为混合大小写,每一个单词的开始都是一个大写字母,其余字符转换成为小写字母。
select * from emp;select initcap(ename) from emp;# SUBSTR函数作用:取子串函数-- substr('abcdef',3,2)substr('abcdef', -4,2)格式:SUBSTR(C,P,L) 其中:C表示字符串,P表示要提取的起始的字符串的位置,L表示提取的长度。
如果P为负值,表示从字符串的最后一位倒着向前取。
select initcap(lower(substr(ename,0,3))) from emp;# LENGTH函数作用:确定要分析的字符串的长度select length(ename),ename from emp;# LPAD函数作用:用于字符串填充。
填充的是字符串左侧的区域。
格式:LPAD(C,L,S) 其中:C表示将要填充的字符串,L表示填充“之后”字符串的长度,S表示用于填充的符号或者字符# RPAD函数作用:用于字符串填充。
填充的是字符串右侧的区域。
格式:RPAD(C,L,S) 其中:C表示将要填充的字符串,L表示填充“之后”字符串的长度,S表示用于填充的符号或者字符select lpad(ename,6,' ') from emp;# LTRIM函数# RTRIM函数# TRIM函数select length(trim(' abc ')) from dual;# REPLACE函数作用:用于字符串的替换格式:REPLACE(C,S,R) 其中:C表示将处理的字符串,S表示想要查找的字符串,R表示将要替换的字符串。
类似于“查找与替换”功能。
select replace(ename,'A','a') from emp;# CONCA T函数作用:字符串连接函数||select ename||' '||job from emp;select concat(concat(ename,' '),job) from emp;#instr函数确定需要查找的字符串在给定字符串中的起始位置(找不到返回0)Select instr('Gread Wall in China','China') From dual;◆数字函数#ROUND函数作用:用来将数字字段舍入的指定的精度。
select round(3.14567,2) from dual;# TRUNC函数作用:用来将数字字段截断的指定的精度。
格式:TRUNC(N,P)select TRUNC(3.14567,2) from dual;--# MOD函数select mod(3456,1000) from dual;# SQRT 开方函数# CEIL函数返回大于或者等于所给参数的最小整数select sqrt(9) from dual;Select -54.01 , ceil(-54.01) From dual;# FLOOR返回小于或者等于所给参数的最大整数Select -54.01 , FLOOR(-54.01) From dual;◆日期函数-- # TO_DA TE函select * from emp;insert into emp(empno,deptno,hiredate) values(9527,10,to_date('1974-7-8','yyyy-mm-dd'));# MONTHS_BETWEEN函数作用:表示两个月之间相差的月数(以月为单位计量时间)selectonths_between(to_date('2011-10-1','yyyy-mm-dd'), to_date('2010-10-1','yyyy-mm-dd')) from dual;# ADD_MONTHS函数作用:表示在某个日期之后的时间select add_months(sysdate,2) from dual;# NEXT_DA Y函数作用:格式:NEXT_DA Y(d,DA Y) 其中:d表示开始日期,DAY表示将要确定的一周中的某一天select next_day(sysdate,1) from dual;select to_char(sysdate,'DA Y') from dual;◆# NVL函数作用:可以使用NVL函数来解决对可能包含NULL值的字段执行数学运算时导致的问题。
在Oracle9i中,NULL值不等于空格或者0。
在计算中使用NULL值时,结果是NULL值。
NVL函数使用一个值来代替现有的NULL值。
select sal,comm,sal+nvl(comm,0) from emp;--# NVL2函数作用:NVL2函数是NVL函数的一个变化形式,他允许不同的选项,这取决于是否存在NULL值。
格式:NVL2(x,y,z),其中y表示当x不是NULL时所替换的数据,z表示当x是NULL时所替换的数据。
这使用户在处理NULL值时更加灵活。
select sal,comm,sal+nvl2(comm,comm,0) from emp;◆单组分组函数:-- sum 统计和select sum(sal+nvl(comm,0))/14 from emp;-- 平均值avgselect round(avg(sal+nvl(comm,0)),2) from emp;-- 统计行-- 统计有多少人select count(*) from emp;-- 统计多少人拿奖金select count(comm) from emp;-- 统计这些人的工作工种多少种select count(distinct job) from emp;-- 得到最高的工资数select max(sal) from emp;-- 得到最低的工资数select min(sal) from emp;4. 复杂查询-- 使用子查询建立表create table emp2 asselect empno,ename,sal,job,hiredate from emp;select empno,ename,job,sal,deptno from emp where deptno=10;-- 查询原理:where 是行筛选条件。
--1、获取每个职员详细信息:编号,姓名,相应部门的部门编号和部门所在地-- 笛卡尔积Select e.emp_no,e.emp_fname||' '||e.emp_lnameename,e.dept_noe_deptno,d.dept_nod_deptno,d.locationfrom employeee,department d-- 连接查询必须指定重名列来自那张表。
select emp_no,emp_fname||' '||emp_lname ename,d.dept_no,location from employeee,department d where e.dept_no=d.dept_no;----2、获取为项目Gemini工作的所有职员的全部信息select e.*,d.dept_name,d.location fromemployee e,department d,project p,works_on wwhere e.dept_no=d.dept_no andw.emp_no=e.emp_no andw.project_no=p.project_no andp.project_name='Gemini';-- 连接条件:表和表之间的连接关系条件,如果有n张表,就需要n-1个连接关系条件。