Oracle資料庫sql語句

2022-03-11 16:01:22 字數 3703 閱讀 7184

1.建立使用者、賦許可權、刪除使用者

drop tablespace test_tbs including contents cascade constraints;    --

刪除表空間

create tablespace test_tbs datafile '

test_pdb.dbf

' size 1024m autoextend on

next 50m maxsize 20480m extent management local; --

建立表空間

create

user test_name identified by test_password default tablespace test_tbs; --

建立使用者

grant connect to

test ;

grant resource to

test ;

grant dba to

test ;

drop

user test cascade;

2.修改使用者密碼&解除鎖定(需要

dba許可權)

alter

user scott identified by

tiger;

alter

user scott account unlock;

3.查詢鎖表

select

'alter system kill session

'''|| c.sid ||

''||',

'|| c.serial# ||

''';

', a.object_id, a.session_id, b.object_name, c.*

from

v$locked_object a, dba_objects b, v$session c

where a.object_id

= b.object_id

and a.session_id = c.sid(+

)

and schemaname =

'scott

'order

by logon_time

4.左右連線去除笛卡爾積

關於左連線和右連線總結性的一句話:

左連線where隻影向右表,右連線where只影響左表。

left

join

select

*from tbl1 left

join tbl2 where tbl1.id =

tbl2.id

左連線後的檢索結果是顯示tbl1的所有資料和tbl2中滿足where 條件的資料。

5.增加新的主鍵約束(約束無法直接修改,只能先刪後插)

alter

table 表名 add

constraint 主鍵名 primary

key(欄位名);

alter table dept  drop constraint pk_dept ;

alter

table dept add

constraint pk_dept primary

key(deptno, dname);

6.級聯刪除外來鍵(刪除父表記錄時,同時刪除子表記錄)

alter

table 子表 add

constraint fk_activity_id foreign

key (id) references 父表 (id) on

delete

cascade;

7.修改表名(

表名大小寫問題)

alter

table "dept" rename to dept;

8.將本使用者下全部sequence查詢出來,並拼成建立語句

select

'create sequence

'||sequence_name||

'minvalue

'||min_value||

'maxvalue

'||max_value||

'start with

'||last_number||

'increment by

'||increment_by||

(case

when cache_size=

0then

'nocache

'else

'cache

'||cache_size end) ||';

'from user_sequences

9.將本使用者下全部表名與表名的注釋查詢出來:

select t.table_name,c.comments from user_tables t,user_tab_comments c where t.table_name=c.table_name order

by t.table_name asc

10.分組函式

select a.count,a.code,a.date,a.status,b.sum

from (select

count(code) count,code,date,status from test_table where date =

'20190815

'group

by code,date,status) a,(select

sum(count(code)) sum

from test_table where date =

'20190815

'group

by code) b;

11.刪除表的comments,拼成sql語句然後複製貼上後執行就把資料庫表列的comments置為空;

select

'comment on column

'||t.table_name||'.

'||t.column_name||

'is

'''';'

from user_col_comments t;

12.給某個使用者某張表的許可權設定 

grant

select,update,delete,insert

on datatable to oracleuser;

13.將乙個表中的某一列資料更新到另乙個表中

update t_condetailed set latesprice=t_temp.amount from t_temp where t_condetailed.connumber=t_temp.conno

14.在oracle中,查詢字段中非純數字值

正則判斷,適用於10g以上版本

--非正整數

select 字段 from 表 where regexp_replace(字段,'

\d','') is

notnull;--

非數值型別

select 字段 from 表 where regexp_replace(字段,'

^[-\+]?\d+(\.\d+)?$

','') is

notnull;

oracle資料庫sql語句01

查詢所有使用者 select username,account status from dba users 查詢表資訊 sql desc scott.emp 名稱 是否為空?型別 empno not null number 4 ename varchar2 10 job varchar2 9 mgr...

oracle常用資料庫sql語句

建立表空間 create bigfile tablespace 表空間名稱 datafile 表空間路徑 size 100m autoextend on extent management local autoallocate 建立使用者 create user 使用者名稱 identified b...

Oracle資料庫常用sql語句

1.建立表 create table table1 op time date num1 number name varchar2 32 2.在已有表中新增字段 注 中只能在最後新增字段,不能再中間插入 alter table table1 add grade number 3.插入資料條 插入一條資...