查看表結(jié)構(gòu),調(diào)用存儲(chǔ)過(guò)程:call SP_TABLEDEF("模式名", "表名")
查看表屬于哪個(gè)用戶:select * from dba_tables where TABLE_NAME='表名';
查詢某模式下的所有表名:select TABLE_NAME from dba_tables where owner='SYSDBA';
查詢數(shù)據(jù)庫(kù)兼容情況:select * from vDM_INI".PARA_NAME='COMPATIBLE_MODE';
修改兼容模式:sp_set_para_value(2,'COMPATIBLE_MODE',4); 0表示不兼容 2表示部分兼容oracle 3表示部分兼容SQL 4表示部分兼容mysql
查詢當(dāng)前用戶權(quán)限:select grantee,privilege from dba_sys_privs where grantee='角色名';
查詢角色:select grantee,granted_role from dba_role_privs where grantee='用戶名';
查詢用戶狀態(tài):select username, ACCOUNT_STATUS from dba_users ;
獲取表的所有字段:select * from all_tab_columns where owner='模式名' and Table_Name='表名' \\
查詢所有表空間:select * from dba_tablespaces
PARTITION子句指定分區(qū)
CREATE TABLE callinfo(
caller CHAR(15),
callee CHAR(15),
time DATETIME,
duration INT)
PARTITION BY RANGE(time)(
PARTITION p1 VALUES LESS THAN ('2018-04-01')
...)
)
查詢分區(qū)語(yǔ)句:select * from callinfo PARTITION (p1);
具有DBA權(quán)限刪除某一列時(shí),需要帶上CASCADE參數(shù)
ALTER TABLE PRODUCTION.PRODUT DROP PRODUCT_SUBCATEGORYID CASCADE;
增加UNIQUE約束 使用了ADD CONSTRAINT方法
ALTER TABLE PRODUCTION.PRODUCT ADD CONSTRAINT CON_PRODUCTNAME UNIQUE(NAME);
合并分區(qū)且修改分區(qū) split子句拆分分區(qū)
ALTER TABLE PRODUCTION.PRODUCT_INVENTORY MERGE PARTITIONS P1,P2 INTO PARTITIONS P5;
ALTER TABLE T1 SPLIT PARTITION P1 AT(5,5) INTO (PARTITION P5, PARTITION P6);
ALTER TABLE T1 SPLIT PARTITION P3 INTO(PARTITION P7 VALUES LESS THAN(25,25),PARTITION P8 VALUES LESS THAN (28,28),PARTITION P9)
內(nèi)連接:
--自然連接 natural join --查詢不需要指定連接列,列名自己過(guò)濾,兩個(gè)表的連接列的列名和數(shù)據(jù)類型要一致
--交叉連接cross join(笛卡集)---盡量避免,容易拖死數(shù)據(jù)庫(kù)
--join ... using 子句 在滿足多個(gè)連接列時(shí),可以指定一個(gè)列做連接,連接列的前面不能加表名或者是前綴;join 關(guān)鍵字指定連接的兩張表,using 指明連接列;要求 using 中的列存在于兩張連接表中。
--join ... on子句 join 關(guān)鍵字指定連接的兩張表,on 子句指定連接條件表達(dá)式,其中不允許出現(xiàn) rownum,可為表設(shè)置簡(jiǎn)單代稱。
--join ... on子句 join 關(guān)鍵字指定連接的兩張表,on 子句指定連接條件表達(dá)式,其中不允許出現(xiàn) rownum,可為表設(shè)置簡(jiǎn)單代稱。
--hash join 可以通過(guò) hint 強(qiáng)制走 hash join 優(yōu)化器 CBO 根據(jù)小表的連接列生成 hash 值,連接大表,掃描大表
單子查詢和多子查詢(in,any,all)
TRUNCATE TABLE PRODUCTION.PRODUCT_REVIEW; --只刪除表中記錄,不刪除表中結(jié)構(gòu)
ALTER TABLE ORDERS REBULID SECTION; --對(duì)事務(wù)表ORDERS進(jìn)行重整
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD' --設(shè)置日期格式
COMMENT ON TABLE/COLUMN ... IS ... ; --添加注釋信息
ALTER SYSTEM SET 'SORT_BUF_SIZE' =200 DEFERRED MEMORY; --動(dòng)態(tài) 修改參數(shù),對(duì)現(xiàn)在不生效,之后創(chuàng)建的才生效,延遲
ALTER SYSTEM SET 'MTAB_MEN_SIZE' =1200 spfile; --設(shè)置靜態(tài)參數(shù)
ALTER SESSION SET 'HAGR_HASH_SIZE' = 2000; --修改當(dāng)前會(huì)話
STAT 30 ON INDEX PURHASING.S1; --對(duì)PURHASING模式下的索引S1生成統(tǒng)計(jì)信息,采樣率為30%
select * from tt minus/except select * from kk --使用minus或者是except查詢tt中有kk中沒(méi)有的數(shù)據(jù)
select * from tt intersect select * from kk --使用intersect查詢tt和kk中都存在的數(shù)據(jù)
select * from production where production.row like "曹雪芹" --用.row來(lái)代替所有行的模糊查詢
select listagg(name,',') within group(order by name) from product --首先按group by語(yǔ)句分組,再在組內(nèi)按照within group中的order by進(jìn)行排序
select name, ntile(3) over(order by nowprice) as ntile from production.product --根據(jù)nowprice使用ntile函數(shù)分成3組
開(kāi)窗函數(shù):
開(kāi)窗函數(shù)() over (partition by 列名 order by列名) 。
● partition: 需要分區(qū)的列(可不使用)
● order bye: 對(duì)分區(qū)內(nèi)排序
使用方法 函數(shù)含義
row_number() over(partition by col1 order by col2) 相等的值對(duì)應(yīng)的排名相同,序號(hào)從1到n連續(xù)。
rank() over(partition by col1 order by col2) 但若有并列的名稱,會(huì)占用下一名次的,則序號(hào)從1到n不連續(xù)。如果有兩個(gè)人都排在第3名,則沒(méi)有第4名
dense_rank() over(partition by col1 order by col2) 但若有并列的名稱,不會(huì)占用下一名次的,則序號(hào)從1到n連續(xù)。如果有兩個(gè)人都排在第3名,則下一名還是第4名
ntile( n ) over(partition by col1 order by col2) 將每個(gè)分區(qū)內(nèi)排序后的結(jié)果均分成N個(gè)桶,排序?qū)?yīng)的數(shù)字為桶號(hào)。如果不能平均分配,則較小桶號(hào)的桶分配額外的行,并且各個(gè)桶中能放的數(shù)據(jù)條數(shù)最多相差1
for update --只要for update語(yǔ)句沒(méi)提交 其他會(huì)話黑鍋就不能修改此結(jié)果集
CREATE CONTEXT INDEX INDEX1 ON PRODUCTION.PRODUCT(DESRIPTION) LEXER CHINESE_VGRAM_LEXER; --在DESRIPTION上添加全文索引
ALTER CONTEXT INDEX INDEX1 ON PRODUCTION.PRODUCT REBULID; --完全填充全文索引
SELECT PRODUCTID,NAME FROM PRODUCTION.PRODUCT WHERE CONTAINS(DESCRIPTION,'語(yǔ)言') --全文檢索帶‘語(yǔ)言’
臨時(shí)表:
on commit delete rows --事務(wù)級(jí)
on commit preserve rows --會(huì)話級(jí)
create table test (a int,b image);
@insert into test values(1,@'e:\DSC_1663.jpg') --插入大對(duì)象
%TYPE 類型可以將變量同表列的類型進(jìn)行綁定
%ROWTYPE 返回一個(gè)基于表定義的運(yùn)算類型