最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle別名使用要點(diǎn)小結(jié)

 更新時(shí)間:2022年04月19日 16:23:03   作者:godtrue  
在Oracle中別名也可以在列名和表名中進(jìn)行,進(jìn)行別名處理是為了給列或表一個(gè)臨時(shí)項(xiàng),下面這篇文章主要給大家介紹了關(guān)于Oracle別名使用的一些要點(diǎn)小結(jié),需要的朋友可以參考下

今天在寫一個(gè)簡(jiǎn)單的SQL語句并執(zhí)行時(shí)拋出了如下圖所示的一個(gè)錯(cuò)誤提示信息!

恩,此異常信息很明顯,在SQL語句中標(biāo)示符的長(zhǎng)度過長(zhǎng)了,簡(jiǎn)短一些就應(yīng)該沒問題了,我查看了一下我的SQL語句發(fā)現(xiàn)是我的查詢字段的列別名過長(zhǎng),實(shí)際測(cè)試的結(jié)果為列字段別名的最大長(zhǎng)度為30個(gè)字節(jié)!

注意:我的測(cè)試數(shù)據(jù)庫(kù)是ORACLE 11.2.0.4.0(如下圖所示)

ok,問題搞定了,對(duì)應(yīng)的更多的錯(cuò)誤信息及解決方案,也可以從ORACLE的錯(cuò)誤信息手冊(cè)中查詢比如(針對(duì)此問題):

Error:
ORA-00972: identifier is too long 
Cause:
You tried to reference a table, cluster, view, index, synonym, tablespace, or username with a value that was longer than 30 characters. 
Action:
The options to resolve this Oracle error are: 
Names for tables, clusters, views, indexes, synonyms, tablespaces, and usernames must be 30 characters or less. You must shorten the name to no more than 30 characters for these objects.

以上內(nèi)容是我分析和解決我的SQL語句中,查詢時(shí)列的別名過長(zhǎng)問題的過程,也是我分享這篇小博文的引子!

下面是我針對(duì)別名的一個(gè)小結(jié)(注意:我的測(cè)試數(shù)據(jù)庫(kù)是ORACLE 11.2.0.4.0 字符集是AMERICAN_AMERICA.AL32UTF8)

一:使用別名的好處

   1)簡(jiǎn)化SQL語句的書寫,特別是多表關(guān)聯(lián)查詢且表名較長(zhǎng)時(shí)

   2)增強(qiáng)SQL語句的可讀性,特別是當(dāng)查詢出來的列字段較為復(fù)雜時(shí)效果更為明顯

二:測(cè)試小結(jié)

1)測(cè)試時(shí)使用的簡(jiǎn)單表結(jié)構(gòu)

CREATE TABLE SALES.STUDENT
(
  ID        NUMBER,
  NAME      VARCHAR2(20 BYTE),
  SEX       CHAR(1 BYTE),
  BIRTHDAY  DATE,
  HOBBY     VARCHAR2(20 CHAR)
)

2)測(cè)試使用的若干條測(cè)試數(shù)據(jù)

3)列名的最大長(zhǎng)度——30個(gè)字節(jié)

SELECT ID ABCDEABCDEABCDEABCDEABCDEABCDE--30個(gè)英文大寫字符,正常執(zhí)行
FROM STUDENT

SELECT ID ABCDEABCDEABCDEABCDEABCDEABCDE1--多加另一個(gè)1就會(huì)報(bào)ORA-00972:identifier is to long
FROM STUDENT

SELECT ID 我們學(xué)校的好學(xué)生學(xué)號(hào)--10個(gè)中文漢字字符,正常執(zhí)行
FROM STUDENT

SELECT ID 我們學(xué)校的好學(xué)生學(xué)號(hào)1--多加另一個(gè)1就會(huì)報(bào)ORA-00972:identifier is to long
FROM STUDENT

4)是否可以使用AS關(guān)鍵字——可以使用

SELECT ID AS 學(xué)號(hào)--使用AS的情況,正常執(zhí)行
FROM STUDENT

SELECT ID 學(xué)號(hào)--不適用AS也可以正常執(zhí)行,而且代碼更簡(jiǎn)潔,建議使用方式
FROM STUDENT

