一、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