十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、本文以plsql图形化管理工具为例,使用它连接oracle数据库。当点开plsql的时候,就需要输入用户名、密码、数据库然后连接。如果连接成功,就能查看里面的表等等操作,如果连接不成功,就输入正确的信息再次尝试。
成都创新互联公司主营吉安网站建设的网络公司,主营网站建设方案,app软件开发,吉安h5小程序开发搭建,吉安网站营销推广欢迎吉安等地区企业咨询
2、连接上数据库之后,默认会看到这个主界面。顶部是各种操作菜单,左侧第一个框是最近打开的一些信息,第二个框里面的才是数据库的所有信息。
3、如果不想看到这么多的框,只想专注于数据库的相关信息,就可以将其他框关闭或者隐藏,这两种方式只是点击不同的按钮而已,具体参见截图。
4、在oracle数据库中,用户是属于表空间的,因此,当使用某一个用户登录之后,看到的其实就是这个用户默认的表空间中的信息。这个时候,可以展开【Tables】菜单,就能看到当前表空间下的所有表,如果表的数量不多,就可以直接一个一个的数出数量。
5、如果当前用户具有管理员权限,还可以在【Tablespaces】菜单下面,找到所有的表空间名称,在每个表空间名称下面还有【Tables】菜单,这里面会显示这个表空间下面的所有用户和表。
注意,对于同一个表空间下的相同数据库,在这里会显示每个用户都拥有一套表结构
6、如果想直接获得表空间中的表数量,可以点击左上角的新建图标,选择【SQLWindow】,右侧就会出现一个空白的SQL语句书写窗口
7、获取指定表空间下表数量(这是包含了此表空间下的所有用户的表)
selectcount(1)fromall_tableswheretablespace_name='表空间名称';获取指定表空间下,指定用户的表数量。
selectcount(1)fromall_tableswheretablespace_name='表空间名称'andowner='用户名称';如果将count(1)换成星号,就可以查询表空间下的所有表名信息等。
查询,首先你得清楚你需要什么数据,以及你所需要的数据,存在于哪些表中,或者说与哪些表有关联。
SQL 语句基本查询语法: 不加条件查询,select * from 表名 ; 加条件查询:select * from 表名 where 满足的条件;
多表查询 :select a.* ,b.* from 表1 a,表2 b where a.字段=b.字段;
觉得你应该先弄清楚oracle的常规数据字典的结构,像9i里的常规数据字典中对象名称就有以USER,ALL,DBA为前缀的对象。
以USER为例,我们查该对象下有些什么表,就应该执行下列的语句:
SQLselect table_name from user_tables;
类似的,你可以进行替换。:)
如果你想查数据库中所有的表的话,可以查询
SELECT * FROM dba_tables
如果你想查询数据库中某个用户下的表的话,也可以登录这个用户,再查询:
SELECT * FROM USER_TABLES
要想导入外部sql语句可以用命令
sql @e:\文件名.sql
如你想保存 select * from tablename;语句的结果,可以在sql*plus 里面这样:
SPOOL c:\test.sql //这是保存文件的位置
select * from tablename;
SPOOL OFF
弄个字符串变量,设个游标,用括号里那一串;
然后遍历表名,每找到一个表名,就在字符串变量里拼上一段:=
'select
*
from
'||table_name||';',
然后用EXECUTE
IMMEDIATE执行;
然后读下一个表名,直至遍历完毕。
大致就是这么个意思。
select e.empno, e.ename, d.deptno, d.dname
from emp e, dept d
where e.deptno = d.deptno;
在之前所使用的查询操作之中,都是从一张表之中查询出所需要的内容,那么如果现在一个查询语句需要显示多张表的数据,则就必须应用到多表查询的操作,而多表查询的语法如下:
SELECT [DISTINCT] * | 字段 [别名] [,字段 [别名] ,…] FROM 表名称 [别名], [表名称 [别名] ,…] [WHERE 条件(S)] [ORDER BY 排序字段 [ASC|DESC] [,排序字段 [ASC|DESC] ,…]]。
扩展资料:
Oracle 常用的关联查询:
Oracle外连接:
(1)左外连接 (左边的表不加限制)。
(2)右外连接(右边的表不加限制)。
(3)全外连接(左右两表都不加限制)。
outer join则会返回每个满足第一个(顶端)输入与第二个(底端)输入的联接的行。它还返回任何在第二个输入中没有匹配行的第一个输入中的行。
外连接分为三种: 左外连接,右外连接,全外连接。 对应SQL:LEFT/RIGHT/FULL OUTER JOIN。 通常我们省略outer 这个关键字。 写成:LEFT/RIGHT/FULL JOIN。
在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。 如果基表的数据在另一张表没有记录。 那么在相关联的结果集行中列显示为空值(NULL)。
我对你的表进行了整理下,没有使用中文,都是英文编写,严格按照企业的要求,这也是比较好的习惯。
以下是建表语句:
create table T_USER_INFO
(USERID number(5) primary key,
USERNAME varchar2(10),
CREDENTIALS varchar2(20));
create table T_CHARGING
(CHARGINGID number(5) primary key,
USERID number(5),
MONEY number(5),
CHARGINGDATE date);
insert into T_USER_INFO values(1, '张三', '222222');
insert into T_USER_INFO values(2, '李四', '333333');
insert into T_CHARGING values(1, 1, 300, to_date('2008-9-1', 'yyyy-mm-dd'));
insert into T_CHARGING values(2, 1, 300, to_date('2009-9-1', 'yyyy-mm-dd'));
insert into T_CHARGING values(3, 1, 300, to_date('2010-9-1', 'yyyy-mm-dd'));
insert into T_CHARGING values(4, 2, 400, to_date('2014-9-1', 'yyyy-mm-dd'));
用户信息表:
计费表:
接下来是查询语句,分了几步,注意理解。
1、查询每个人的最后缴费时间
select USERID, max(CHARGINGDATE) LASTDATE
from T_CHARGING
group by USERID
执行 结果:
2、将第一步得到的结果与用户信息关联查询
select u.USERID, u.USERNAME, u.CREDENTIALS, t.LASTDATE
from T_USER_INFO u, (select USERID, max(CHARGINGDATE) LASTDATE
from T_CHARGING group by USERID) t
where t.USERID = u.USERID
执行结果:
3、将第二步得到的结果与计费表进行关联查询。
select t0.USERID, t0.USERNAME, t0.CREDENTIALS, t0.LASTDATE, tc.MONEY
from (select u.USERID, u.USERNAME, u.CREDENTIALS, t.LASTDATE
from T_USER_INFO u, (select USERID, max(CHARGINGDATE) LASTDATE
from T_CHARGING
group by USERID) t
where t.USERID = u.USERID) t0, T_CHARGING tc
where tc.USERID = t0.USERID and t0.LASTDATE = tc.CHARGINGDATE;
执行结果: