oracle表查询

oracle表查询
oracle表查询

使用逻辑操作符号

问题:查询工资高于500或者是岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J?

SELECT*FROMempWHERE(sal>500orjob='MANAGER')andenameLIKE'J% ';

ν使用orderby字句默认asc

问题:如何按照工资的从低到高的顺序显示雇员的信息?

SELECT*FROMempORDERbysal;

问题:按照部门号升序而雇员的工资降序排列

SELECT*FROMempORDERbydeptno,salDESC;

ν使用列的别名排序

问题:按年薪排序

selectename,(sal+nvl(comm,0))*12"年薪"fromemporderby"年薪"asc;

别名需要使用“”号圈中,英文不需要“”号

ν分页查询

等学了子查询再说吧。。。。。。。。

Clear清屏命令

oracle表复杂查询

ν说明

在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据,现在我们给大家介绍较为复杂的select语句

ν

数据分组——max,min,avg,sum,count

问题:如何显示所有员工中最高工资和最低工资?

SELECTMAX(sal),min(sal)FROMempe;

最高工资那个人是谁?

错误写法:selectename,salfromempwheresal=max(sal);

正确写法:selectename,salfromempwheresal=(selectmax(sal)fromemp); 注意:selectename,max(sal)fromemp;这语句执行的时候会报错,说

ORA-00937:非单组分组函数。因为max是分组函数,而ename不是分组函数.......

但是selectmin(sal),max(sal)fromemp;这句是可以执行的。因为min和max 都是分组函数,就是说:如果列里面有一个分组函数,其它的都必须是分组函数,否则就出错。这是语法规定的

问题:如何显示所有员工的平均工资和工资总和?

问题:如何计算总共有多少员工问题:如何

扩展要求:

查询最高工资员工的名字,工作岗位

SELECTename,job,salFROMempewheresal=(SELECTMAX(sal)FROMemp); 显示工资高于平均工资的员工信息

SELECT*FROMempewheresal>(SELECTAVG(sal)FROMemp);

groupby和having子句

groupby用于对查询的结果分组统计,

having子句用于限制分组显示结果。

问题:如何显示每个部门的平均工资和最高工资?

SELECTAVG(sal),MAX(sal),deptnoFROMempGROUPbydeptno;

(注意:这里暗藏了一点,如果你要分组查询的话,分组的字段deptno一定要出现在查询的列表里面,否则会报错。因为分组的字段都不出现的话,就没办法分组了)

问题:显示每个部门的每种岗位的平均工资和最低工资?

SELECTmin(sal),AVG(sal),deptno,jobFROMempGROUPbydeptno,job;

问题:显示平均工资低于2000的部门号和它的平均工资?SELECTAVG(sal),MAX(sal),deptnoFROMempGROUPbydeptnohavingAVG (sal)<2000;

ν对数据分组的总结

1分组函数只能出现在选择列表、having、orderby子句中(不能出现在where 中)

2如果在select语句中同时包含有groupby,having,orderby那么它们的顺序是groupby,having,orderby

3在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须有一个出现在groupby子句中,否则就会出错。

SELECTdeptno,AVG(sal),MAX(sal)FROMempGROUPbydeptnoHAVINGAV G(sal)<2000;

这里deptno就一定要出现在groupby中

多表查询

ν说明

多表查询是指基于两个和两个以上的表或是视图的查询。在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept表和emp表)

问题:显示雇员名,雇员工资及所在部门的名字【笛卡尔集】?

规定:多表查询的条件是至少不能少于表的个数-1才能排除笛卡尔集

(如果有N张表联合查询,必须得有N-1个条件,才能避免笛卡尔集合)SELECTe.ename,e.sal,d.dnameFROMempe,deptdWHEREe.deptno=d.dep tno;

问题:显示部门号为10的部门名、员工名和工资?

SELECTd.dname,e.ename,e.salFROMempe,deptdWHEREe.deptno=d.dep tnoande.deptno=10;

问题:显示各个员工的姓名,工资及工资的级别?

先看salgrade的表结构和记录

SQL>select*fromsalgrade;

GRADELOSALHISAL

