oracle基本操作

oracle基础部分:基本使用;用户管理;表管理

oracle高级部分:oracle表的查询;oracle的权限、角色;oracle的函数;pl/sql编程;oracle数据库管理;索引、约束和事务


oracle基本使用

alter user scott account unlock;

切换用户:

conn sys/root as sysdba;

查看当前用户:

show user;

断开当前用户但不退出sql*plus窗口:

disc[onnect]

断开连接并退出窗口:

exit;

修改自己的密码:

passw

设置行大小,默认80个字符:

show linesize;

set linesize 120;

交互字符&

select * from 表名 where 列名='&abc';

创建或编辑文本

edit c:/aa.sql;//创建

edit c:/aa.sql;//打开

把屏幕显示的记录保存到文件中

spool d:/bak.sql

select * from emp;

spool off;

sql语句必须带";"

pagesize默认显示14行,显示完会换行,打出新表头

set pagesize 100;

oracle用户管理

创建用户(简单版),需具有dba权限

create user 用户名 identified by 密码;

create user chenxb identified by cxb123;//oracle中设置的密码不可以以数字开头

必须授予权限才可以登录

权限 系统权限、对象权限

系统权限120多种:和数据库管理相关的权限

create session登陆到数据库

create table

create index

create view

create sequence 序列

create trigger 触发器

...

对象权限50多种:是和用户操作数据对象相关的权限

update

insert

delete

select

...

角色  自定义角色 预定义角色

预定义角色:把常用的权限集中起来,形成角色

dba

connect

resource

...

自定义角色:自己定义角色

修改密码

alter user 用户名 identified by 新密码;

创建用户细节

sql>create user chenxb identified by cxb123

default tablespace users //默认表空间  表存在的空间

temporary tablespace temp //临时表空间

quota 3m on users; //限制配额

grant create session to chenxb;

grant connect to chenxb;

grant dba to chenxb;

回收权限

revoke

删除用户,默认为cascade 级联,会删除其所有数据,表、视图等

当删除一个用户的时候,如果用户自己已经创建过数据对象,那么删除时需要加选项cascade,表示把这个用户删删除的同时,把该用户创建的数据对象一并删除。如果不想删除其中数据,可以锁定用户。

drop user 用户名 [cascade];

练习:

创建一个用户xiaohong,可以让xiaohong可以登录、创建表、可以操作(crud)自己的表、回收角色、删除该用户

create user xiaohong identified by m123;

grant connect to xiaohong;

grant resource to xiaohong;

connect xiaohong/m123

password xiaohong

旧口令:

新口令:

重新键入新口令:

disconnect;

conn xiaohong/xiaohong

create table user(id number);

insert into user values(1);

select * from user;

conn sys/root as sysdba

revoke connect from xiaohong;

revoke resource from xiaohong;

drop user xiaohong cascade;

oracle方案scheme

当创建一个用户后,如果用户创建了任意一个数据对象,这时dbms就会自动创建一个与用户相对应的方案,该方案名称与用户名一致。因此,oracle可以创建相同表名的表(方案不同)。

授予xiaohong对scott用户emp表的查询或所有权限:

conn scott/tiger

grant select[all] on emp to xiaohong;

conn xiaohong/xiaohong

select * from emp;//默认查询自己的emp表

select * from scott.emp;

update scott.emp set job='Teacher' where job='&job';

将tea把自己拥有的对scott.emp的权限转给stu:

conn scott/tiger

grant all on emp to tea with grant option;

//with grant option表示得到权限的用户可以把权限继续分配

//with admin option如果是系统权限,则带with admin option

conn tea/tea

grant select on scott.emp to stu;

revoke select on scott.emp from stu;

使用profile文件对口令进行管理

需求:只允许某个用户最多尝试登录三次,如果三次没有成功,则锁定两天,两天后才能重新登录

1、建立profile

create profile myprofile1 limit failed_login_attemps 3 password_lock_time 2;

2、分配给某个用户

alter user scott profile myprofile1;

解锁用户

alter user scott account unlock;

终止口令

创建一个账户,其密码10天后过期,宽限期为2天,到时候必须重新设置密码

1、建立profile

create profile myprofile2 limit password_life_time 10 password_grace_time 2;

2、分配给某个用户

alter user scott profile myprofile2;

删除profile

drop profile myprofile1;


to_char函数

select * from emp where to_char(hiredate,'yyyy-mm-dd')>'1993-1-1';

% _

姓名为S开头的人:

select * from emp where ename like 'S%';

查询eno为100,200,800的雇员情况

select * from emp where eno in(100,210,800);

select * from emp order by sal;//默认为升序asc排列  desc降序


to_date使用

to_date(string,'format')