5)是否可以以數(shù)字開頭——可以以數(shù)字開頭但必須使用雙引號(hào)括起來

SELECT ID 123學(xué)號(hào)--執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

SELECT ID "123學(xué)號(hào)"--正常執(zhí)行

6)對(duì)于中文別名雙引號(hào)、單引號(hào)、不使用引號(hào)的區(qū)別(注意:全是英文的單引或雙引符號(hào))——使用單引符號(hào)時(shí)報(bào)錯(cuò)

SELECT ID 學(xué)號(hào)--正常執(zhí)行
FROM STUDENT

SELECT ID "學(xué)號(hào)"--正常執(zhí)行
FROM STUDENT

SELECT ID '學(xué)號(hào)'--執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

SELECT ID StudentId--正常執(zhí)行
FROM STUDENT

SELECT ID "StudentId"--正常執(zhí)行
FROM STUDENT

SELECT ID 'StudentId'--執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

7)是否可以使用其他的特殊符號(hào)比如:小括號(hào)——可以使用但必須使用雙引號(hào)括起來(注意:其他的特殊符號(hào)可能類似,這里以小括號(hào)為例做了測(cè)試,其他情況如果感興趣可以自己動(dòng)手試試)

SELECT ID AS (學(xué)號(hào))--英文小括號(hào)且使用AS的情形,執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

SELECT ID (學(xué)號(hào))--英文小括號(hào),執(zhí)行時(shí)報(bào)"ORA-00904: "ID": invalid identifier"
FROM STUDENT

SELECT ID AS "(學(xué)號(hào))"--正常執(zhí)行
FROM STUDENT

SELECT ID AS(學(xué)號(hào))--中文小括號(hào)且使用AS的情形,執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

SELECT ID(學(xué)號(hào))--中文小括號(hào),執(zhí)行時(shí)報(bào)"ORA-00904: "ID": invalid identifier"
FROM STUDENT

SELECT ID "(學(xué)號(hào))"--正常執(zhí)行
FROM STUDENT

8)是否可以保留別名中的空格——可以,但必須使用雙引號(hào)括起來

SELECT ID 學(xué) 號(hào)--執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

SELECT ID "學(xué) 號(hào)"--正常執(zhí)行
FROM STUDENT

SELECT ID XUE HAO--執(zhí)行時(shí)報(bào)"ORA-00923: FROM keyword not found where expected"
FROM STUDENT

SELECT ID "XUE HAO"--正常執(zhí)行
FROM STUDENT

9)使用別名時(shí)因SQL語句各子句的執(zhí)行順序引起的問題

           ORACLE中的SQL語句, 

            1.WHERE/GROUP BY/HAVING子句中只能直接使用欄位或者常量,而不能使用欄位的別名,除非這個(gè)別名來自                   子查詢之中,如:SELECT .... FROM (SELECT COLUMN_NAME C FROM TABLE_NAME) WHERE C > 1
            2.而ORDER BY 則可以直接使用別名,如SELECT COLUMN_NAME C FROM TABLE_NAME ORDER BY C

                這和SQL的執(zhí)行順序是有關(guān)的,SQL語句的執(zhí)行順序大致如下所示:

                1. FROM語句

                2. WHERE語句(結(jié)合條件)

                3. START WITH語句

                4. CONNECT BY語句

                5. WHERE語句

                6. GROUP BY語句

                7. HAVING語句

                8. MODEL語句

                9. SELECT語句

                10. UNION、MINUS、INTERSECT等集合演算演算

                11. ORDER BY語句

           我們可以看到SELECT子句是在WHERE子句執(zhí)行后才執(zhí)行的,當(dāng)SELECT子句執(zhí)行時(shí)查詢列的別名才生成,所以在            WHERE子句中根本看不到列的別名,當(dāng)然,自然也就無法引用列的別名了。 所以字段、表達(dá)式的別名在WHERE子            句和GROUP BY子句都是不能使用的,而在ORDER BY中不僅可以使用別名,甚至可以直接使用欄位的下標(biāo)來進(jìn)行            排序,如:ORDER BY ID或者ORDER BY 1

SELECT ID ID_ 
FROM STUDENT 
WHERE ID_=11--執(zhí)行時(shí)報(bào)"ORA-00904: "ID_": invalid identifier"