--------------------------------------

17001200

212011400

314012000

420013000

530019999

SELECTe.ename,e.sal,s.gradeFROMempe,salgradesWHEREe.salBETWEEN s.losalANDs.hisal;

扩展要求:

问题:显示雇员名,雇员工资及所在部门的名字,并按部门排序?SELECTe.ename,e.sal,d.dnameFROMempe,deptdWHEREe.deptno=d.dep tnoORDERbye.deptno;

(注意:如果用groupby,一定要把e.deptno放到查询列里面)

ν自连接

自连接是指在同一张表的连接查询

问题:显示某个员工的上级领导的姓名?

比如显示员工‘FORD’的上级

SELECTworker.ename,boss.enameFROMempworker,empbossWHEREwor ker.mgr=boss.empnoANDworker.ename='FORD';

子查询

ν什么是子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

ν单行子查询

单行子查询是指只返回一行数据的子查询语句

请思考:显示与SMITH同部门的所有员工?

思路:

1查询出SMITH的部门号selectdeptnofromempWHEREename='SMITH';

2显示

SELECT*FROMempWHEREdeptno=(selectdeptnofromempWHEREename ='SMITH');

数据库在执行sql是从左到右扫描的,如果有括号的话,括号里面的先被优先执行。

ν多行子查询

多行子查询指返回多行数据的子查询

请思考:如何查询和部门10的工作相同的雇员的名字、岗位、工资、部门号SELECTDISTINCTjobFROMempWHEREdeptno=10;

SELECT*FROMempWHEREjobIN(SELECTDISTINCTjobFROMempWHEREd eptno=10);

(注意:不能用job=..,因为等号=是一对一的)

ν在多行子查询中使用all操作符

问题:如何显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号?

SELECTename,sal,deptnoFROMempWHEREsal>all(SELECTsalFROMemp WHEREdeptno=30);

扩展要求:

大家想想还有没有别的查询方法。

SELECTename,sal,deptnoFROMempWHEREsal>(SELECTMAX(sal)FROMe mpWHEREdeptno=30);

执行效率上,函数高得多

ν在多行子查询中使用any操作符

问题:如何显示工资比部门30的任意一个员工的工资高的员工姓名、工资和部门号?

SELECTename,sal,deptnoFROMempWHEREsal>ANY(SELECTsalFROMem pWHEREdeptno=30);

扩展要求:

大家想想还有没有别的查询方法。

SELECTename,sal,deptnoFROMempWHEREsal>(SELECTmin(sal)FROMem pWHEREdeptno=30);

ν多列子查询

单行子查询是指子查询只返回单列、单行数据,多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询是指查询返回多个列数据的子查询语句。请思考如何查询与SMITH的部门和岗位完全相同的所有雇员。SELECTdeptno,jobFROMempWHEREename='SMITH';

SELECT*FROMempWHERE(deptno,job)=(SELECTdeptno,jobFROMempW HEREename='SMITH');

ν在from子句中使用子查询

请思考:如何显示高于自己部门平均工资的员工的信息

思路:

1.查出各个部门的平均工资和部门号

SELECTdeptno,AVG(sal)mysalFROMempGROUPbydeptno;

2.把上面的查询结果看做是一张子表

SELECTe.ename,e.deptno,e.sal,ds.mysalFROMempe,(SELECTdeptno,AVG( sal)mysalFROMempGROUPbydeptno)dsWHEREe.deptno=ds.deptnoAN De.sal>ds.mysal;

如何衡量一个程序员的水平?

网络处理能力,数据库,程序代码的优化程序的效率要很高

小总结:

在这里需要说明的当在from子句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,当在from子句中使用子查询时,必须给子查询指定别名。

注意:别名不能用as,如:

SELECTe.ename,e.deptno,e.sal,ds.mysalFROMempe,(SELECTdeptno,AVG( sal)mysalFROMempGROUPbydeptno)asdsWHEREe.deptno=ds.deptnoA NDe.sal>ds.mysal;

在ds前不能加as,否则会报错(给表取别名的时候,不能加as;但是给列取别名,是可以加as的)

分页查询

