Oracle教程-查詢(二)

來源:互聯網
上載者:User

標籤:

emp 僱員表
欄位名稱   資料類型       是否為空白   備忘
--------   -----------   --------   --------
EMPNO    NUMBER(4)                 員工編號               
ENAME    VARCHAR2(10) Y         員工名稱       
JOB        VARCHAR2(9)   Y         職位               
MGR       NUMBER(4)       Y         上級的編號           
HIREDATE DATE             Y         入職日期              
SAL         NUMBER(7,2)   Y         月工資           
COMM      NUMBER(7,2)   Y         獎金               
DEPTNO   NUMBER(2)      Y         所屬部門
-------------------------------------------
job欄位:
clerk 普員工
salesman 銷售
manager 經理
analyst 分析師
president 總裁

                

dept 部門表
欄位名稱    資料類型          是否為空白   備忘
--------    -----------      --------   --------
DEPTNO   NUMBER(2)                    部門編號              
DNAME    VARCHAR2(14)    Y          部門名稱       
LOC         VARCHAR2(13)   Y          部門所在地點
-------------------------------------------
DNAME欄位:
accounting 財務部
research 研發部
operations 業務部
 
salgrade 工資層級表
欄位名稱  資料類型   是否為空白  備忘
--------  ---------  --------  --------
GRADE   NUMBER     Y         層級               
LOSAL    NUMBER     Y         最低工資              
HISAL     NUMBER     Y         最高工資

                           

1、查看錶結構
desc emp;

        

2、查詢所有列
select * from dept;
備忘:切忌動不動就用select *,使用*效率比較低,特別在大表中要注意。
       
3、set timing on/off;
開啟顯示操作時間的開關,在底部顯示操作時間。
eg、sql> insert into tb_stu values(‘0001‘, ‘zhangsan‘, 24);
1 row inserted
executed in 0.015 seconds

              

4、insert into...select...表複製語句
文法:insert into table2(field1,field2,...) select value1,value2,... from table1

--建立tb_dept表
create table tb_dept
(
  deptno number(4) not null,
  dname  varchar2(14),
  loc    varchar2(13)
)
--添加主鍵約束
alter table tb_dept add constraint tb_dept primary key (deptno);

--insert into...select...用法
insert into tb_dept (deptno, dname, loc) select a.deptno, a.dname, a.loc from dept a;

           

5、統計
select count (*) from emp;

               

6、查詢指定列
select ename, sal, job, deptno from emp;

            

7、如何取消重複行distinct
select distinct deptno, job from emp;

              

8、查詢smith所在部門,工作,薪水
select deptno, job, sal from emp where ename = ‘smith‘;
注意:oracle對內容的大小寫是敏感的,所以ename=‘smith‘和ename=‘smith‘是不同的

             

9、nvl函數
格式為:nvl(string1, replace_with)   
功能:如果string1為null,則nvl函數返回replace_with的值,否則返回string1的值。  
注意事項:string1和replace_with必須為同一資料類型,除非顯示的使用to_char函數。  
eg、如何顯示每個僱員的年工資?
select sal*13+nvl(comm, 0)*13 "年薪" , ename, comm from emp;

               

10、使用列的別名
select ename "姓名", sal*12 as "年度營收" from emp;

              

11、如何處理null值
使用nvl函數來處理

              

12、如何連接字串(||)
select ename || ‘ is a ‘ || job from emp;

                 

13、使用where子句
問題:如何顯示工資高於3000的員工?
select * from emp where sal > 3000;
問題:如何尋找1982.1.1後入職的員工?
select ename,hiredate from emp where hiredate >‘1-1 月-1982‘;
問題:如何顯示工資在2000到3000的員工?
select ename,sal from emp where sal>=2000 and sal<=3000;

                

14、如何使用like操作符
%:表示0到多個字元 _:表示任意單個字元
問題:如何顯示首字元為s的員工姓名和工資?
select ename,sal from emp where ename like ‘s%‘;
如何顯示第三個字元為大寫o的所有員工的姓名和工資?
select ename,sal from emp where ename like ‘__o%‘;

                

15、在where條件中使用in
問題:如何顯示empno為7844,7839,123,456的僱員情況?
select * from emp where empno in (7844, 7839, 123, 456);

          

16、使用is null的操作符
問題:如何顯示沒有上級的僱員的情況?
錯誤寫法:select * from emp where mgr = ‘‘;
正確寫法:select * from emp where mgr is null;


來源: <http://www.cnblogs.com/linjiqin/archive/2012/02/02/2335347.html>  

來自為知筆記(Wiz)

Oracle教程-查詢(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.