SELECT ID ID_ 
FROM STUDENT 
WHERE ID=11--正常執(zhí)行

SELECT ID ID_ 
FROM STUDENT 
WHERE ID='11'--正常執(zhí)行,注意:ID是NUMBER類型的數(shù)據(jù)

SELECT ID ID_ 
FROM STUDENT 
WHERE ID="11"--執(zhí)行時(shí)報(bào)"ORA-00904: "11": invalid identifier",注意:ID是NUMBER類型的數(shù)據(jù)


SELECT ID,COUNT(*) C
FROM STUDENT
GROUP BY ID
      HAVING C>0--執(zhí)行時(shí)報(bào)"ORA-00904: "C": invalid identifier"
      
SELECT ID,COUNT(*) C
FROM STUDENT
GROUP BY ID
      HAVING Count(*)>0--正常執(zhí)行   

SELECT ID,COUNT(*)C
FROM STUDENT
GROUP BY ID
      HAVING COUNT(*)>0
ORDER BY C--正常執(zhí)行


SELECT ID ID_
FROM STUDENT
ORDER BY ID_--正常執(zhí)行

SELECT ID ID_
FROM STUDENT
ORDER BY 1--正常執(zhí)行

10)別名是否區(qū)分大小寫——區(qū)分大小寫(注意:當(dāng)不用雙引號(hào)括起來的時(shí)候英文字符大小寫不敏感)

SELECT XUEHAO
FROM (SELECT ID XUEHAO FROM STUDENT) 
WHERE XUEHAO > 1--正常執(zhí)行

SELECT XUEHAO
FROM (SELECT ID xuehao FROM STUDENT) 
WHERE XUEHAO > 1--正常執(zhí)行

SELECT XUEHAO
FROM (SELECT ID "XUEHAO" FROM STUDENT) 
WHERE XUEHAO > 1--正常執(zhí)行

SELECT XUEHAO
FROM (SELECT ID "xuehao" FROM STUDENT) 
WHERE XUEHAO > 1--執(zhí)行時(shí)報(bào)"ORA-00904: "XUEHAO": invalid identifier"

SELECT XUEHAO
FROM (SELECT ID "xuehao" FROM STUDENT) 
WHERE xuehao > 1--執(zhí)行時(shí)報(bào)"ORA-00904: "XUEHAO": invalid identifier"

SELECT XUEHAO
FROM (SELECT ID "xuehao" FROM STUDENT) 
WHERE "xuehao" > 1--執(zhí)行時(shí)報(bào)"ORA-00904: "XUEHAO": invalid identifier"
SELECT "xuehao"
FROM (SELECT ID "xuehao" FROM STUDENT) 
WHERE "xuehao" > 1--正常執(zhí)行

這個(gè)小例子也可以看到SQL語句是先執(zhí)行WHERE子句然后才執(zhí)行SELECT子句的!

總結(jié)

