Oracle语句以及各种知识点

用户和权限

1创建用户

管理员才有权限创建用户 sys/system

 

--管理员登录

conn sys/oracle@orcl as sysdba;

--创建用户方案---必须管理员身份才能操作  

create user username identified by password;

create user wangwu  identified by w123;

--删除用户方案

drop user username cascade;

---修改密码

alter user username identified by newpassword;

2 用户解锁上锁

--用户解锁和上锁---必须管理员身份才能操作

alter user username account lock;

alter user scott  account lock;

alter user username account unlock;

alter user scott account unlock;

3授权

一般开发只要给用户授予connect 和resource 角色就够了

 

 

3个默认 角色

connection

alter session

create cluster

create database link

create session

create table

create view

create sequence

resouce

create cluster

create indextype

create table

create sequence

create type

create procedure

create trigger

dba

最高角色包含所有的权限

--授权  --三大默认角色

grant  privilegename  to  username; --授予角色语法

connect --包含登录、创建表、视图、序列

resource--包含创建存储过程触发器

dba---包含所有的系统权限

--管理员  创建王五用户,然后给它开发角色

create user wangwu  identified by w123;(本身建立的用户没有任何权限和功能,需要赋予)

grant connect,resource to wangwu;

 

 

 

 

 

4回收权限

---回收权限(要在管理员身份下才能回收)

revoke privilegename  from username;

revoke connect from wangwu;

5 权限传递

--授权(对象权限)

grant select on scott.emp to ken;

grant update on scott.emp to wangwu;

--回收权限(对象权限)

revoke select on scott.emp from ken;

revoke  update on scott.emp from wangwu;

 

---权限的传递 with admin option传递系统权限  with grant option 传递对象权限

create user userone  identified by one;

create user usertwo  identified by two;

grant  create session to userone with admin option;

--with admin option  在userone下面可以 将 create session 系统权限授权给其他用户

grant  select on scott.emp  to userone with grant option ;

--with grant option  在userone下面可以 将 select 对象权限授权给其他用户

6 规则

 

---规则 profile

create profile notLoginDay limit  failed_login_attempts  3  password_lock_time  100;

--添加规则

alter user scott profile notLoginDay;

7字符函数

/*字符函数*/

--当没有表可以用个的时候oracle自带一个虚表dual

-- || 表示连接符号  将字符串连接到一起

Lower(char):将字符串转化为小写格式

?将所有员工的名字按小写的方式显示

select  lower(ename),lower(job) from emp;

Upper(char):将字符转化为大写的格式

select  upper('abcd')  from dual;

Length(char):返回字符串的长度

?显示正好为5个字符员工的姓名

select * from emp   where  length(ename)=5;

Substr(char,m,n):取字符串的子串  m 表示开始的位置 n 字符个数

?显示所有员工姓名的前三个字符

select ename ,substr(ename,1,3) from emp;

Trim,Ltrim,Rtrim:去掉空格

select   '=='||  trim('    abc   ')  ||'==' from dual;

?以首字母大写的方式显示所有员工

select ename, substr(ename,0,1)||  lower( substr(ename,2,length(ename)-1) )   from emp;

Replace (char1,search_string,replace_string)

 ? 显示所有的员工姓名将A替换成“我是A”

select  ename, replace(ename,'A','我是A')as result from emp;

Instr(char1,char2,[,n[,m]])取字符串的位置  n 开始位置 m 第几个char2

 ? 从第二个字符开始找到员工姓名中A所在的位置

select ename,  Instr(ename,'A',1,2) from emp;

8数学函数

/*数学函数*/

Round(n,[m])

四舍五入,如果省掉m,则四舍五入到整数,如果m是整数,则四舍五入到小数点的m位置后,如果是m负数,则  四舍五入到小数点m的位前

?  73.2564  四舍五入到小数点后2位

select  round(73.2564,2)    from dual;

trunc(n,[m])

用户截取数字,如果省略m,就截去小数部分,如果m是整数就截取到小数点后m位后,如果m是负数,则截取到小数点的前m位

? 73.2564  截取到小数点后3位

select  trunc(73.2564,3)    from dual;

Mod(n,[m])取模

?   8%3=?

select mod(8,3) from dual;

Floor(n)

 向下取整

? 7.5846 向下取整

Ceil(n)

向上取整

?7.5846 向上取整

select  floor(7.1289) ,Ceil(7.1289) from dual;

9/*日期函数*/

 

1 sysdate :返回系统时间

