當前位置:首頁 » 操作系統 » 資料庫偽列

資料庫偽列

發布時間: 2023-05-23 20:44:06

資料庫常用查詢操作

--注釋

--select *|欄位名1,欄位名2... from 表名;

--1)

--查詢|檢索|獲取 所有員工的所有信息

--查詢的數據: 員工的所有信息

--數據的來源:員工表  emp

--條件:

select * from emp;

--2)

--查詢所有的員工名字

select ename from emp;

--3)

--查詢所有的員工編號和員工名稱,員工上級的編號

--查詢的數據: empno,ename,mgr

--數據的來源:員工表  emp

select empno,ename,mgr from emp;

--4)

--查詢所有部門部門編號

select deptno from dept;

--5)

--查詢出所有員工所在的部門的部門編號

select distinct  deptno from emp;

--對查詢數據進行去重(非欄位去重) distinct

--6)

--查詢出所有存在員工的部門的部門編號,以及員工名稱

select deptno,ename from emp;

select distinct sal,deptno from emp;

--7)

--查詢表達式,結果是表達式的值,顯示的欄位名就是表達式,計算值

select 1+1 from emp;

select 'a' from emp;

--8)

--給欄位取別名  select 欄位1 (as) 別名1,欄位2 別名2 from 表名 別名;  表的別名不能加as

--查詢所有員工的名稱(別名為:名字),員工編號(編號)

--別名默認變大寫,別名中的內容原封不動出現 ""->中的內容原封不動出現

select 123+456 "get sum" from emp;

select empno as 員工編號,ename "員工 姓名" from emp;

--9)

--字元串 ''  原封不動顯示""

select distinct '哈哈' 笑 from emp e;

--10)

--字元串拼接 java中使用+  這里使用||

--查詢 ab--cd  表達式

select distinct 'ab-'||'-cd' from emp;

--查詢所有的員工名字,給他們來一個前綴SXT

select 'sxt-'||ename from emp;

--11)

--偽列 : 不存在的列就是偽列  比如:表達式,字元串

--12)

--虛表: 在oracle中不存在的表,也可以說是這個表中沒有任何數據,沒有任何欄位 --oracle中的虛表:al

--虛表的作用:可以不使用distinct就可以去重的效果,因為裡面沒有數據,不會出現多行

select * from al;

select distinct 123*456 from emp;

select 123*456 from al;

select sysdate from al;

--比如查詢當前時間

--13)

--給每一個員工在原來的基礎上+100塊錢獎金

--null 空

--null與數字運算,結果還為null

--null與字元串運算,結果原串

--nvl(參數1,參數2) 處理null使用  如果參數1為null,最終結果參數2,如果參數1不為null,最終的結果就是參數1

select comm 原獎金,comm||'100' 新獎金 from emp;

select comm 原獎金,nvl(comm,0)+100 新獎金  from emp

--一節結尾小練習

--查詢所有員工的名字, 工種, 年薪(不帶獎金)

select ename,job,sal*12 年薪 from emp;

--查詢所有員工的名字,工種,年薪(帶12月獎金的)

select ename,job,(sal+nvl(comm,0))*12 年薪 from emp;

--查詢所有員工的名字, 工種, 年薪(帶一次獎金的)

select ename,job,sal*12+nvl(comm,0) 年薪 from emp;

--select *|表達式|字元串|偽列|欄位1 別名1,欄位2 as 別名2... from 表名 別名|結果集 where 行過濾條件;

--執行流程: from-->where-->select確定結果集

-- 查詢20部門的員工信息

--數據: *

--來源: emp

--條件: deptno=20

select * from emp where deptno=20;

-- > < >=  <=  = !=  <>

-- 查詢工資大於1000的員工的姓名 工作崗位  工資  所屬部門編號

--數據: ename,job,sal,deptno

--來源: emp

--條件: sal>1000

select ename,job,sal,deptno from emp where sal=1000;

-- 查詢不在20部門工作的員工信息

select * from emp where deptno != 20;

select * from emp where deptno <> 20;

--where 中不能使用欄位的別名

-- 查詢員工的年薪大於20000的 員工名稱、崗位 年薪

select ename 姓名,job 崗位,(sal+nvl(comm,0))*12 sum from emp where ((sal+nvl(comm,0))*12)>20000;

select ename 姓名,job 崗位,(sal+nvl(comm,0))*12 sum from emp;

select 崗位, sum

  from (select ename 姓名, job 崗位, (sal + nvl(comm, 0)) * 12 sum from emp)

where sum > 20000;

-- 查詢  any(任意一個)  some(任意一個)  all(所有)

select * from emp where deptno = any(10,20);

select * from emp where deptno = some(10,20);

--大於最小的

