oraclesql表結構語句
① oracle怎麼通過sql查看錶的結構
分兩種方法:
1、在命令窗口通過如下語句:
desc表名;
② 用SQL輸出Oracle表結構(包括主鍵、外鍵)
with M as
(SELECT t.table_name,
t.column_NAME,
t.DATA_TYPE || '(' ||t.DATA_LENGTH || ')' datatype,
t1.COMMENTS
FROM User_Tab_Columnst,
User_Col_Comments t1,
USER_TABLES T2
WHERE t.table_name =t1.table_name
AND t.column_name = t1.column_name
AND T.TABLE_NAME = T2.TABLE_NAME
ORDER BY T1.table_name),
P as (select P.table_name,
C.column_name
from user_constraints P,
user_cons_columns C ,
USER_TABLES T
whereP.constraint_type='P'
andP.table_name = T.TABLE_NAME
andP.constraint_name=C.constraint_name),
R as
(Select a.Owner fowner,
a.Table_Name ftable,
c.Column_Name fcolumn,
b.Owner mowner,
b.Table_Name mtable,
d.Column_Name mcolumn,
c.Constraint_Name fname,
d.Constraint_Name mname
From User_Constraints a,
user_Constraints b,
user_Cons_Columns c,
user_Cons_Columns d
Where a.r_Constraint_Name =b.Constraint_Name
And a.Constraint_Type = 'R'
And b.Constraint_Type = 'P'
And a.r_Owner = b.Owner
And a.Constraint_Name = c.Constraint_Name
And b.Constraint_Name = d.Constraint_Name
And a.Owner = c.Owner
And a.Table_Name = c.Table_Name
And b.Owner = d.Owner
And b.Table_Name = d.Table_Name)
select M.table_name,
M.colUMN_NAME,
M.datatype,
M.comments,
(select count(*)
from P
where P.table_name=M.table_name
and P.column_name=M.column_name
) as是否主鍵,--0表示是非主鍵,非0表示是主鍵
(select mtable
from R
where R.ftable=M.table_name
and R.fcolumn=M.column_name
and rownum=1
) as外鍵表
from M;
③ 怎麼用sql語句查詢表的結構
下邊是SQLSERVER查詢數據字典的語法,如果相查某一個表,只需要加where條件一個表名的連接即可。
SELECT TOP 100 PERCENT --a.id,
CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,
CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表說明,
a.colorder AS 欄位序號, a.name AS 欄位名, CASE WHEN COLUMNPROPERTY(a.id,
a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 標識,
CASE WHEN EXISTS
(SELECT 1
FROM dbo.sysindexes si INNER JOIN
dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN
dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN
dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主鍵,
b.name AS 類型, a.length AS 長度, COLUMNPROPERTY(a.id, a.name, 'PRECISION')
AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小數位數,
CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允許空, ISNULL(e.text, '')
AS 默認值, ISNULL(g.[value], '') AS 欄位說明, d.crdate AS 創建時間,
CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改時間
FROM dbo.syscolumns a LEFT OUTER JOIN
dbo.systypes b ON a.xtype = b.xusertype INNER JOIN
dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND
d.status >= 0 LEFT OUTER JOIN
dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN
dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND
g.name = 'MS_Description' LEFT OUTER JOIN
dbo.sysproperties f ON d.id = f.
id AND f.smallid = 0 AND
f.name = 'MS_Description'
where d.name = '表名'---查詢固定表,如果所有,去掉where條件
ORDER BY d.name, a.colorder
ORACLE資料庫使用USER_TAB_COLUMNS表
select TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH
from USER_TAB_COLUMNS
④ Oracle基本SQL語句
刪除表:
drop table 表名
修改表結構:
刪除列:
alter table 表名 drop column 列名
增加列:
alter table 表名 add(列名 數據類型, 列名 數據類型.....)
修改列的數據類型:
alter table 表名 modify(列名 數據類型)
主鍵(Primary Key--PK):主鍵在表中能夠唯一表示一條記錄的欄位,主鍵唯一並且不能為空。
外鍵(Foreign Key--FK):外鍵主要用來維系多表之間的關聯關系,一張表中的外鍵,必定是另一張表中的主鍵。
增加主鍵:
alter table 表名 add constraint 鍵名 primary key(列名)
刪除鍵:
alter talbe 表名 drop constraint 鍵名
增加外鍵:
alter table 表名 add constraint 鍵名 foreign key(列名) references 關聯表名(列名)
插入語句:
insert into 表名 (列1, 列2.....) values(值1, 值2.....)
如果要插入的是一個表中的全部欄位數據:
insert into 表名 values(值1, 值2......)
更新表中數據:
update 表名 set 列=值, 列=值....... [where 條件]
刪除表中數據:
delete from 表名 [where 條件]
刪除表中數據還可以使用truncate
truncate table 表名
注意,在更新和刪除數據時,一定要在後面寫條件,除非要做刪除全表數據或更新全表數據。
truncate和delete的區別:如果使用delete刪除表中數據,會產生日誌文件,刪除的數據是可以恢復,所以相對來說刪除速度慢,truncate正好相反,在刪除表中數據時不會產生日誌文件,數據不可恢復,所以相對來說刪除速度快。
sysdate:表示當前的系統日期和時間
在Oracle中提供了一張叫做al表,它是一張臨時表,主要用來做測試用。
在Oracle中默認的日期格式是:「日-月-年」
偽列:
rowid:表示一條記錄在內存中的地址
rownum:行號,通常用來做分頁
在查詢表的時候還可以給表起別名,在表名後空一格,然後寫別名,在查詢表中欄位時可以使用「表別名.欄位名」的形式。
除了給表起別名外,還可以給列起別名,兩種形式,可以在列名後用as來加入別名,也可以在列後空一格,然後寫別名。
在查詢的時候默認列名都是大寫字母,可以在起別名的時候用雙引號括起來,就可以加入小寫字母的別名了。
在Oracle中的字元串連接符是「||」
在查詢的時候還可以對列進行四則運算,
查詢10年之後學生表中每名學生的年齡:
查詢學生表中每名學生出生後一個月(假定一個月為30天)的日期:
在查詢語句中還可以加入查詢條件:
select 列名from 表名 where 查詢條件
在條件中可以加入關系運算符:< > <= >= != =
查詢班級號為「1」的所有學生信息:
還可以在條件中使用邏輯運算符:and or
查詢數學成績和英語成績都及格的學生信息
在查詢條件中還可以使用in來匹配查詢條件
查詢數學成績為60,70,80的學生信息:
在查詢條件中,可以使用between...and來限制查詢范圍
查詢英語成績在80到90之間的學生信息:
在查詢條件中,還可以使用is null 和 is not null來判斷是否為空值。
查詢有數學成績,並且英語成績在80分以上的學生信息:
通配符:
_ 表示任意一個字元
% 表示0到n個任意字元
查詢學生表中,姓張並且姓名是兩個字的同學:
查詢學生表中不姓張的同學信息:
⑤ oracle sql語句 分為哪些
Oracle SQL語句分類
SQL(Structured Query Language)即結構化查詢語句,應用程序與資料庫交互的介面
集數據操作、數據定義、數據控制等功能於一體
ANSI先後制定推出了SQL-89、SQL-92、SQL-99標准
oracle SQL 語句主要分為一下四類:
DML(Data Mannipulation Language)數據操縱語言:查詢、操縱數據表資料行
SELECT : 檢索資料庫表或視圖數據
INSERT : 將數據行新增至資料庫表或視圖中
UPDATE : 修改表或視圖中現有的數據行
DELETE : 刪除表或視圖中現有的數據行
注意:DML語句不會自動提交事務!
DDL(Data Definition Language)數據定義語言:建立、修改、刪除資料庫中數據表對象
CREATE TABLE : 創建表
ALTER TABLE : 修改表
DROP TABLE : 刪除表
注意:DLL語句會自動提交事務!所以:DML語句事務提交之前可以回滾,DDL語句不能回滾事務
DCL(Data Control Language)數據控制語言:用於執行許可權授予與收回操作
GRANT : 給用戶或角色授予許可權
REVOKE : 收回用戶或角色的所有許可權
TCL(Transactional Control Language)事物控制語言:維護數據的一致性
COMMIT :提交已經進行的資料庫改變
ROLLBACK : 回滾已經進行的數據改變
SAVEPOINT : 設置保存點,用於部分數據改變的取消
⑥ oracle建表語句例子有哪些
oracle資料庫的建表語句,具體語法如下:
語法說明:
tablename:在資料庫中需要創建的表的表名稱,在同一個資料庫中的表名稱是不能重復的;
column_name:創建的表的列名稱,列名稱在一個表中也是不能重復的;
datatype:創建的表的列中存放數據的數據類型;
null,not null:允許該列為空或者不為空,默認情況下是不為空;
constraint:為表中的列設置約束,如主鍵約束,外鍵約束,唯一約束等。
(6)oraclesql表結構語句擴展閱讀
邏輯結構
它由至少一個表空間和資料庫模式對象組成。這里,模式是對象的集合,而模式對象是直接引用資料庫數據的邏輯結構。模式對象包括這樣一些結構:表、視圖、序列、存儲過程、同義詞、索引、簇和資料庫鏈等。邏輯存儲結構包括表空間、段和范圍,用於描述怎樣使用資料庫的物理空間。
總之,邏輯結構由邏輯存儲結構(表空間,段,范圍,塊)和邏輯數據結構(表、視圖、序列、存儲過程、同義詞、索引、簇和資料庫鏈等)組成,而其中的模式對象(邏輯數據結構)和關系形成了資料庫的關系設計。
段(Segment):是表空間中一個指定類型的邏輯存儲結構,它由一個或多個范圍組成,段將佔用並增長存儲空間。
其中包括:
數據段:用來存放表數據;
索引段:用來存放表索引;
臨時段:用來存放中間結果;
回滾段:用於出現異常時,恢復事務。
范圍(Extent):是資料庫存儲空間分配的邏輯單位,一個范圍由許多連續的數據塊組成,范圍是由段依次分配的,分配的第一個范圍稱為初始范圍,以後分配的范圍稱為增量范圍。
數據塊(Block):
是資料庫進行IO操作的最小單位,它與操作系統的塊不是一個概念。oracle資料庫不是以操作系統的塊為單位來請求數據,而是以多個Oracle資料庫塊為單位。
⑦ oracle 查看錶結構,表裡的數據
1、首先,我們打開PLSQL工具連接到需要進行數據比對的ORACLE資料庫。
⑧ Oracle 的SQL語句怎麼編寫
select a.類別 一級類別, b.類別 二級類別, c.類別 三級類別, d.類別 四 級類別 from 表名 a
join 表名 b on b.上級類別=a.類別
join 表名 c on c.上級類別=b.類別
join 表名 d on d.上級類別=c.類別
where a.類別 not in (select 上級類別 from 表名)
⑨ oracle資料庫如何查詢表結構
在sql*plus中可以用DESC命令顯示表結構,例如:DESC EMP
在PL/SQL中,通過左邊的瀏覽器查看就可以了,例如下圖:
⑩ 怎樣寫批處理文件,導出oracle11 的所有表結構成sql語句!語句怎麼寫!
oracle 11.2版本不能導出空表 調整deferred_segment_creation參數
SQL> show parameter deferred
deferred_segment_creation 參數為true時無法導出空表,所以修改為false
SQL> alter system set deferred_segment_creation=FALSE;