码迷,mamicode.com
首页 > 数据库 > 详细

Oracle数据库入门

时间:2018-02-22 19:48:54      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:extra   数据类型   varchar2   触发器   tables   替换   ice   地址   提取   

一、Oracle

1、oracle服务

1)OracleDBConsoleorcl

Oracle数据库控制台服务,orcl是Oracle的实例标识,默认的实例为orcl。

2)OracleOraDb11g_home1TNSListener

监听器服务,服务只有在数据库需要远程访问的时候才需要。

3)OracleServiceORCL

数据库服务(数据库实例),是Oracle核心服务,该服务是数据库启动的基础,只有该服务启动,Oracle数据库才能正常启动。

启动顺序:OracleOracle_homeTNSListener,OracleServiceORCL,OracleDBConsoleORCL

2、sql*plus

1)常用命令

help[?|topic]

?模糊查询/topic 具体命令

desc[ribe] 查询指定对象的数据结构

如:desc scott.emp

show option 显示SQL*Plus系统变量的值或环境变量的值

如:show user

用户连接命令:

a、conn[ect] conn 用户名/密码@网络服务名 [as sysdba/sysoper]

b、disc[onnect] 断开与当前数据库的连接

c、passw[ord] 修改用户的密码

d、exit 断开与数据库的连接,同时会退出sql*plus

查看系统所有用户:

select username,account_status from dba_users;

查询用户下所有的表:

select table_name from tabs;

select table_name from user_tables;

select tname from tab;

select?*?from?dba_tables?where?owner=‘SCOTT';

2)用户管理指令

忘记管理员密码:

sqlplus/nolog

connect/as sysdba

alter user sys identified by sys

创建新用户:具有DBA权限的用户执行

create user test  identified by 123456

default  tablespace users

temporary tablespace temp

quota 3m on users;

//用户角色

connect Role(连接角色):临时用户,特别是那些不需要建表的用户

resource Role(资源角色):

提供给用户另外的权限以创建他们自己的表、序列、过程、触发器、索引和簇。只可以创建实体,不可以创建数据库结构

dba Role(数据库管理员角色):拥有所有的系统权限,只有DBA才可以创建数据库结构

用户授权

grant sys_privi | role to user | role | public [with admin option]

sys_privi:表示Oracle系统权限,系统权限是一组约定的保留字。

role:角色。

user:具体的用户名,或者是一些列的用户名。

public:保留字,代表Oracle系统的所有用户。

with admin option:表示可再将权限授予另外的用户。

如:grant  connet,resource to test;为用户test授予连接和开发系统权限

收回权限:

revoke sys_privi | role from user | role | public;

如:revoke resource from test;

对象权限:

grant obj_privi | all column on schema.object to user | role | public [with grant option] | [with hierarchy option]

obj_privi:表示对象的权限,可以是alter、execute、select、update和insert等

role:角色名

user:被授权的用户名

with admin option:表示被授权者可再将系统权限授予其他的用户

with hierarchy option:在对象的子对象(在视图上再建立视图)上授权给用户

如:grant select,insert,delete,update on scott.emp to test; 给用户test授予select、insert表soctt.emp的权限

收回对象权限

revoke obj_privi | all on schema.object from user | role | public cascade constraints

cascade constraints:表示有关联关系权限也被撤销

如:revoke delete,update on scott.emp from test; 从test用户撤销scott.emp表的update和delete

修改用户:就是创建新用户把create关键字替换成alter

解锁被锁住的用户:

alter user test account unlock;

删除用户:

drop user 用户名 [cascade]

cascade:级联删除选项,连同该用户所拥有的对象一起删除

3)常用数据类型

a、字符类型

char(n byte/char) 默认1字节n最大2000 末尾填充空格以达到指定长度

varchar2(n byte/char) 最大长度必须指定最大4000 超过指定长度则报错

b、数字类型

number(p[,s]) 1-22字节

binary_float 32位单精度浮点型

binary_double 64位双精度浮点型

c、时间类型

date 没有分秒和时间区