select * from emp where sal> any(1500,2000); --薪資>1500的就可以

--大於最大的

select * from emp where sal> all(1500,2000); --薪資>2000的就可以

-- 查詢 工種不為』SALESMAN』的員工信息 (注意 內容區分大小寫)

select * from emp where not job ='SALESMAN';

--or或 and並且|都  not取反

-- -檢索 工資 1600, 3000員工名稱 崗位 工資

select ename,job,sal from emp where sal=1600 or sal=3000;

select ename,job,sal from emp where not (sal=1600 or sal=3000);

-- 工資在2000到3000之間的員工信息

select * from emp where sal>2000 and sal<3000;

--between 小范圍值  and 大范圍的值  兩者之間  <= >=

select * from emp where sal between 1600 and 3000;

---查詢 崗位 為 CLERK 且部門編號為 20的員工名稱 部門編號,工資

select ename ,deptno ,sal from emp where job='CLERK' and deptno=20;

-- 查詢 崗位 為 CLERK 或部門編號為 20的員工名稱 部門編號,工資

select ename ,deptno ,sal,job from emp where job='CLERK' or deptno=20;

--查詢 崗位 不是 CLERK 員工名稱 部門編號,工資

select ename ,deptno ,sal,job from emp where job!='CLERK';

select ename ,deptno ,sal,job from emp where not job='CLERK';

select ename ,deptno ,sal,job from emp where job<>'CLERK';

-- 查詢 崗位 不為 CLERK 並且部門編號不為 20的員工名稱 部門編號,工資

select ename ,deptno ,sal,job from emp where job!='CLERK' and deptno!=20;

select ename ,deptno ,sal,job from emp where not (job='CLERK' or deptno=20);

--存在佣獎金的員工名稱

select ename,comm from emp where not comm is null;

select ename,comm from emp where comm is not null;

--不存在獎金的員工名稱

select ename,comm from emp where comm is null;

--集合

--Union,並集(去重) 對兩個結果集進行並集操作,不包括重復行同時進行默認規則的排序;

--Union All,全集(不去重) 對兩個結果集進行並集操作,包括重復行,不進行排序 ;

--Intersect,交集(找出重復) 對兩個結果集進行交集操作,不包括重復行,同時進行默認規則的排序;

--Minus,差集( 減去重復 ) 對兩個結果集進行差操作,不包括重復行,同時進行默認規則的排序

--查詢工資大於1500 或 含有傭金的人員姓名

select ename,sal,comm from emp where sal>1500 or comm is not null;

select ename,sal,comm from emp where sal>1500;

select ename,sal,comm from emp where comm is not null;

--並集

select ename,sal,comm from emp where sal>1500

Union

select ename,sal,comm from emp where comm is not null;

select ename,sal,comm from emp where sal>1500

Union all

select ename,sal,comm from emp where comm is not null;

--查詢顯示不存在雇員的所有部門號。

--求出所有的部門號

select deptno from dept;

--有員工的部門號

select distinct deptno from emp;

select deptno from dept

Minus

select distinct deptno from emp;

-- 查詢顯示存在雇員的所有部門號。

select deptno from dept

Intersect

select distinct deptno from emp;

--模糊匹配  like %任意任意字元  _一個任意字元  一起使用

--查詢員工姓名中包含字元A的員工信息

select * from emp where ename like '%A%';

--完全匹配

select * from emp where ename like 'SMITH';

--查詢員工姓名以'A'結尾的員工信息

select * from emp where ename like 'A%';

--查詢員工姓名中第二個字母為A的員工信息

select * from emp where ename like '_A%';

insert into emp(empno,ename,sal) values(1000,'t_%test',8989);

insert into emp(empno,ename,sal) values(1200,'t_tes%t',8000);

--escape('單個字元')指定轉義符

--查詢員工姓名中包含字元%的員工信息

select * from emp where ename like '%B%%' escape('B');

--當執行插入數據,刪除數據,修改的時候,默認開啟事務

--可提交  commit 

--可回滾  rollback

--多個人中任意一個值就可以

select * from emp where sal=1600 or sal=3000 or sal=1500;

select * from emp where sal in(1500,1600,3000);

--select 欄位.. from 結果集 where 行過濾條件 order by 排序欄位 desc降序|asc升序(默認)..;

--執行流程: from--> where-->select-->排序

select empno,ename,sal from emp order by sal desc,empno asc;

--按照獎金升序排序,如果存在null值,所有的獎金null值的數據最先顯示

select empno,ename,sal,comm from emp where deptno in (10,30) order by comm asc nulls first;

⑵ 誰能介紹下oracle資料庫的ORA_rowscn這個東西

