|
角色
SELECT * FROM dba_roles;
Oracle的所有系统权限
SELECT * FROM system_privilege_map order BY NAME;
Oracle的所有对象权限
SELECT DISTINCT privilege FROM dba_tab_privs;
显示当前数据库的全称:
SELECT * FROM global_NAME;
conn sys/change_on_install as sysdba;――作为系统数据库管理员登录
DROP TABLE r; ――删除表
RENAME r TO r1; ――重命名表名
ALTER TABLE r RENAME column A1 TO A2; ――修改表中的列名
ALTER TABLE r ADD A D; ――增加列的属性
ALTER TABLE r MODIFY A D; ――修改列的属性
ALTER TABLE r DROP A; ――删除列的属性
INSERT INTO r VALUES(); ――插入元组(表中内容)
UPDATE TABLE r SET A WHERE ...; ――更新元组(表中内容)
DELETE FROM r WHERE ...; ――删除元组(表中内容),写日志,可恢复
TRUNCATE TABLE r;__删除元组(表中内容),速度快,不写日志,不可恢复
SHOW linesize; ――显示行的宽度,默认值为80
SET linesize NUMBER; ――设置行的宽度为NUMBER
SET pagesize NUMBER; ――设置每页显示的行数,默认值为14
ALTER SESSION SET nls_date_format='yyyy-mm-dd'; __日期设置成中国人习惯的方式
NVL(D,0) ――如何处理空值null
--增加约束
ALTER TABLE r MODIFY A NOT NULL;--非空
ALTER TABLE r ADD CONSTRAINT cardunique UNIQUE(A); --身份证唯一
ALTER TABLE r ADD CONSTRAINT ADDresscheck CHECK(A in('北京','上海','广州'));
--删除约束
ALTER TABLE r DROP CONSTRAINT A UNIQUE/CHECK;
ALTER TABLE r DROP CONSTRAINT primary key CASCADE;
UPDATE r SET A WHERE ...; ――更新元组(表中内容)
UPDATE r SET (a1,a2,a3)=(SELECT (A1,A2,A3) FROM r WHERE...) WHERE...;
DELETE FROM r WHERE ...; ――删除元组(表中内容)
显示当前用户下的所有表:
SELECT TABLE_NAME FROM USER _TABLEs;
显示当前用户可以访问的所有的表:
SELECT TABLE_NAME FROM all_TABLEs;
显示数据库中全部的表,必须是dba或者具有SELECT any TABLE的权限
SELECT TABLE_NAME FROM dba_TABLEs;
CREATE profile failed_login_lock_NAME limit failed_login_attEMPs num1 password_lock_time num2; ――建立输入密码错误次数达到num1时锁定规定时间num2
CREATE profile password_life_time_NAME limit password_life_time num1 password_grace_time num2 password_reuse_time NUMBER3; ――建立在num1修改密码,宽限天为num2,在NUMBER3天后可以重用
DROP profile profile_NAME(CASCADE); ――删除文件
ALTER USER DB_USER profile profile_NAME; ――对某用户实行这一锁定规则
ALTER USER DB_USER account unclok; ――进行解锁
savapoint a;――设置回滚点,保存点,可预防数据库重要信息的丢失,保存点个数没有限制(可以设置多个回滚点)
ROLLBACK TO a;――回滚到这个点
ROLLBACK;――回滚到最初的状态
COMMIT;――提交,每天都必须的操作,但是会删除全部保存点,释放锁,谨慎使用,使用时确保数据库已经不存在问题!
分页:
ROWNUM
经典例句:SELECT * FROM (SELECT a.*,rownum rn FROM (SELECT * FROM EMP) a WHERE rownum<=10) WHERE rn>=6;
复制一部分:CREATE TABLE myTABLE(id,NAME) as SELECT EMPno,ename FROM EMP;
UNION 合并查询去重 UNION ALL 不去重
INTERSECT 交集查询
MINUS 差集查询,前面减去两者的交集
TO_DATE('1991-12-12','yyyy-mm-dd') TO_DATE('1991/12/12','yyyy/mm/dd') ――指定日期格式
INSERT INTO EMP VALUES(1235,'Test_2','MANAGER',7782,TO_DATE('1998-9-9 12:10:10','yyyy-mm-dd hh24:mi:ss'),1000,100,10);
INSERT INTO EMP VALUES(1236,'Test_3','MANAGER',7782,sysdate,1000,100,10);
SELECT ename,TO_CHAR(hiredate,'yyyy-mm-dd hh24:mi:ss') FROM EMP; ――查询具体时间,小时,分钟,秒,bbs系统常备
SELECT ename,TO_CHAR(hiredate,'yyyy-mm-dd hh24:mi:ss'),TO_CHAR(sal,'L99,999.99') FROM EMP; ――显示本地货币
SELECT * FROM EMP WHERE TO_CHAR(hiredate,'yyyy')=1980; ――显示某一年入职的员工,某一月mm,某一年中的某一月同理yyyy-mm
SET TRANSLATE READ ONLY; ――事务处理集
函数:
LOWER(A);
UPPER(A);
LENGTH(A);
SUBSTR(A,m,n); ――m代表起始位置,n代表取得字符个数
完成首字母大写 ――SELECT UPPER(SUBSTR(A,1,1)) FROM EMP;
完成后面字母小写――SELECT lower(SUBSTR(A,2,LENGTH(A)-1)) FROM r;
合并:SELECT UPPER(SUBSTR(A,1,1))||lower(SUBSTR(A,2,LENGTH(A)-1)) FROM r;
REPLACE(A,search_string,REPLACE_string); ――替换字符
INSTR(char1,char2,[,n[,m]]; ――取字串在字符串的位置
数学函数:
ROUND(A,m); ――四舍五入,保留m位
TRUNC(A,m);――截取数字,保留m位,忽略余数
MOD(A,n);――对A取模n
FLOOR(A);――返回小于或者等于n |