按雇员的id号升序取出

oracle的分页一共有三种方式

1.根据rowid来分

select*fromt_xiaoxiwhererowidin(selectridfrom(selectrownumrn,ridfrom( selectrowidrid,cidfromt_xiaoxiorderbyciddesc)whererownum<10000)wh erern>9980)orderbyciddesc;

执行时间0.03秒

2.按分析函数来分

select*from(selectt.*,row_number()over(orderbyciddesc)rkfromt_xiaoxit) whererk<10000andrk>9980;

执行时间1.01秒

3.按rownum来分

select*from(selectt.*,rownumrnfrom(select*fromt_xiaoxiorderbyciddesc)t whererownum<10000)wherern>9980;

执行时间0.1秒

其中t_xiaoxi为表名称,cid为表的关键字段,取按cid降序排序后的第9981-9999条记录,t_xiaoxi表有70000多条记录。

个人感觉1的效率最好,3次之,2最差。

//测试通过的分页查询okokok

select*from(selecta1.*,rownumrnfrom(selectename,jobfromemp)a1wher erownum<=10)wherern>=5;

下面最主要介绍第三种:按rownum来分

1.rownum分页

SELECT*FROMemp;

2.显示rownum[oracle分配的]

SELECTe.*,ROWNUMrnFROM(SELECT*FROMemp)e;

rn相当于Oracle分配的行的ID号

3.挑选出6—10条记录

先查出1-10条记录

SELECTe.*,ROWNUMrnFROM(SELECT*FROMemp)eWHEREROWNUM<= 10;

如果后面加上rownum>=6是不行的,

4.然后查出6-10条记录

SELECT*FROM(SELECTe.*,ROWNUMrnFROM(SELECT*FROMemp)eWHER EROWNUM<=10)WHERErn>=6;

5.几个查询变化

a.指定查询列,只需要修改最里层的子查询

只查询雇员的编号和工资

SELECT*FROM(SELECTe.*,ROWNUMrnFROM(SELECTename,salFROMem p)eWHEREROWNUM<=10)WHERErn>=6;

b.排序查询,只需要修改最里层的子查询

工资排序后查询6-10条数据

SELECT*FROM(SELECTe.*,ROWNUMrnFROM(SELECTename,salFROMem pORDERbysal)eWHEREROWNUM<=10)WHERErn>=6;

用查询结果创建新表

这个命令是一种快捷的建表方式

CREATETABLEmytable(id,name,sal,job,deptno)asSELECTempno,ename,s al,job,deptnoFROMemp;

创建好之后,descmytable;和select*frommytable;看看结果如何?

合并查询

合并查询

有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符号union,unionall,intersect,minus

多用于数据量比较大的数据局库,运行速度快。

1).union

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。

SELECTename,sal,jobFROMempWHEREsal>2500

UNION

SELECTename,sal,jobFROMempWHEREjob='MANAGER';

2).unionall

该操作符与union相似,但是它不会取消重复行,而且不会排序。SELECTename,sal,jobFROMempWHEREsal>2500

UNIONALL

SELECTename,sal,jobFROMempWHEREjob='MANAGER';

该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。

3).intersect

使用该操作符用于取得两个结果集的交集。

SELECTename,sal,jobFROMempWHEREsal>2500

INTERSECT

SELECTename,sal,jobFROMempWHEREjob='MANAGER';

4).minus

使用改操作符用于取得两个结果集的差集,他只会显示存在第一个集合中,而不存在第二个集合中的数据。

SELECTename,sal,jobFROMempWHEREsal>2500

MINUS

SELECTename,sal,jobFROMempWHEREjob='MANAGER';

(MINUS就是减法的意思)

创建数据库有两种方法:

1).通过oracle提供的向导工具。√databaseConfigurationAssistant【数据库配置助手】

2).我们可以用手工步骤直接创建。

oracle 查看用户、权限、角色