基於行跟蹤的ROWDEPENDENCIES ORA_ROWSCN信息
在Oracle 10g中的引入了ORA_ROWSCN偽列新特性。基於此種偽列所提供的信息,我們可以方便地找出某個數據塊或某一個行最近被修改的時間戳。在畝改茄默認情況迅察下,10g下表會以非行依賴殲備性(NOROWDEPENDENCIES)的屬性創建,這意味著我們可觀察的ORA_ROWSCN信息是
以塊級跟蹤的,無法分辨同一塊內的多行間不同的修改時間。為了達到行級粒度的跟蹤我們需要在建表時指定基於行依賴性的ROWDEPENDENCIES字
句。如:

sql Server里有沒有類似Oracle里的rownum的偽列

rownum和Dual表,應該是Oracle所特有的東西。 SQL Server和Sybase都沒有這個,其它的資料庫不好說。 rownum關鍵字,是Oracle為查詢返回的行,順序分配的編號,當然也可以作為Where條件來使用。 Dual表:也是Oracle方便查詢而使用的蘆森首特殊表。Oracle內部機制可以確保該表始終只有一行一列一個X值。 下陪數面是從網上找到的使春燃用臨時表的方法,因為沒有Sql server環境,未測試,僅供參考: select rownum=identity(int,1,1),id,name into #t from table1 select * from #t drop table #t 如果只想查詢記錄,可以參考下面的子查詢代碼: select * from 表 where id = ALL (select id from 表); select * from 表 where id <= ALL (select id from 表);

⑷ oracle中uid是什麼關鍵字

一、

偽列就像Oracle中的一個表列,但實際上它並未存儲在表中。偽列可以從表中查詢,但是不能插入、更新或刪除它們的值。常用的偽列:rowid和rownum。
Rowid:資料庫中的每一行都有一個行地址,Rowid偽列返回該行地址。可以使用Rowid值來定位表中的一行。通常情況下,Rowid值可以唯一地標識資料庫中的一行。
Rowid偽列有以下重要用途:
1)能以最快的方式訪問表中的一行;
2)能顯示表的行是如何存儲的。
3)可以作為燃扮表中行的唯一標識。
如:SQL> select rowid,ename from emp;
Rownum:對於一個查詢返回的每一行,Rownum偽列返回一個數值代表的次序。返回的第一行的Rownum值為1,第二行的Rownum值為2,依此類推。通過使用Rownum偽列,用戶可以限制查詢返回的行數。
如:SQL>select * from emp where rownum<11; 從EMP表中提取10條飢段鉛記錄

二、

oracle中不支持select top n from tablename 查詢,但是通過 order by 和 rownum 組合可以實現此功能。例如:SELECT列名1...列名nFROM
(SELECT列名1...列名nFROM 表名 ORDER BY 列名1...列名n)
WHERE ROWNUM <= N(抽出記錄爛好數)
ORDER BY ROWNUM ASC

⑸ oracle怎麼給表的列加註釋

Oracle添加註釋的語法為:

commentoncolumn欄位名is'注釋名';

舉例:

創建表:

CREATETABLEt1(
idvarchar2(32)primarykey,
nameVARCHAR2(8)NOTNULL,
agenumber,
);

添加表注釋:

COMMENTONtablet1IS'個人信息';

添加欄位注釋:

commentoncolumnt1.idis'id';
commentoncolumnt1.nameis'姓名';
commentoncolumnt1.ageis'年齡';

⑹ 資料庫中的偽列指的是什麼

資料庫術語,指的是在物理上這個列並不存在,只是在查詢時才構喊枯團造出來。偽列通常是敗慎自由分配的,用戶無法執行修改等操作。比如Oracle中的RowID欄位,使用RowID可以快速地定位到鄭橘某個對應的數據,因為它標記了記錄所對應的物理地址,是唯一的。

⑺ Oracle偽列,偽表是什麼有什麼用與普通表、普通列有什麼區別

偽列:資料庫沒有實際保存的列。
例如,rownum。 就是行號。你可以在任何一個talbe,view,或者select中查到這個列,但是,這個列不存在任何的物理的存儲。
另外的例子: level , rowid 都是偽列
普通的列,是實際有存儲的,在物理存儲上就有這個數據。偽列就沒有,是算出來的。可以認為是一種特殊的函數。

⑻ 在ORACLE資料庫中什麼叫偽列

偽列的數據是由ORACLE進行維護和管理的,用戶不能對這個列修改,只能查看。
所有的偽列要得到值必須要顯式的指定。
最常用的兩個偽列:rownum和rowid。
1、

