SELECT uname FROM TUser WHERE uname=‘admin’數據庫
SELECT 字段名列表 FROM 表名 WHERE 條件;spa
在Oracle數據庫中,對象是屬於模式的,每一個帳戶對應一個模式,模式的名稱就是用戶名稱。在表名前面要添加模式的名字,在表的模式名和表名之間用「.」分隔。對象
咱們以不一樣的帳戶登陸數據庫時,就進入了不一樣的模式,好比登陸到STUDENT 帳戶,就進入了STUDENT模式。blog
而在STUDENT模式要查詢屬於SCOTT模式的表,就須要寫成: SELECT * FROM SCOTT.EMP;但若是登陸用戶訪問屬於用戶模式自己的表,那麼能夠省略表名前面的模式名稱。 SELECT * FROM emp。排序
在查詢語句中能夠有算術表達式,它將造成一個新列,用於顯示計算的結果,一般稱爲計算列。表達式中能夠包含列名、算術運算符和括號。括號用來改變運算的優先次序。經常使用的算術運算符包括: * +:加法運算符。 * -:減法運算符。 * *:乘法運算符。 * /:除法運算符。table
SELECT ename,sal,sal*(1+20/100) FROM emp;登錄
咱們能夠爲表的列起一個別名,它的好處是,能夠改變表頭的顯示。特別是對於計算列,能夠爲它起一個簡單的列別名以代替計算表達式在表頭的顯示。date
SELECT ename AS 名稱, sal 工資 FROM emp;select
若是在顯示結果中存在重複行,可使用的關鍵字DISTINCT消除重複顯示。im
SELECT DISTINCT job FROM emp;
若是要在查詢的同時排序顯示結果,可使用以下的語句: SELECT 字段列表 FROM 表名 WHERE 條件 ORDER BY 字段名1 [ASC|DESC][,字段名2 [ASC|DESC]...];
ORDER BY從句後跟要排序的列。ORDER BY 從句出如今SELECT語句的最後。 排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。若是不指明排序順序,默認的排序順序爲升序。若是要降序,必須書寫DESC關鍵字。若省略ASC和DESC,則默認爲ASC,即升序排序
降序排序 :SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;
多列排序:能夠按多列進行排序,先按第一列,而後按第二列、第三列......。SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;
若是要對計算列排序,能夠爲計算列指定別名,而後按別名排序。select table_name t,tablespace_name s from user_tables order by t
運算的優先順序是NOT,AND,OR。若是要改變優先順序,可使用括號。
相等鏈接有一個問題:若是某個僱員的部門尚未填寫,即保留爲空,那麼該僱員在查詢中就不會出現;或者某個部門尚未僱員,該部門在查詢中也不會出現。 爲了解決這個問題能夠用外連,即除了顯示知足相等鏈接條件的記錄外,還顯示那些不知足鏈接條件的行,不知足鏈接條件的行將顯示在最後。外連操做符爲(+),它能夠出如今相等鏈接條件的左側或右側。出如今左側或右側的含義不一樣,這裏用以下的例子予以說明。
顯示僱員的名稱、工資和所在的部門名稱及沒有任何僱員的部門。 執行如下查詢: SELECT ename,sal,dname FROM emp,dept WHERE emp.deptno(+)=dept.deptno; left outer join 即左外鏈接方式:
SELECT ename,sal,dname FROM emp left outer join dept on emp.deptno=dept.deptno;
最後是一個自鏈接的訓練實例,自鏈接就是一個表,同自己進行鏈接。對於自鏈接能夠想像存在兩個相同的表(表和表的副本),能夠經過不一樣的別名區別兩個相同的表。
子查詢通常出如今SELECT語句的WHERE子句中,Oracle也支持在FROM或HAVING子句中出現子查詢。 子查詢比主查詢先執行,結果做爲主查詢的條件,在書寫上要用圓括號擴起來,並放在比較運算符的右側。 子查詢能夠嵌套使用,最裏層的查詢最早執行
例子:
SELECT ename,sal FROM emp WHERE sal<(SELECT sal FROM emp WHERE empno=7788) AND deptno=(SELECT deptno FROM emp WHERE empno=7788);
若是子查詢返回多行的結果,則咱們稱它爲多行子查詢。多行子查詢要使用不一樣的比較運算符號,它們是IN、ANY和ALL。
例子:
SELECT * FROM emp WHERE sal < all (SELECT sal FROM emp WHERE job = 'MANAGER');
==SELECT * FROM emp WHERE sal < (select min(sal) from (SELECT sal FROM emp WHERE job = 'MANAGER'));
若是子查詢返回多列,則對應的比較條件中也應該出現多列,這種查詢稱爲多列子查詢。
例子:
SELECT * FROM emp WHERE (job,deptno) =(SELECT job,deptno FROM emp WHERE empno=7788);
同於上面語句: SELECT * FROM emp WHERE job =(SELECT job FROM emp WHERE empno=7788) and deptno =(SELECT deptno FROM emp WHERE empno=7788) ;