到此這篇關(guān)于Oracle別名使用要點(diǎn)小結(jié)的文章就介紹到這了,更多相關(guān)Oracle別名使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Oracle數(shù)據(jù)庫(kù)如何將DATE類型字段格式轉(zhuǎn)換為YYYY/MM/DD

    Oracle數(shù)據(jù)庫(kù)如何將DATE類型字段格式轉(zhuǎn)換為YYYY/MM/DD

    在Oracle數(shù)據(jù)庫(kù)中,盡管DATE類型本身并不攜帶任何特定的格式信息,但通過TO_CHAR函數(shù)我們可以方便地將DATE類型的數(shù)據(jù)轉(zhuǎn)換為我們所需要的格式,下面給大家介紹Oracle數(shù)據(jù)庫(kù)如何將DATE類型字段格式轉(zhuǎn)換為YYYY/MM/DD樣式,感興趣的朋友跟隨小編一起看看吧
    2024-04-04
  • Oracle中is和as的區(qū)別和使用

    Oracle中is和as的區(qū)別和使用

    在Oracle數(shù)據(jù)庫(kù)中,AS和IS是兩個(gè)常用的關(guān)鍵字,它們分別表示“命名別名”和“判斷是否相同”,AS和IS的主要區(qū)別在于它們的功能,AS是一種授權(quán)服務(wù),它負(fù)責(zé)授予和管理用戶訪問數(shù)據(jù)庫(kù)特定對(duì)象和操作的權(quán)限,IS則是一種身份驗(yàn)證服務(wù),它負(fù)責(zé)管理用戶的身份和訪問權(quán)限
    2024-01-01
  • oracle中如何刪除億級(jí)數(shù)據(jù)

    oracle中如何刪除億級(jí)數(shù)據(jù)

    這篇文章主要介紹了oracle中如何刪除億級(jí)數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • oracle索引介紹(圖文詳解)

    oracle索引介紹(圖文詳解)

    在關(guān)系數(shù)據(jù)庫(kù)中,索引是一種與表有關(guān)的數(shù)據(jù)庫(kù)結(jié)構(gòu),它可以使對(duì)應(yīng)于表的SQL語句執(zhí)行得更快。索引的作用相當(dāng)于圖書的目錄,可以根據(jù)目錄中的頁(yè)碼快速找到所需的內(nèi)容
    2014-06-06
  • 在window操作系統(tǒng)上安裝Oracle10g圖文教程

    在window操作系統(tǒng)上安裝Oracle10g圖文教程

    Oracle10g是Oracle公司出的一個(gè)比較輕量版的數(shù)據(jù)庫(kù),在window系統(tǒng)上安裝比較方便,這篇文章主要介紹了在window操作系統(tǒng)上安裝Oracle10g圖文教程,需要的朋友可以參考下
    2017-02-02
  • ORACLE常見錯(cuò)誤代碼的分析與解決(三)

    ORACLE常見錯(cuò)誤代碼的分析與解決(三)

    ORACLE常見錯(cuò)誤代碼的分析與解決(三)...
    2007-03-03
  • Oracle創(chuàng)建自增字段--ORACLE SEQUENCE的簡(jiǎn)單使用介紹

    Oracle創(chuàng)建自增字段--ORACLE SEQUENCE的簡(jiǎn)單使用介紹

    在oracle中sequence就是所謂的序列號(hào),每次取的時(shí)候它會(huì)自動(dòng)增加,一般用在需要按序列號(hào)排序的地方接下來為大家介紹下Oracle創(chuàng)建自增字段方法感興趣的各位可不要錯(cuò)過了哈
    2013-03-03
  • 如何使用GDAL庫(kù)的ogr2ogr將GeoJSON數(shù)據(jù)導(dǎo)入到PostgreSql中

    如何使用GDAL庫(kù)的ogr2ogr將GeoJSON數(shù)據(jù)導(dǎo)入到PostgreSql中

    本文主要介紹了PyTorch中的masked_fill函數(shù)的基本知識(shí)和使用方法,masked_fill函數(shù)接受一個(gè)輸入張量和一個(gè)布爾掩碼作為主要參數(shù),掩碼的形狀必須與輸入張量相同,掩碼操作根據(jù)掩碼中的布爾值在輸出張量中填充指定的值或保留輸入張量中的值
    2024-10-10
  • Oracle執(zhí)行Update語句的幾種方式

    Oracle執(zhí)行Update語句的幾種方式

    這篇文章介紹了Oracle執(zhí)行Update語句的幾種方式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 淺談oracle SCN機(jī)制

    淺談oracle SCN機(jī)制

    這篇文章主要介紹了淺談oracle SCN機(jī)制,介紹了oracle事務(wù)中數(shù)據(jù)變化的部分內(nèi)容,以及scn的作用等,需要的朋友可以參考下。
    2017-09-09

最新評(píng)論

田东县| 蓝田县| 泸水县| 桑日县| 安国市| 灵武市| 沧源| 友谊县| 丘北县| 龙南县| 蒙山县| 聂拉木县| 余江县| 兰西县| 满城县| 新晃| 太白县| 洪雅县| 伊春市| 大名县| 策勒县| 屏东市| 财经| 杂多县| 韶关市| 玛纳斯县| 定边县| 阿尔山市| 绥芬河市| 毕节市| 青神县| 新和县| 扬州市| 方正县| 陆河县| 隆尧县| 闽侯县| 德保县| 松潘县| 绵阳市| 辽阳市|