***********************************************聲明***********************************************************************?
原創(chuàng)作品,出自 “深藍(lán)的blog” 博客,歡迎轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必注明出處,否則追究版權(quán)法律責(zé)任。
深藍(lán)的blog: http://blog.csdn.net/huangyanlong/article/details/39907707
****************************************************************************************************************************
過于簡單的sql,此處就不再列舉了,下面列舉的已經(jīng)為比較簡單的基礎(chǔ)查詢操作:
在查詢語句中選擇指定的列就是關(guān)系數(shù)據(jù)庫中所稱的投影(project)。
因為字符集的不同使日期型顯示往往出現(xiàn)故障,能夠通過以下來設(shè)置:
SQL> alter session set NLS_DATE_LANGUAGE='AMERICAN';
【補充】字符集查詢:
[oracle@master1 db_home]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK??
--環(huán)境變量設(shè)置,格式:語言_地域(文化)_字符集
SQL> col name for a30
SQL> col value$ for a30
SQL> set linesize 200
SQL> set pagesize 200
SQL> select name,value$ from props$ where name like '%NLS%';
win下查看是這個:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NAME?????????????????????????? VALUE$
------------------------------ ------------------------------
NLS_LANGUAGE?????????????????? AMERICAN?????? --語言
NLS_TERRITORY????????????????? AMERICA??????? --地域
NLS_CURRENCY?????????????????? $
NLS_ISO_CURRENCY?????????????? AMERICA
NLS_NUMERIC_CHARACTERS???????? .,
NLS_CHARACTERSET?????????????? ZHS16GBK
NLS_CALENDAR?????????????????? GREGORIAN
NLS_DATE_FORMAT??????????????? DD-MON-RR
NLS_DATE_LANGUAGE????????????? AMERICAN
NLS_SORT?????????????????????? BINARY
NLS_TIME_FORMAT??????????????? HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT?????????? DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT???????????? HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT??????? DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY????????????? $
NLS_COMP?????????????????????? BINARY
NLS_LENGTH_SEMANTICS?????????? BYTE
NLS_NCHAR_CONV_EXCP??????????? FALSE
NLS_NCHAR_CHARACTERSET???????? AL16UTF16
NLS_RDBMS_VERSION????????????? 10.2.0.1.0
注意:解決這個問題的原則,client的字符集和oracle 數(shù)據(jù)庫的字符集保持一致
補充完成。
在sql查詢中遵循下面規(guī)律:
字符和日期型數(shù)據(jù)位左對齊;
數(shù)字型數(shù)據(jù)為右對齊;
SQL查詢中的算術(shù)表達(dá)式:超級簡單!
例1:算術(shù)表達(dá)式
SQL> select empno,ename,sal,500+sal from emp;
EMPNO ENAME??????????? SAL??? 500+SAL
----- ---------- --------- ----------
?7369 SMITH???????? 800.00?????? 1300
?7499 ALLEN??????? 1600.00?????? 2100
?7521 WARD???????? 1250.00?????? 1750
?7566 JONES??????? 2975.00?????? 3475
?7654 MARTIN?????? 1250.00?????? 1750
?7698 BLAKE??????? 2850.00?????? 3350
?7782 CLARK??????? 2450.00?????? 2950
?7788 SCOTT??????? 3000.00?????? 3500
?7839 KING???????? 5000.00?????? 5500
?7844 TURNER?????? 1500.00?????? 2000
?7876 ADAMS??????? 1100.00?????? 1600
?7900 JAMES???????? 950.00?????? 1450
?7902 FORD???????? 3000.00?????? 3500
?7934 MILLER?????? 1300.00?????? 1800
14 rows selected
例2:算術(shù)表達(dá)式:優(yōu)先級推斷
SQL> select empno,ename,500+sal*12 from emp;
EMPNO ENAME????? 500+SAL*12
----- ---------- ----------
?7369 SMITH?????????? 10100
?7499 ALLEN?????????? 19700
?7521 WARD??????????? 15500
?7566 JONES?????????? 36200
?7654 MARTIN????????? 15500
?7698 BLAKE?????????? 34700
?7782 CLARK?????????? 29900
?7788 SCOTT?????????? 36500
?7839 KING??????????? 60500
?7844 TURNER????????? 18500
?7876 ADAMS?????????? 13700
?7900 JAMES?????????? 11900
?7902 FORD??????????? 36500
?7934 MILLER????????? 16100
14 rows selected
由例1、例2簡單總結(jié)出優(yōu)先級的規(guī)律為:
1、先乘除、后加減
2、優(yōu)先級次序為自左向右
3、括號里優(yōu)先
4、多重括號,內(nèi)層括號運算最為優(yōu)先
別名的設(shè)置
例3:
SQL> select empno as "employee number", ename name,(500+sal)*12 "annual salary" from emp;
employee number NAME?????? annual salary
--------------- ---------- -------------
?????????? 7369 SMITH????????????? 15600
?????????? 7499 ALLEN????????????? 25200
?????????? 7521 WARD?????????????? 21000
?????????? 7566 JONES????????????? 41700
?????????? 7654 MARTIN???????????? 21000
?????????? 7698 BLAKE????????????? 40200
?????????? 7782 CLARK????????????? 35400
?????????? 7788 SCOTT????????????? 42000
?????????? 7839 KING?????????????? 66000
?????????? 7844 TURNER???????????? 24000
?????????? 7876 ADAMS????????????? 19200
?????????? 7900 JAMES????????????? 17400
?????????? 7902 FORD?????????????? 42000
?????????? 7934 MILLER???????????? 21600
14 rows selected
別名:
對于列名須要加入keyword“as”
對于表達(dá)式,直接在其后加入就可以,很easy
連接運算符讓顯示更易讀
例4:使用分隔符
SQL> select ename || ' annual salary ' || (500+sal)*12 "employee's salary" from emp;
employee's salary
SMITH annual salary 15600
ALLEN annual salary 25200
WARD annual salary 21000
JONES annual salary 41700
MARTIN annual salary 21000
BLAKE annual salary 40200
CLARK annual salary 35400
SCOTT annual salary 42000
KING annual salary 66000
TURNER annual salary 24000
ADAMS annual salary 19200
JAMES annual salary 17400
FORD annual salary 42000
MILLER annual salary 21600
例5:假設(shè)認(rèn)為還不夠直觀的話,讓我們變成中文,看看效果例如以下:
SQL> select ename || ' 年薪金額為: ' || (500+sal)*12 "員工2014年年薪" from emp;
員工2014年年薪
SMITH 年薪金額為: 15600
ALLEN 年薪金額為: 25200
WARD 年薪金額為: 21000
JONES 年薪金額為: 41700
MARTIN 年薪金額為: 21000
BLAKE 年薪金額為: 40200
CLARK 年薪金額為: 35400
SCOTT 年薪金額為: 42000
KING 年薪金額為: 66000
TURNER 年薪金額為: 24000
ADAMS 年薪金額為: 19200
JAMES 年薪金額為: 17400
FORD 年薪金額為: 42000
MILLER 年薪金額為: 21600
小結(jié):
??? 在讓顯示結(jié)果更易讀時,常用連接運算符“||”以達(dá)到預(yù)期的效果。字符串與連接運算符的搭配使用在工作中非經(jīng)常見,這會使數(shù)據(jù)更易讀。
去重的考慮:DISTINCT運算符
格式:select *|{[distinct] 列表,...} from 表名;
列表的格式為:列名|表達(dá)式[別名]
select * from 表名:從表名所指定的表中選擇全部的列
select distinct 列表 ... from 表名:為從表名所指定的表中選擇列表所規(guī)定的列,但不顯示反復(fù)的數(shù)據(jù)行(或記錄)。
例6:在emp表內(nèi)查詢部門號時,會出現(xiàn)所有的信息,數(shù)據(jù)量小還能夠,假設(shè)數(shù)據(jù)量變得巨大以后,那將變得非常難篩選出實用的信息來。
SQL> select deptno from emp;
DEPTNO
------
??? 20
??? 30
??? 30
??? 20
??? 30
??? 30
??? 10
??? 20
??? 10
??? 30
??? 20
??? 30
??? 20
??? 10
14 rows selected
下面使用distinct命令,例如以下所看到的:
SQL> select distinct deptno from emp;
DEPTNO
------
??? 30
??? 20
??? 10
但這種方法,我們并不建議使用,由于這個distinct完畢的是兩個步驟,會先排序,然后從中篩選反復(fù)值。能夠預(yù)見,假設(shè)在一張大表里的話,效率將會是很低的。假設(shè)想要去重的話,我們能夠使用group分組,來完畢去重的目的。
為了實現(xiàn)去重的目的,我們能夠這樣運行語句,例如以下所看到的:
SQL> select deptno from emp group by deptno;
DEPTNO
------
??? 30
??? 20
??? 10
***********************************************聲明***********************************************************************?
原創(chuàng)作品,出自 “深藍(lán)的blog” 博客,歡迎轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必注明出處,否則追究版權(quán)法律責(zé)任。
深藍(lán)的blog: http://blog.csdn.net/huangyanlong/article/details/39907707
**************************************************************************************************************************** ?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
