重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我对你的表进行了整理下,没有使用中文,都是英文编写,严格按照企业的要求,这也是比较好的习惯。
成都创新互联是一家集网站建设,连平企业网站建设,连平品牌网站建设,网站定制,连平网站建设报价,网络营销,网络优化,连平网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
以下是建表语句:
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;
执行结果:
觉得你应该先弄清楚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
1、本文以plsql图形化管理工具为例,使用它连接oracle数据库。当点开plsql的时候,就需要输入用户名、密码、数据库然后连接。如果连接成功,就能查看里面的表等等操作,如果连接不成功,就输入正确的信息再次尝试。
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.字段;
弄个字符串变量,设个游标,用括号里那一串;
然后遍历表名,每找到一个表名,就在字符串变量里拼上一段:=
'select
*
from
'||table_name||';',
然后用EXECUTE
IMMEDIATE执行;
然后读下一个表名,直至遍历完毕。
大致就是这么个意思。