select  sysdate from dual;

2 current_date 返回当前时间

select  current_date from dual;

3 Next_day(date,week) 给定时间的下一个星期是几号   /*week 数字和英文*/

 select  next_day(sysdate,'MONDAY') from dual;   

4 add_months(d,n):返回在时间d上加n个月的时间

select add_months( sysdate,12 ) from dual;

5 last_day(d):返回指定日期所在月份的最后一天

 select last_day( sysdate) from dual;

?查找已经入职362个月多的员工

?显示满30年份服务年限的员工的姓名和受雇日期

?每个员工加入公司的天数

?下个星期一是多少号

?找出各月倒数第三天受雇的所有员工

转换函数

 

/*

转换函数

时间---->字符

字符---->数字

字符---->时间

*/

/*to_char( 时间,格式)*/

---------------------时间格式----------------------

格式:

yyyy:显示年份

yy :显示年份后2位

mm:月份

dd:号

hh /hh24:小时

mi分

ss秒

select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual;

-----------------货币格式--------------------

9 :显示数字

0 :不足则补0

.  :显示小数点

,;  显示分隔符

$ :  显示美元符号

L :  显示本地货币

C : 显示国际货币符号

G : 制定位置显示分割符号

D : 制定位置显示小数点符号

?薪水指定货币符号

 

8756984.555

$8,756,984.555

$9,999,999.99

L9,999,999.99

select to_char(8756984.5,'L9,999,999.99') from dual;

select to_char(8756984.5,'$9G999G999D99') from dual;

---------------字符转日期  to_date('2010-10-10','yyyy-mm-dd')-------------------------

select to_date('2017-2-27','yyyy-mm-dd') from dual;

insert into  emp values( 9900, 'ZHANGSAN','CLERK',7698,to_date('2010-10-10','yyyy-mm-dd'),2500.00 ,0.00,30);

---------------字符转数字  To_number ---------------------------------------------------

select to_number('001')*8 from dual;

 

-------------------------聚集函数  count,sum,avg,max,min --------------------------------------------------

---count ---统计总行数

select count(*) from emp;

select count(empno) from emp; --统计员工总人数

---sum-----统计总和

select sum(sal) as total from emp;  --统计所有人员的工资总和

--avg------统计平均数

select avg(sal) from emp; --统计所有人员的工资平均值

--max--最大值---min最小值

select max(sal) as maxSal ,min(sal) as minSal from emp;

---聚合函数不能放到where 作为条件

select * from emp where sal  avg(sal)--错;

select * from emp where sal>(select avg(sal) from emp);---对

--显示当前用户-

 select user from dual;

---decode 布尔判断函数 ------

---查询出CLERK 的人员数量

 select  sum( decode(job,'CLERK',1,0) ) from emp;

 ---查询各个工种有多少人

 select sum( decode(job,'CLERK',1,0) ) as CLERK,

        sum( decode(job,'SALESMAN',1,0) ) as  SALESMAN,

        sum( decode(job,'MANAGER',1,0) ) as  MANAGER,

        sum( decode(job,'ANALYST',1,0) ) as  ANALYST,

        sum( decode(job,'PRESIDENT',1,0) ) as  PRESIDENT,count(*) as total

        from emp;

-nvl(column,default) 非空

----------nvl(column,default) 非空--------------------------------------

---------------------emp表中所有员工在元奖金的基础上增加50元奖金

update emp set comm=nvl(comm ,0 ) +50 ;

数据导出备份和导入

--------------------------数据导出备份和导入

-------------------------注意 导出和导入 必须是CMD 命令行下操作,而不是SQL编辑器中

---导出表  exp 导出关键字   userid用户权限  file 保存的位置  tables 表

exp  userid=scott/tiger@orcl  tables=(dept,emp)  file=c:/scottTables.dmp   

--导出方案

exp  userid=scott/tiger@orcl  owner=scott  file=d:/scott.dmp

--管理员帮忙导出scott方案

exp  userid=sys/oracle@orcl  owner=scott  file=d:/scott.dmp

--导入表  imp导入关键字

imp  userid=scott/tiger@orcl   file=c:/scottTables.dmp  

--导入方案

imp userid=scott/tiger@orcl   file=d:/scott.dmp

--管理员导入  管理员导出过的方案

imp userid=sys/oracle@orcl  file=d:/scott.dmp fromuser=sys  touser=scott

posted @ 2017-02-27 19:59  小女人~大智慧  阅读(372)  评论(0编辑  收藏  举报