查看用户、权限、角色的命令和视图 a 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户系统权限: select * from dba_sys_privs; select * from session_privs; select * from user_sys_privs; 3.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 4.查看所有角色: select * from dba_roles; 5.查看用户所拥有的角色: select * from dba_role_privs; select * from user_role_privs; b 概述 与权限,角色相关的视图大概有下面这些: DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS: 查询当前用户所拥有的系统权限 SESSION_PRIVS: 查询当前用户所拥有的全部权限 ROLE_SYS_PRIVS:查询某个角色所拥有的系统权限 注意: 要以SYS用户登陆查询这个视图,否则返回空. ROLE_ROLE_PRIVS: 当前角色被赋予的角色 SESSION_ROLES: 当前用户被激活的角色 USER_ROLE_PRIVS: 当前用户被授予的角色 另外还有针对表的访问权限的视图: TABLE_PRIVILEGES ALL_TAB_PRIVS ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限 oracle与用户角色权限相关的视图 Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图. 一. 概述 与权限,角色相关的视图大概有下面这些: 1、DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限。 2、USER_SYS_PRIVS: 查询当前用户所拥有的系统权限。

oracle 创建create user 及授权grant 查看登陆的用户

oracle 创建create user 及授权grant 查看登陆的用户: 以下都可以: show user; select sys_context('userenv','session_user') from dual; select user from dual; 查看所有登录的用户必须为DBA 用户: select username from v$session; sys、system等DBA 用户查看其他用户(test)中的对象(表): SQL> select * from test.student; 创建一个普通用户都把该用户用起来的流程: 1、创建用户 SQL>create user test indentified by test; 这样就创建了一个用户名密码都为test的用户 但这个时候test还是不能登陆成功的,我们需要赋予相应的权限 2、赋予create session的权限 SQL>grant create session to test; 这样test用户就能成功登陆进去 但是此时用户还是不能创建表我们需要赋予用户创建表的权限: SQL>grant create table to test; 但是用户此时还不能创建表因为需要有使用表空间的权限(相当于用户有了进房间的钥匙但是没有进大门的钥匙。。。) 所以也应该赋予相应的权限 SQL>grant unlimited tablespace to test; 这个时候用户就拥有了创建表的权限由于表是用户test的相应的他就拥有了对创建的表的增删查改的权限了 3、查看用户拥有什么权限可以通过查询一个系统的视图(数字字典) SQL>select * from user_sys_privs; 这样就可以知道当前用户的权限 4、撤销权限 SQL> revoke create table from test; ----------------------------- 一些常用视图的区分 dba_tables dba_all_tables user_tables user_all_tables all_tables

如何查看oracle用户具有的权限和角色

如何查看oracle用户具有的权限和角色 上次有同学问我,如何查看一个oracle用户具有的权限和角色,我一时没答上来,回头好好研究了一下,记录一下,备查: 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 5.查看所有角色: select * from dba_roles; 6.查看用户或角色所拥有的角色: select * from dba_role_privs; select * from user_role_privs; 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) select * from V$PWFILE_USERS 比如我要查看用户wzsb的拥有的权限: SQL> select * from dba_sys_privs where grantee='WZSB';

GRANTEE PRIVILEGE ADMIN_OPTION ------------------------------ ---------------------------------------- ------------ WZSB CREATE TRIGGER NO WZSB UNLIMITED TABLESPACE NO 比如我要查看用户wzsb的拥有的角色: SQL> select * from dba_role_privs where grantee='WZSB'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------------------------ ------------------------------ ------------ ------------ WZSB DBA NO YES 查看一个用户所有的权限及角色 select privilege from dba_sys_privs where grantee='WZSB' union select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='WZSB' );

Oracle中查看所有的表,用户表,列名,主键,外键

在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 : selecttable_name from user_tables; //当前用户的表 selecttable_name from all_tables; //所有用户的表 selecttable_name from dba_tables; //包括系统表 select * from user_indexes //可以查询出所有的用户表索引 查所有用户的表在all_tables 主键名称、外键在all_constraints 索引在all_indexes 但主键也会成为索引,所以主键也会在all_indexes里面。 具体需要的字段可以DESC下这几个view,dba登陆的话可以把all换成dba 1、查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columnst,user_indexesi where t.index_nam e = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表 2、查找表的主键(包括名称,构成列): select cu.* from user_cons_columns cu, user_constraints au where cu.constraint _name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列): selectcolumn_name from user_cons_columns cu, user_constraints au where cu. constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table _name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/8510745551.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

