Oracle常用命令
1、登录数据库
默认账户 默认密码 拥有权限
sys 123456 as sysdba 拥有数据库的最高权限
system 123456 dba(数据库管理员)
scott tiger 一般权限(scott据说是Oracle公司的第一个员工,tiger是一只猫咪的名字)
2、查询当前登录的账户
show user
3、锁定/解锁账户命令(只能是权限高的一方锁定低的一方,权限分明 )
alter user 锁定账户的名称 account lock;
alter user 解锁账户的名称 account unlock;
4、切换登录的账户(connect 也可以简写为conn,一样的效果)
connect 账户名称/密码
5、修改密码的命令
alter user 账户名称 identified by 新密码
6、授权/撤销授权命令(只能是拥有高级权限的账户对低权限的账户的操作)
授权:grant 权限 to 账户名称
赋予单一的权限
例子:scott账户想要查看system账户的text表,但显然scott权限不足,所以可以通过system账户赋予scott账户查询text表格的权限,如下:
grant select on text to scott;
一次赋予多种权限
例子:scott账户想要查看system账户的某text表并且添加数据,但显然scott权限不足,所以可以通过system账户赋予scott账户查询、添加这张text表的权限,如下:
grant select,insert on text to scott;
取消对某一账户的授权:Revoke 权限 from 账户名
例子:当前账户取消scott账户查询text表的权限,如下:
Revoke select on text from scott;
7、创建账户
create user 账户名称 identified by 密码
给用户赋予所有权限:grant dba to 账户名
给新创建的账户赋予登录的权限:grant create session to 账户名称
给用户赋予表操作的权限:grant create table to 账户名
给用户赋予表空间操作的权限:grant unlimited tablespace to 账户名
赋予连接数据库的权限:grant connect to 账户名
查看当前用户所有权限:select * from user_sys_privs
查看当前用户对表的权限:select * from user_tab_privs
8、创建角色
create role 角色名称
grant insert on 表 to 角色 --将插入表的信息
revoke insert on 表 from 用户 --收回farxix角色的权限
grant 角色1 to 角色2 --将角色1的权限授权给角色2
alter user 角色名 default 角色名,角色2 --修改用户默认角色为角色2
drop role 角色名 --删除角色
9、创建序列(相当于表格中的自增ID)
create sequence 序列名 --简单创建序列(初始值为1,自增为1)
createsequence 序列名 start with 初始值 increment by 自增值 maxvalue 最大值 --自定义序列
select 序列名.nextval from dual -- 查询序列(执行一次查询,则序列自增一次)
10、条件分支语句
DECLARE i int:=1;
BEGIN --开始
select * from 表名 where 条件; --查询
IF 条件满足(如:userInfo.name = "小明") THEN --条件判断
update userInfo set userInfo.name="小白" where userInfo.name="小明"; --满足条件之后的具体操作
END IF; --结束判断
END; --结束
11、三大循环语句
基本循环LOPP
DECLARE
K INT := 1;
BEGIN
LOPP
DBMS_OUTPUT.PUT_LINE(K); -- 具体操作(输出操作)
K := K+1;
EXIT WHEN K=10; -- 一定要包含EXIT语句,否则死循环
END LOOP;
END;
WHILE循环
DECLARE
K INT := 1;
BEGIN
WHILE K<10 LOOP
DBMS_OUTPUT.PUT_LINE(K); -- 具体操作(输出操作)
K := K+1;
EXIT WHEN K=10; -- 循环语句退出条件
END LOOP;
END;
FOR循环
DECLARE
K INT := 1;
BEGIN
FOR K IN 1..10 LOOP
DBMS_OUTPUT.PUT_LINE(K); -- 具体操作(输出操作)
END LOOP;
END;
12、CASE语句
DECLARE
K INT := 10;
BIGIN
CASE
K
WHEN 10 THEN -- 判断条件 K=10
DBMS_OUTPUT.PUT_LINE(K); -- 具体操作(输出操作)
END CASE;
13、SQL函数
-- 数值函数
SELECT ABS(-15.9) FROM DUAL; -- ABS() 函数 返回数字的绝对值
SELECT CEIL(-15.9) FROM DUAL; -- CEIL() 函数 返回数字的最小整数
SELECT FLOOR(-15.9) FROM DUAL; -- FLOOR() 函数 返回小于等于数字的最大整数
SELECT ROUND(N,[M]) FROM DUAL; --ROUND() 函数 用于执行四舍五入算法. 如果省略M,则四舍五入至整数位;M为负数,则四舍五入到小 数点前M位;M为正数,则四舍五入至小数点后M位
SELECT TRUNC(-15.9) FROM DUAL;-- TRUNC() 函数 用于截取数字.如果省略M,则只保留整数位;M为负数,则截取N至小数点前的M位;M 为正数,则截取N至小数点后的第M位
-- 字符函数
SELECT LTRIM(char[,set]) FROM DUAL; --LTRIM() 函数 将字符串char左端包含的set中的任何字符,set默认为空格
SELECT RTRIM(char[,set]) FROM DUAL; --LTRIM() 函数 将字符串char右端包含的set中的任何字符,set默认为空格
SELECT LOWER(char) FROM DUAL; --LOWER() 函数 将字符串转化为小写格式
SELECT UPPER(char) FROM DUAL; --UPPER() 函数 将字符串转化为大写格式
SELECT LENGTH(char) FROM DUAL; -- LENGTH() 函数 返回字符串的长度
SELECT REPLACE(char,serch_string[,replace_string]) FROM DUAL; -- REPLACE() 函数 将字符串中的字符替换为指定的字符
--转换函数
SELECT TO_NUMBER(char[,fmt[,nls_param]]) FROM DUAL; --TO_NUMBER() 函数 将符合特定数字格式的字符串转化为数字值
SELECT TO_CHAR(DATE | [,fmt[,nls_param]]) FROM DUAL; --TO_CHAR() 函数 将日期型转变为字符串,其中fmt用于指定日期格式, nls_param用于指定NLS参数
SELECT TO_DATE(char[,fmt[,nls_param]]) FROM DUAL; --TO_DATE() 函数 将符合特定格式的字符串转变为DATE类型的值
SELECT NVL(N,M) FROM DUAL; -- NVL() 函数 如果N为NULL,则返回M,如果N不为NULL,则返回N。N,M数据类型必须匹配(任意数据类型)
SELECT NVL2(N,M,K) FROM DUAL; --NVL2() 函数 如果N为NULL,则返回K,N不为NULL,则返回M.N(任意数据类型),N,M(除了LONG类型)