你的這個表有主鍵沒?
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都做網(wǎng)站、成都網(wǎng)站設計、黃陵網(wǎng)絡推廣、小程序設計、黃陵網(wǎng)絡營銷、黃陵企業(yè)策劃、黃陵品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供黃陵建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
如果有主鍵,假設你的這個表的主鍵是sid
那么可以使用
select count(sid) from tablename
來查詢會比你用count(*) 要快的多。使用主鍵字段會用到主鍵索引,會比你去掃描整個表要快的多。
oracle 里面統(tǒng)計某個表的數(shù)據(jù)行的數(shù)量只有使用count函數(shù)來求。如果數(shù)據(jù)量非常大你應該考慮把你的歷史數(shù)據(jù)給清理掉或者使用分區(qū)表 。
可以從表user_tables中查詢。
select
sum(num_rows)
from
user_tables
;
就是顯示用戶所有表的行數(shù)其中num_rows是每個表的行數(shù),用sum加總一下,就是當前用戶所有表的
總行
數(shù)。
但因為user_tables中的數(shù)據(jù)不是
實時
統(tǒng)計,會有時間差,所以以上Sql統(tǒng)計得到的結果與實際會存在一定
誤差
。
select t.*,rownum rn from table1 t --rownum就是記錄所在的行數(shù)
你是指定ID去查詢,得到的記錄只有一條,所以rownum始終是1了,你想要的結果應該是
select tt.*,tt.rn from
(select t.*,row_number() over (order by id) rn from table1 t ) tt
where tt.id = 你要查詢的ID值
如何在oracle中查詢每個表的記錄條數(shù)
可用兩種方法,一種是在oracle的系統(tǒng)表中統(tǒng)計,另一種需要寫存儲過程統(tǒng)計,方法分別如下。
1、系統(tǒng)表中統(tǒng)計:
1
SELECT sum(num_rows) FROM user_tables;
結果:
2、存儲過程統(tǒng)計,代碼如下:
declare
v_tName varchar(50);
v_sqlanalyze varchar(500);
v_num number;
v_sql varchar(500);
cursor c1
is
select table_name from user_tables;
begin
open c1;
loop
fetch c1 into v_tName;
if c1%found then
v_sqlanalyze :='analyze table '||v_tName||' estimate statistics';
execute immediate v_sqlanalyze;
v_sql := 'select NUM_ROWS from user_tables where table_name =upper('''||v_tName||''')';
execute immediate v_sql into v_num;
dbms_output.put_line('表名: '||v_tName||' 行數(shù): '||v_num);
else
exit;
end if;
end loop;
end;
Oracle 動態(tài)SQL處理
你可以參考最后那個 test_pro 存儲過程, 做一定修改.就可以了.
DBA權限下可以查詢dba_tables,里面有個num_rows列
select table_name,num_rows from?dba_tables where ...;
條件可以根據(jù)自己需要來加
num_rows列并不是實時更新的,1小時更新一次。
擴展資料:
Oracle數(shù)據(jù)庫常用sql語句:
一,INSERT (往數(shù)據(jù)表里插入記錄的語句)
INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);
INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;
二,DELETE (刪除數(shù)據(jù)表里記錄的語句)
DELETE FROM表名 WHERE 條件;
三,UPDATE (修改數(shù)據(jù)表里記錄的語句)
UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 條件;
四,改變表的名稱
ALTER TABLE 表名1 TO 表名2;
五,在表的后面增加一個字段
ALTER TABLE表名 ADD 字段名 字段名描述;
六,修改表里字段的定義描述
ALTER TABLE表名 MODIFY字段名 字段名描述;
參考資料:百度百科:Oracle數(shù)據(jù)庫