查看oracle数据库的连接数以及用户

查看oracle数据库的连接数以及用户 11、查询oracle的连接数 2select count(*) from v$session; 32、查询oracle的并发连接数 4select count(*) from v$session where status='ACTIVE'; 53、查看不同用户的连接数 6select username,count(username) from v$session where username is not null group by username; 74、查看所有用户: 8select*from all_users; 95、查看用户或角色系统权限(直接赋值给用户或角色的系统权限): 10select*from dba_sys_privs; 11select*from user_sys_privs; 126、查看角色(只能查看登陆用户拥有的角色)所包含的权限 13select*from role_sys_privs; 147、查看用户对象权限: 15select*from dba_tab_privs; 16select*from all_tab_privs; 17select*from user_tab_privs; 188、查看所有角色: 19select*from dba_roles; 209、查看用户或角色所拥有的角色: 21select*from dba_role_privs; 22select*from user_role_privs; 2310、查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) 24select*from V$PWFILE_USERS; select count(*) from v$process --当前的连接数 select value from v$parameter where name = 'processes' --数据库允许的最大连接数 修改最大连接数: alter system set processes = 300 scope = spfile; 重启数据库: sqlplus / as sysdba shutdown immediate; startup; 启动监听 #su – oracle $lsnrctl start --查看当前有哪些用户正在使用数据 SELECT osuser, https://www.360docs.net/doc/8510745551.html,ername,cpu_time/executions/1000000||'s', sql_fulltext,machine

Oracle表及字段查询语句

下面为您介绍的语句用于实现Oracle查询用户所有表,如果您对o r a c l e查询方面感兴趣的话,不妨一看。 select * from all_tab_comments 查询所有用户的表,视图等 select * from user_tab_comments 查询本用户的表,视图等 select * from all_col_comments 查询所有用户的表的列名和注释. select * from user_col_comments 查询本用户的表的列名和注释 select * from all_tab_columns 查询所有用户的表的列名等信息(详细但是没有备注). select * from user_tab_columns 查询本用户的表的列名等信息(详细但是没有备注). 一般使用 1: select t.table_name,https://www.360docs.net/doc/8510745551.html,ments from user_tab_comments t 一般使用 2: select r1, r2, r3, r5

from (select a.table_name r1, a.column_name r2, https://www.360docs.net/doc/8510745551.html,ments r3 from user_col_comments a), (select t.table_name r4, https://www.360docs.net/doc/8510745551.html,ments r5 from user_tab_comments t) where r4 = r1 以上就是oracle查询用户所有表的语句介绍。如何在oracle中查询所有用户表的表名、主键名称、索引、外键等 1、查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_ name and t.table_name = i.table_name and t.table_name = 要查询的表 2、查找表的主键(包括名称,构成列): select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au. constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列): select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询): select * from user_constraints c where c.constraint_type = 'R'and c.table_name = 要查询的表

Oracle用户角色权限等操作

oracle 赋予权限 转发评论 02月21日13:00 最基础的sqlplus username/password@[sid] 连接数据库 sqlplus username/password as sysdba 以管理员连接数据库 管理员连接后创建用户sqlplus system/manager@demo as sysdba create user abc identified by abc ; 创建用户abc密码为abc grant all privileges to abc; 给abc用户赋予所有的权限 给自己留个备份以备不时之需 oracle grant 授权语句--select * from dba_users; 查询数据库中的所有用户 --alter user USERNAME account lock; 锁住用户 --alter user USERNAME account unlock; 给用户解锁 --create user USERNAME identified by USERPASS; 建立用户 一般创建用户后需要授予链接数据库权限 grant connect,resource to USERNAME; --grant create tablespace to USERNAME; 授权创建表空间 --grant SELECT on TABLENAME to USERNAME; 授权查询 授权其他动作格式相同 如果要把所有表的查询权限分配给用户可以用这样的 grant select any table to USERNAME; --grant execute on procedure1 to xujin 授权存储过程

oracle查询语句大全

oracle查询语句大全oracle 基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PA TH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.360docs.net/doc/8510745551.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的所有表select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户 SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下)