timestamp 没有时间区

timestamp with local time zone 使用数据库时区

d、大对象类型

blob 二进制文件,支持事务处理

clob 字节字符数据,支持事务处理

nclob unicode数据,支持事务处理

bfile lob地址指向文件系统上的二进制文件,维护目录和文件名,不参与事务,支持只读

4)sequence序列————主要用于提供主键值

a、创建序列需要的权限:

create sequence 或 create any sequence

b、语法:

CREATE SEQUENCE sequence  //创建序列名称

[INCREMENT BY n]   //递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1

[START WITH n]     //开始的值,递增默认是minvalue 递减是maxvalue

[{MAXVALUE n | NOMAXVALUE}] //最大值

[{MINVALUE n | NOMINVALUE}] //最小值

[{CYCLE | NOCYCLE}] //循环/不循环

[{CACHE n | NOCACHE}]; //分配并存入到内存中

如:

create sequence seq_test

increment by 1    --每次加1个

start with 1      --从1开始计数

nomaxvalue        --不设置最大值

minvalue 1        --最小值

nocycle           --一直累加,不循环

nocache;          --不建缓冲区

c、序列使用

currval: 返回sequence的当前值

nextval: 返回sequence的下一个值

d、注意事项

currval总是返回当前sequence的值,只有在第一次nextval初始化后,才能使用currval,否则会出错

第一次nextval返回的值是初始值:随后的nextval会自动增加定义的increment by值,然后返回增加后的值

使用cache或许会跳号,比如数据库突然不正常down掉,cache中的sequence就会丢失,可以在定义sequence的时候,使用nocache防止这种情况

e、使用触发器实现自增长

create or replace

trigger trg_customers before insert on test for each row 

begin 

select seq_test.nextval into :new.id from dual; 

end; 

5)分页

a、伪列

rowid行标示符和rownum行号 看不到这两个列,只在数据库内部使用

b、三段式分页

select * from (

select rownum rn, t.* from (

select * from t_users

) t where rownum<=页码值*每页行数

) where rn>(页码-1)*每页行数

6)常用函数

concat(X,Y):连接字符串X和Y

length(X):返回X的长度

substr(X,start[,length])返回X的子字串,从start处开始,截取length个字符,缺省length,默认到结尾

ltrim(X[,TRIM_STR]):把X的左边截去trim_str字符串,缺省截去空格

rtim(X[,TRIM_STR]) 把X的右边截去trim_str字符串

abs(X) X的绝对值

ceil(X) 大于或等于X的最小整数值

floor(X) 小于或等于X的最大整数值

round(X[,Y]) X在第Y位四舍五入

power(X,Y) X的Y次幂

add_months(d,n),在某一个日期 d 上,加上指定的月数 n,返回计算后的新日期。d 表示日期,n 表示加的月数。

last_day(d),返回指定日期当月的最后一天。

extract(fmt FROM d),提取日期中的特定部分。fmt 为:YEAR、DAY等。其中 YEAR、MONTH、DAY可以为 DATE 类型匹配,也可以与 TIMESTAMP 类型匹配;但是 HOUR、MINUTE、SECOND 必须与 TIMESTAMP 类型匹配。

to_char(d|n[,fmt]):把日期和数字转换为制定格式的字符串。Fmt是格式串

to_date(X,[,fmt]) 把一个字符串以fmt格式转换成一个日期类型

to_number(X,[,fmt])把一个字符串以fmt格式转换为一个数字

nvl(X,VALUE):如果X为空,返回value,否则返回X  

nvl2(x,value1,value2)如果x非空,返回value1,否则返回value2

3、jdbc连接数据库————同mysql

驱动类:ojdbc6.jar

类名:oracle.jdbc.driver.OracleDriver

url:jdbc:oracle:thin:@192.168.0.1:1521:orcl

user:scott

password:a1s2d3f4


Oracle数据库入门

标签:extra   数据类型   varchar2   触发器   tables   替换   ice   地址   提取   

原文地址:http://blog.51cto.com/378213986/2072164

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!