oracle 基本表操作

2021-07-05 03:58:22 字數 3859 閱讀 2332

這篇文章主要是總結自己在使用oracle時,用到的一些建立和查詢表的語句,這裡總結一下,方便以後查詢。

1、建立表的基本語法:

create table 表名

(欄位名1(列名) 資料型別 列的特徵,

欄位名2(列名) 資料型別 列的特徵(not null),)

oracle常用的型別:

varchar2 (size) 可變長度的字串, 必須規定長度

char(size) 固定長度的字串, 不規定長度預設值為1

number(p,s) 數字型p是位數總長度, s是小數的長度, 可存負數

最長38位. 不夠位時會四捨五入.

date 日期和時間型別

lob 超長字元, 最大可達4g

clob 超長文字字串

blob 超長二進位制字串

bfile 超長二進位制字串, 儲存在資料庫外的檔案裡是唯讀的.

約束條件:

非空 not null

不允許重複 unique

關鍵字 primary key

按條件檢查 check (條件)

外來鍵 references 表名(欄位名)

例子,建立原始表

create table test(  

id number(10) not null primary key,

name varchar(2) null ,

city number(1) null

);

例子,根據查詢建立表

create table add_user(學校名稱,學校**,學科**,學科名稱) as

select e.name, d.unit_id, d.disc_id ,s.name

from dsep_base_unit e, dsep_base_unit_disc d ,dsep_base_discipline s

where e.id=d.unit_id and s.id = d.disc_id and e.name = '南京郵電大學'

例子,使用concat連線建立表:

create table add_user_daima1(學校學科**,學校**,學科**) as

select concat(concat(學校**,'_'),學科**), 學校**,學科** from add_user

例子,使用substr建立表:

create table add_user_test(login_id,name,unit_id,disc_id,school_name) as

select daima.學校學科**,mingcheng.學校學科名稱,add1.學校**,add1.學科**,add1.學校名稱

from add_user_daima daima, add_user_mingcheng mingcheng ,add_user add1

where substr(daima.學校學科**,0,5)=add1.學校** and substr(mingcheng.學校學科名稱,0,5)=add1.學校名稱

建立表時的命名規則:

1)表名和欄位名的命名規則:必須以字母開頭,可以含符號a-z,a-z,0-9,_,$,#

2)大小寫不區分

3)不用sql裡的保留字, 一定要用時可用雙引號把字串括起來.

4)用和實體或屬性相關的英文符號長度有一定的限制

建立表時注意事項:

1)建表時可以用中文的欄位名, 但最好還是用英文的欄位名

2)建立表時要把較小的不為空的字段放在前面, 可能為空的字段放在後面

3)建表時如果有唯一關鍵字或者唯一的約束條件,建表時自動建了索引

4)乙個表的最多字段個數也是有限制的,254個.

2、插入表

單行資料插入:

insert into table [(column1,column2,...)] value (value1,value2,...)

單行資料插入,例子:

insert into dep (dep_id,dep_name) values(1,'技術部');

多表多行插入:

insert [all] [condition_insert_clause][insert_into_clause values_clause] (subquery)

多表多行插入,例子:

insert all

into sal_history(emp_id,hire_date,salary) values (empid,hiredate,sal)

into mgr_history(emp_id,manager_id,salary) values (empid,hiredate,sal)

select employee_id empid,hire_date hiredate,salary sal,manager_id mgr

from employees

where employee_id>200;

有條件插入:

insert [all | first]

when condition then insert_into_clause values_clause

[when condition then] [insert_into_clause values_clause]

......

[else] [insert_into_clause values_clause]

subquery;

有條件插入,例子

insert all

when id>5 then into z_test1(id, name) values(id,name)

when id<>2 then into z_test2(id) values(id)

else into z_test3 values(name)

select id,name from z_test;

根據其他表的內容插入:

insert into add_user_test(login_id,name ,unit_id ,disc_id,school_name )

select concat(concat(t.學校**,'_'),t.學科**),concat(t.學校名稱,t.學科名稱) ,t.學校** ,t.學科**,t.學校名稱 from add_user t

oracle清空表資料

這裡介紹兩種oracle刪除表資料的方式: 

sql**  

delete [表名]  

truncate table [表名]  

delete 刪除表資料,表檔案不會被清空.只會設定unused標記. 

truncate table 刪除表資料,表檔案也會被清空. 

以上刪除都會有引用異常,使用以下處理方式: 

sql**  

alter table [表名] disable primary key cascade;  

truncate table [表名];  

alter table [表名] enable primary key ;  

更新資料庫中某一列的資料:

update to_zhong set name ='山東' where log_id like '%what%'

Oracle 表空間基本操作

1.查詢資料庫現在的表空間 select tablespace name,file name,sum bytes 1024 1024 table size from dba data files group by tablespace name,file name 2.建立表空間 create ta...

Oracle 表空間基本操作

1.查詢資料庫現在的表空間 select tablespace name,file name,sum bytes 1024 1024 table size from dba data files group by tablespace name,file name 2.建立表空間 create ta...

oracle 表空間基本操作

查表空間使用率情況 含臨時表空間 select d.tablespace name name d.status status to char nvl a.bytes 1024 1024,0 99,999,990.90 size m to char nvl a.bytes nvl f.bytes,0 ...