ROWNUM(迅模行號):是在查詢操作時由畝碼緩ORACLE為每一行記錄自動生成的一個編號。
每一次查詢ROWNUM都會重新生成。(查詢的結果中Oracle給你增加的一個編號,根據結果來重新生成)
rownum永遠按照默認的順序生成。(不受order by的影響)
rownum只能使用 <、 <= ,不能使用 > 、>= 符號,原因是:Oracle是基於行的資料庫,行號永遠是從1開始,即必須有第一行,才有第二行。
2、
ROWID(記錄編號):是表的偽列,是用來唯一標識表中的一條記錄,並且間接給出了錶行的物理位置,定位錶行最快的方式。
主鍵:標識唯一的一條業務數據的標識。主鍵是模好給業務給用戶用的。不是給資料庫用的。
記錄編號rowid:標識唯一的一條數據的。主要是給資料庫用的。類似UUID。

⑼ 資料庫中數據類型有哪些

Character 數據類型

Character 數據類型用來存儲字母數字型數據。當你在oracle 中定義一個character 數據時,通常需要制定欄位的長度,它是該欄位的最大長度。ORACLE提供以下幾種character 數據類型:

CHAR() CHAR數據類型是一種有固定長度和最大長度的字元串。存儲在數據類型為CHAR欄位中的數據將以空格的形式補到最大長度。長度定義在1——2000位元組之間。

當你創建一個CHAR型欄位,資料庫將保證在這個欄位中的所有數據是定義長度,如果某個數據比定義長度短,那麼將用空格在數據的右邊補到定義長度。如果長度大於定義長度將會觸發錯誤信息。

VARCHAR() varchar型數據是varchar2型數據的快照。

VARCHAR2() varchar2數據喚巧類型是一種可變長度的、有最大長度的字母數字型數據。Varchar2類型的欄位長度可以達到4000位元組,Varchar2類型的變數長度可以達到32676位元組。

一個空的varchar2(2000)欄位和一個空的varchar2(2)欄位所佔用的空間是一樣的。

NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()數據類型分別與CHAR() 和 VARCHAR2()類型是相同的,只不過它們用來存儲NLS(National Language Support)數據。

LONG LONG 數據類型是一個遺留下來的而且在將來不會被支持的數據類型。它將被LOB(Large Object)數據類型所代替。

比較規則 Varchar2和char數據類型和差鍵根據尾部的空格有不同的比較規則。對Char型數據,尾部的空格將被忽略掉,對於Varchar2型數據尾部帶空格的數據排序比沒有空慶宴格的要大些。比如:

Char 型數據: 『YO』=『YO』

Varchar2型數據:『YO』<』YO』

Numberic 數據類型

Numberic 數據類型用來存儲負的和正的整數、分數和浮點型數據,范圍在-1*10-103 和9.99999*10125之間,有38位的精確度。標識一個數據超出這個范圍時就會出錯。

Number(

) Number數據類型存儲一個有p位精確度的s位等級的數據。

DATE 數據類型

DATE 數據類型用來存儲日期和時間格式的數據。這種格式可以轉換為其他格式的數據去瀏覽,而且它有專門的函數和屬性用來控制和計算。以下的幾種信息都包含在DATE數據類型中:

Century

Year

Month

Day

Hour

Minute

Second

LOB 數據類型

LOB(Large Object) 數據類型存儲非結構化數據,比如二進制文件,圖形文件,或其他外部文件。LOB 可以存儲到4G位元組大小。數據可以存儲到資料庫中也可以存儲到外部數據文件中。LOB數據的控制通過DBMS_LOB 包實現。BLOB, NCLOB, 和CLOB 數據可以存儲到不同的表空間中,BFILE存儲在伺服器上的外部文件中。LOB數據類型有以下幾種:

BLOB: 二進制數據

CLOB: 字元型數據

BFILE: 二進制文件

其他數據類型

ROWID ROWID 數據類型是ORACLE數據表中的一個偽列,它是數據表中每行數據內在的唯一的標識。

熱點內容
房車配置怎麼選擇 發布:2025-04-22 16:22:14 瀏覽:491
編程貓gb 發布:2025-04-22 16:22:13 瀏覽:630
密碼加密php 發布:2025-04-22 16:07:09 瀏覽:582
imac存儲空間為什麼這么小 發布:2025-04-22 15:45:30 瀏覽:223
上傳時速是0 發布:2025-04-22 15:37:49 瀏覽:568
0基礎的編程 發布:2025-04-22 15:37:09 瀏覽:205
vnc怎麼查伺服器ip 發布:2025-04-22 15:29:20 瀏覽:158
百度雲ftp伺服器 發布:2025-04-22 15:17:50 瀏覽:656
平板哪個配置最高 發布:2025-04-22 15:16:20 瀏覽:830
天工編程 發布:2025-04-22 15:08:36 瀏覽:381