linux下查看oracle用户权限

select * from dba_tab_privs where GRANTEE like '%SOFT'; linux下oracle用户、权限与角色管理详解 Oracle 数据库用户管理 Oracle 权限设置 一、权限分类: 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。 实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1、系统权限分类: DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。 RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,resource, dba权限。 2、系统权限授权命令: [系统权限只能由DBA用户授出:sys, system(最开始只能是这两个用户)] 授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...; [普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]

例: SQL> connect system/manager SQL> Create user user50 identified by user50; SQL> grant connect, resource to user50; 查询用户拥有哪里权限: SQL> select * from dba_role_privs; SQL> select * from dba_sys_privs; SQL> select * from role_sys_privs; 删除用户:SQL> drop user 用户名 cascade; //加上cascade则将用户连同其创建的东西全部删除 3、系统权限传递: 增加WITH ADMIN OPTION选项,则得到的权限可以传递。 SQL> grant connect, resorce to user50 with admin option; //可以传递所获权限。 4、系统权限回收:系统权限只能由DBA用户回收 命令:SQL> Revoke connect, resource from user50; 系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。 三、实体权限管理 1、实体权限分类:select, update, insert, alter, index, delete, all //all包括所有权限 execute //执行存储过程权限

oracle中查询所有用户表

oracle查询所有用户表的表名、主键名称、索引、外键等1、查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表 2、查找表的主键(包括名称,构成列): select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列): select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询):select * from user_constraints c where c.constraint_type = 'R' and c.table_name = 要查询的表 查询外键约束的列名: select * from user_cons_columns cl where cl.constraint_name = 外键名称 查询引用表的键的列名: select * from user_cons_columns cl where cl.constraint_name = 外键引用表的键 名

Oracle查询用户所有表的语句

Oracle查询用户所有表的语句 下面为您介绍的语句用于实现Oracle查询用户所有表,如果您对oracle查询方面感兴趣的话,不妨一看。 select * from all_tab_comments -- 查询所有用户的表,视图等 select * from user_tab_comments -- 查询本用户的表,视图等 select * from all_col_comments --查询所有用户的表的列名和注释. select * from user_col_comments -- 查询本用户的表的列名和注释 select * from all_tab_columns --查询所有用户的表的列名等信息(详细但是没有备注). select * from user_tab_columns --查询本用户的表的列名等信息(详细但是没有备注). --一般使用1: select t.table_name,https://www.360docs.net/doc/8510745551.html,ments from user_tab_comments t --一般使用2: select r1, r2, r3, r5 from (select a.table_name r1, a.column_name r2, https://www.360docs.net/doc/8510745551.html,ments r3