insert into emp(empno,hiredate) values(1111,to_date('1998-11-11','yyyy-mm-dd'));

使用子查询完成行迁移的需求

使用sql建表

create table temp# as select empno,ename from emp where ename like 'S%';

select * from temp#;

使用子查询完成更新

?希望员工scott的岗位、工资、补助与smith员工一样

update emp set(job,sal,comm)=(select job,sal,comm from emp where ename='SMITH') where ename='SCOTT';

oracle函数

从大方面来说,分为单行函数,比如:length ... 和多行函数,比如:max() min() avg() ...

单行函数:select length(ename) from emp; 请查询出名字字符为4的雇员 select * from emp where length(ename)=4;

多行函数:select max(sal) from emp;

单行函数分类:

1、字符函数

用于处理字符相关的函数

replace(char1,search_string,replace_string)

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

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

instr(C1,C2,I,J)

在一个字符串中搜索指定的字符,返回发现的指定的字符的位置;C1 被搜索的字符串 C2 希望搜索的字符串 I 搜索的开始位置,默认为1 出现的位置

,默认为1

?请找出“oracle traning”第二个ra出现的位置

select instr('oracle traning','ra',1,2) from dual;

1.ASCII

返回与指定的字符对应的十进制数

select ascii('A') A,ascii('a') a,ascii(0) zero,ascii(' ') space from dual; //虚表

2.CONCAT

连接两个字符串

select concat('010-','888888')||'转23' 高前景电话 from dual;

select concat(ename,' 是好人 ') from emp; <==>select ename||'是好人' from emp;

3.INITCAP

返回字符串,并将字符串的第一个字母大写;

select initcap('smith') upp from dual;

4.UPPER/LOWER

返回字符串,并将所有字符大写/小写

select upper('aBcDEfgh') upper from dual;

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

5.SUBSTR(string,start,count)

取字符串,从start开始,取count个

select substr('13637063260',3,6) from dual;  637063

把雇员的名字首字母小写,其他字母大写

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

6.字符填充(粘贴)lpad左填充 rpad右填充 rpad(值,总共位数,什么字符填充)

select rpad(ename,20,' '),sal from emp;

7.LTRIM和RTRIM

LTRIM 删除左边出现的字符串

RTRIM 删除右边出现的字符串

删除后面的字符a

select rtrim(' ni shi shui?aaaa','a') from dual;

8.TRIM

去掉指定字符串或是数值前后的某些字符或数值

select trim( 0 from 00099988000) from dual;

9.ABS

返回指定值的绝对值

select abs(100),abs(-100) from dual;

10.CEIL

返回大于或等于给出数字的最小整数  向上取整

select ceil(3.1415926) from dual;

11.FLOOR

向下取整

select floor(3.1415926) from dual;

12.MOD 取模

select mod(5,2) from dual;

13.ROUND

四舍五入

select round(45.2) from dual;

14.TRUNC

截取,若无指定截取到第几位则默认忽略小数点后的值,只取整数

select trunc(45.8) from dual;

若指定

select trunc(123.23456,2) from dual; //123.23

select trunc(123.23455,-2) from dual;//100

15.SYSDATE

系统当前日期

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

16.ADD_MONTHS  非常重要

增加或减去年份

请查询最近3个月入职的员工 //把员工的入职时间加上三个月,与当前时间比较,如果大于当前时间,则该员工为最近三个月内入职

select * from emp where add_months(hiredate,3) >= sysdate;

17.LAST_DAY

返回日期的最后一天

18.MONTHS_BETWEEN(date2,date1)

给出date2到date1的月份

select months_between(to_date('1113-11-1','yyyy-mm-dd'),to_date('1112-11-1','yyyy-mm-dd')) from dual;

19.TO_CHAR

select to_char(sal,'L999G999D99') from emp;

select * from emp where to_char(hiredate,'yyyy')='1988';

20.TO_NUMBER

将给出的字符转换为数字

21.DECODE

select ename 姓名,decode(deptno,10,'10号',20,'20号',30,'30号') 部门 from emp;

22.AVG  MAX  MIN  DISTINCT

ORACLE提供了一套系统函数,可以查询系统信息

SYS_CONTEXT

select sys_context('userenv','terminal') from dual; //当前会话的用户所对应的终端的标识符

select sys_context('userenv','db_name') from dual; //查看当前数据库名称(实例名称)

select sys_context('userenv','language') from dual; //查看会话用户所使用的语言

select sys_context('userenv','nls_date_format') from dual; //查看当前会话用户的日期显示格式

select sys_context('userenv','session_user') from dual; //查看当前会话所对应的数据库用户名

select sys_context('userenv','current_schema') from dual; //查看当前会话客户对应的默认方案名

select sys_context('userenv','host') from dual; //返回数据库所在主机的名称

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容