from user_col_comments a), (select t.table_name r4, https://www.360docs.net/doc/8510745551.html,ments r5 from user_tab_comments t) where r4 = r1 以上就是oracle查询用户所有表的语句介绍。 1、查找表的所有索引(包括索引名,类型,构成列):select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name = i.table_name and t.table_name = 要查询的表 2、查找表的主键(包括名称,构成列): select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name = 要查询的表 3、查找表的唯一性约束(包括名称,构成列): select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'U' and au.table_name = 要查询的表 4、查找表的外键(包括名称,引用表的表名和对应的键名,

oracle系统用户

第一,系统用户sysdba 1,创建表空间 --创建表空间语法:create tablespace 表空间名称 datafile 'dbf文件路径' size 大小 autoextend on; create tablespace kusy datafile'kusy'size1000m autoextend on; --创建表空间 create tablespace myspace datafile'D:\app\Administrator\oradata\orcl\myspace.dbf' size100m autoextend on; 2,创建临时表空间 2-1创建临时表空间 创建临时表空间语法:create temporary tablespace 表名 tempfile '临时表空间存放的dbf文件路径' size 大小 autoextend on; create temporary tablespace mytemp tempfile'D:\app\Administrator\oradata\orcl\mytemp.dbf'size10m a utoextend on ; 2-2删除表空间 --假如表空间为空了就用 drop tablespace 表空间名; --假如表空间不为空就级联删除 drop tablespace 表空间名 including contents and datafiles --但是现在被删除的数据库 dbf文件还是存在的直接删除dbf文件 drop tablespace db1pwd including contents and datafiles; 3,创建用户

Oracle 用户及角色 介绍

Oracle 用户及角色介绍 一. 用户管理 1.1 建立用户(数据库验证) CRE ATE USER DAVE IDE NTIFIED BY pw d DE FAULT TABLESP ACE users TEMP ORARY TABLE SP ACE temp QUOTA 5m ON users; 1.2 修改用户 ALTE R USER DAVE QUOTA 0 ON SYSTEM; 1.3 删除用户 DROP USE R DAVE; DROP USE R DAVE CASCADE; 1.4 显示用户信息 SELECT * FROM DBA_USERS SELECT * FROM DBA_TS_QUOTAS 二.系统权限 系统权限是指执行特定类型SQL命令的权利,用于控制用户可以执行的一个或一类数据库操作。(新建用户没有任何权限) 2.1 授予系统权限 GRANT CRE ATE SE SSION,CRE ATE TABLE TO DAVE; GRANT CRE ATE SE SSION TO DAVE WITH ADMIN OP TION; 选项:ADMIN OP TION 使该用户具有转授系统权限的权限。 2.2 显示系统权限 查看所有系统权限: Select * from system_privilege_map; 显示用户所具有的系统权限: Select * from dba_sys_privs; 显示当前用户所具有的系统权限: Select * from user_sys_privs; 显示当前会话所具有的系统权限: Select * from session_pri v s; 2.3 收回系统权限 RE VOKE CRE ATE TABLE FROM DAVE; RE VOKE CRE ATE SE SSION FROM DAVE;

查看ORACLE 数据库及表信息

-- 查看ORACLE 数据库中本用户下的所有表 SELECT table_name FROM user_tables; -- 查看ORACLE 数据库中所有用户下的所有表 select user,table_name from all_tables; -- 查看ORACLE 数据库中本用户下的所有列 select table_name,column_name from user_tab_columns; -- 查看ORACLE 数据库中本用户下的所有列 select user,table_name,column_name from all_tab_columns; -- 查看ORACLE 数据库中的序列号 select * from user_sequences; -- 上面的所有对象,都可以通过下面的SQL语句查询得到 -- 查询所有的用户生成的ORACLE对象 SELECT * FROM user_objects; -- 查看ORACLE 数据库中所有表的注释 select table_name,comments from user_tab_comments; -- 查看ORACLE 数据库中所有列的注释 select table_name,column_name,comments from user_col_comments; -- 给表加ORACLE的注释 COMMENT ON TABLE aa10 IS '系统参数表'; -- 给列加ORACLE的注释 COMMENT ON COLUMN aa10.aaa100 IS '参数类别'; -- 查看表中列的属性,包括数据类型,是否非空等 DESC aa10; -- 通过系统表,查看表中列的属性,包括数据类型,是否非空等 SELECT table_name,COLUMN_ID,column_name,data_type,data_length,DATA_PRECISION, NULLABLE FROM user_tab_columns ORDER BY table_name,COLUMN_ID; --查看所有表空间 selecttablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name --查看未使用表空间大小 selecttablespace_name,sum(bytes)/1024/1024 from dba_free_space group bytablespace_name; -- 查看数据库中表、索引占用的数据库空间大小 SELECT * FROM user_segments; -- 查看所有表的记录数 CREATE TABLE table_count(table_name VARCHAR2(50),columns NUMBER(20)); -- 通过PB运行下面的语句,得到结果集,将结果集在PB下执行,最后提交 select 'insert into table_count values('''||table_name||''', (select count(1)from '||table_name||'));//'||comments from user_tab_comments;

oracle数据库查询语句大全

oracle数据库查询语句大全 1.select*from table_name where rownum>begin and rownum"+(intPage-1) *intPageSize); 今天想查询一下Oracle数据库下所有的表名或某个用户下的所有表,半天没想起来.还是在网上找到了答案. select table_name from all_tables;//所有的表明 select table_name from user_all_tables;//用户的所有的表 一下是转贴的sql语句的帖子. select*from user_objects;//查询所有的表 select*from dba_tables;//查询所有的表 select*from all_tables;//查询所有的表 select*from user_users//查出一个用户 select*from all_users//查询所有用户 select*from dba_users//查询所有用户 select name,dbid from v$database;//查询数据库名和它的ID select*from https://www.360docs.net/doc/8510745551.html,er_tab_columns;//查询表名,并显示列名 describe表名//查询表结构 select*from https://www.360docs.net/doc/8510745551.html,er_tab_columns where table_name=表名//查询指定表名的字段 2:查询数据库参数

Oracle查询大集锦

Oracle查询大集锦 1、 Select 语句的基本结构 Select <字段名或表达式列表> // * 号代表全部 From <想要查询的表名> //可以是一张表或多张表或视图 Where <查询的条件> //排除不满足条件的行返回需要的记录 Group By <分组的字段名或表达式> //将查询的结果按指定的一个字段或多个字段的值进行分组统计,分组字段或表达式的值相等的被分为同一组 Having <筛选条件> //用于对Group By 字句分组的结果进一步限定搜索条件 Order By <排序的字段名或表达式> //将结果按照指定字段进行排序(升序降序)默认是升序 2、选择数据表所有的列 Select * From Tablename; 3、选择数据表指定的列 Select 商品编号,商品名称,商品价格,库存数量 From 商品信息表; 4、查询时更改列标题 Select 商品编码 [As] good_code, 商品名称 [As] good_name, 商品价格 [As] good_price, 库存数量 [As] stock_number From 商品信息表; 输出结果的时候列名被 AS 后面的替换了 提:[AS]可以省略。 5、查询时使用计算列 Select 商品价格*库存数量 As 金额 From 商品信息表; 6、使用 dual 表查询系统变量或表达式值 提:dual 表是为了给我们在数据库查询中填充 From 字句使用的 任务(1)查询 dual 表的记录数据 Select * From dual; 任务(2)通过系统变量 sysdate 显示系统当前日期 Select sysdate From dual; 任务(3)通过系统变量 sysdate 显示当前年份 Select Extract(Year From sysdate) 当前年份 From Dual; 任务(4)查询序列 user_seq 的当前值 Select https://www.360docs.net/doc/8510745551.html,erID_seq.currval From dual; 任务(5)查询当前用户的名字 Select user From dual; 7、 Distinct选择不重复的行(如果表中有多个Null的记录它们将作为重复值处理) Select Distinct id From Tablename; 8、 Rownum(获取数据表中前面若干行) Select id,name From Tablename Where rownum<8; //查询表Tablename中的前7行 9、 Where子句条件查询 任务(1)从“商品信息表”中查询类型编号为“0103”的商品信息 Select * From 商品信息表 Where 类型编号=’0103’; 任务(2)从“商品信息表”中查询生产日期在2012年12月16日之前的商品信息 Select * From 商品信息表 Where 生产日期=2011; Select * From 商品信息表 Where to_char(生产日期,’YYY’)>=2011; 任务(4)从“商品信息表”中查询价格低于800元,库存数量高于5的商品信息 Select * From 商品信息表 Where 商品价格<800 And 库存数量>5; 任务(5)从“商品信息表”中查询生产日期在‘2012-06-20’和‘2012-12-20’的商品信息 Select * From 商品信息表 Where 生产日期 Between to_date(‘2012-06-20’,’YYY-MM-DD’)And to_date(‘2012-12-20’,’YYY-MM-DD’); 任务(6)从“商品信息表”中查询商品价格分别为‘600元’、‘1000元’、‘1500元’的商品信息 Select * from 商品信息表 Where 商品价格 In(600,1000,1500); 任务(7)从“商品信息表”中查询商品名称‘三星’开头的商品信息 Select * From 商品信息表 Where 商品名称 Like ’三星%’; 任务(8)从“商品信息表”中查询商品描述为空的商品信息

相关文档
最新文档