Oracle-SQL系列知識點(一)

Oracle-SQL

這是對Oracle-SQL知識點詳細介紹的文章系列,其他文章如下:


結構化查詢語言

  • 簡介
    結構化查詢語言(Structured Query Language)
    )簡稱SQL,是操作和檢索關系型數(shù)據(jù)庫的標準語言;

  • 分類

數(shù)據(jù)查詢語言(DQL:Data Query Language):語句主要包括 SELECT ,用于從表中檢索;

數(shù)據(jù)操作語言(DML:Data Manipulation Language):主要包括 insert,update,delete,用于添加、修改和刪除表中的行數(shù)據(jù);

事務處理語言:(TPL:Transaction Process Language):語句主要包括 commit, rollback,用于提交和回滾;

數(shù)據(jù)控制語言:(DCL:Data Control Language):主要包括 grant,revoke,用于進行授權和收回權限;

數(shù)據(jù)定義語言(DDL:Data Definition language):主要包括 create, drop, alter,用于定義、銷毀、修改數(shù)據(jù)庫對象;

簡單查詢

  • 1、基本select 語句語法
1477111910004.png
  • SQL語句的書寫規(guī)則

    • 不區(qū)分大小寫,也就是說SELECT,select,Select,執(zhí)行時效果是一樣的。
    • 可以單行來書寫,也可以書寫多行,建議分多行書寫,增強代碼可讀性,通常以子句為單位進行分行。
    • 關鍵字不可以縮寫、分開以及跨行書寫,如SELECT不可以寫成SEL或SELE CT等形式。
    • 關鍵字最好使用大寫,其它語法元素(如列名、表名等)小寫。
    • Tab和縮進的使用可以提高程序的可讀性
  • 2、算數(shù)運算符

    • 可以在SELECT語句中使用算術運算符,改變輸出結果
      ![Uploading 1477113225660_194572.png . . .]
1477112140341.png
  • 3、算術運算符優(yōu)先級

    • 乘除優(yōu)先于加減;
    • 相同優(yōu)先權的表達式按照從左至右的順序依次計算;
    • 括弧可以提高優(yōu)先權,并使表達式的描述更為清晰;
  • 4、空值NULL

    • 空值是一種無效的、未賦值的、未知的或不可用的值;
    • 空值不同于零或空格;
    • 任何包含空值的算術表達式運算后的結果都為空值;
  • 列別名

    • 用來重新命名列的顯示標題;
    • 如果SELECT語句中包含計算列,通常使用列別名來重;
    • 新定義列標題;
  • 使用列別名的方法

    • 方式1:列名 列別名
    • 方式2:列名 AS 列別名
  • 以下三種情況列別名兩側需要添加雙引號

    • 列別名中包含有空格;
    • 列別名中要求區(qū)分大小寫;
    • 列別名中包含有特殊字符;
  • 5、連接操作符

    • 用于連接列與列、列和字符;
    • 形式上是以兩個豎杠||;
    • 用于創(chuàng)建字符表達式的結果列;
  • 6、原義字符串

    • 原義字符串是包含在SELECT列表中的一個字符、一個數(shù)字或一個日期。
    • 日期和字符字面值必須用單引號引起來。
    • 每個原義字符串都會在每個數(shù)據(jù)行輸出中出現(xiàn)
  • 7、消除重復行
    在SELECT字句中使用關鍵字DISTINCT可消除重復行;

限定數(shù)據(jù)和對數(shù)據(jù)排序

  • 1、選擇限定數(shù)據(jù)行

使用WHERE子句可以返回限定的數(shù)據(jù)行,語法如下:

1477113225660.png

WHERE子句緊跟在FROM子句之后condition(s)表示條件表達式,通常格式為:列名 比較操作符 要比較的值

  • 2、比較操作符
1477113310673.png
  • 字符型數(shù)據(jù)作為被比較的值時,必須用單引號引起來

  • 字符型數(shù)值區(qū)分大小寫

  • 日期型數(shù)值作為被比較的值時,必須用單引號引起來。

  • 日期型數(shù)值是區(qū)分日期表達形式的,默認的日期形式是DD-MON-RR

  • 3、特殊比較運算符

1477113427983.png
  • 4、邏輯運算符

當需要和多個條件表達式進行比較時,需要使用邏輯運算符把多個表達式連接起來;

1477113536775.png
  • 5、運算符的優(yōu)先級

括號’()’優(yōu)先于其他操作符

1477113594138.png
  • ORDER BY子句

使用ORDER BY子句能對查詢結果集進行排序,語法結構如下;

1477113658988.png

其中:

  • 可以按照列名、表達式、列別名、結果集的列序號排序;

  • ASC: 升序,默認值 DESC: 降序;

  • ORDER BY 子句必須寫在SELECT語句的最后;

  • 排序規(guī)則

    • 數(shù)字升序排列小值在前,大值在后。即按照數(shù)字大小順序由小到大排列。
    • 日期升序排列相對較早的日期在前,較晚的日期在后;
    • 字符升序排列按照字母由小到大的順序排列。即由A-Z排列;中文升序按照字典順序排列。
    • 空值在升序排列中排在最后,在降序排列中排在最開始;

單行函數(shù)

  • 1、SQL函數(shù)概述
1477114054240.png
  • 2、SQL函數(shù)分類
1477114093869.png
  • 3、單行函數(shù)語法
    語法:
函數(shù)名[(參數(shù)1,參數(shù)2,…)]

其中的參數(shù)可以是以下之一:

變量
列名
表達式

  • 4、單行函數(shù)特征

    • 單行函數(shù)對單行操作;
    • 每行返回一個結果;
    • 有可能返回值與原參數(shù)數(shù)據(jù)類型不一致;
    • 單行函數(shù)可以寫在SELECT、WHERE、ORDER BY子句中;
    • 有些函數(shù)沒有參數(shù),有些函數(shù)包括一個或多個參數(shù);
    • 函數(shù)可以嵌套;
  • 5、單行函數(shù)的分類

1477114317083.png
  • 6、字符函數(shù)

主要指參數(shù)類型是字符型,不同函數(shù)返回值可能是字符型或數(shù)值型;

1477114449959.png
  • 大小寫轉換函數(shù)

LOWER(列名|表達式):將大寫或大小寫混合的字符轉換成小寫

UPPER(列名|表達式) :將小寫或大小寫混合的字符轉換成大寫

INITCAP(列名|表達式) :將每個單詞的第一個字母轉換成大寫,其余的字母都轉換成小寫

  • 字符處理函數(shù)

CONCAT(column1|expression1,column2|expression2) 連接兩個值 ,等同于||;

SUBSTR (column|expression,n1[,n2])

  • 返回第一個參數(shù)中,從第n1位開始,長度為n2的子串
  • 如果n2省略,取第n1位開始的所有字符。
  • 如果n1是負值,表示從第一個參數(shù)的后面第abs(n1)位開始向右取長度為n2的子串。

LENGTH(column | expression) 取字符長度;

INSTR(s1,s2,[,n1],[n2])
返回s1中,子串s2從n1開始,第n2次出現(xiàn)的位置。n1,n2默認值為1

LPAD(s1,n1,s2)
返回s1被s2從面填充到n1長度后的字符串。

RPAD(s1,n1,s2)
返回s1被s2從右面填充到n1長度后的字符串。
TRIM:去除字符串頭部或尾部(頭尾)的字符格式:TRIM(leading | trailing | both trim_character From trim_source)

REPLACE(s1,s2,s3)
把s1中的s2用s3替換。

  • 7、數(shù)值函數(shù)

ROUND : 將列或表達式所表示的數(shù)值四舍五入到小數(shù)點后的第n位。格式: ROUND(column| expression, n)

TRUNC : 將列或表達式所表示的數(shù)值截取到小數(shù)點后的第n位。格式:TRUNC(column| expression, n);

MOD : 取m除以n后得到的余數(shù)格式:MOD(m,n);

  • 8、日期類型數(shù)學運算

SYSDATE :返回系統(tǒng)當前日期
add_months(sysdate,12) 加1年
add_months(sysdate,1) 加1月
sysdate+1 加一天sysdate+1/24 加1小時sysdate+1/(2460)* 加1分鐘
sysdate+1/(246060)** 加1秒鐘
EXTRACT :返回日期類型數(shù)據(jù)中的年份、月份或者日;
MONTHS_BETWEEN :返回兩個日期類型數(shù)據(jù)之間間隔的自然月數(shù)
NEXT_DAY:返回某一日期的下一個指定日期
LAST_DAY:返回指定日期當月最后一天的日期

  • 9、轉換函數(shù)
1477115197320.png
  • 隱式數(shù)據(jù)類型轉換規(guī)則

    • 對于INSERT和UPDATE操作,oracle會把插入值或者更新值隱式轉換為字段的數(shù)據(jù)類型
    • 對于SELECT語句,oracle會把字段的數(shù)據(jù)類型隱式轉換為變量的數(shù)據(jù)類型
    • 當比較一個字符型和數(shù)值型的值時,oracle會把字符型的值隱式轉換為數(shù)值型
    • 當比較字符型和日期型的數(shù)據(jù)時,oracle會把字符型轉換為日期型
    • 用連接操作符(||)時,oracle會把非字符類型的數(shù)據(jù)轉換為字符類型
    • 如果字符類型的數(shù)據(jù)和非字符類型的數(shù)據(jù)(如number、date、rowid等)作算術運算,則oracle會將字符類型的數(shù)據(jù)轉換為合適的數(shù)據(jù)類型,這些數(shù)據(jù)類型可能是number、date、rowid等;
  • 顯式數(shù)據(jù)類型轉換

通常是在字符類型、日期類型、數(shù)值類型之間進行顯式轉換。主要有3個顯式轉換函數(shù):

  • TO_CHAR
  • TO_NUMBER
  • TO_DATE
1477115361003.png
  • 10、通用函數(shù)

與空值(NULL)相關的一些函數(shù),完成對空值(NULL)的一些操作。主要包括以下函數(shù):

  • NVL
    語法:NVL (expr1,expr2)
    如果expr1不是null,返回expr1,否則返回expr2

  • NVL2

語法:NVL2(expr1,expr2,expr3)
如果expr1不是null,返回expr2,否則返回expr3

  • NULLIF

語法: NULLIF(expr1,expr2)
比較兩個表達式,如果相等,返回null,否則,返回第一個表達式

  • COALESCE

COALESCE (表達式1, 表達式2, ... 表達式n);
函數(shù)是對NVL函數(shù)的擴展。COALESCE函數(shù)的功能是返回第一個不為空的參數(shù),參數(shù)個數(shù)不受限制。

條件處理函數(shù):

  • CASE表達式
1477115556000.png
  • DECODE

DECODE(字段|表達式, 條件1,結果1[,條件2,結果2…,][,缺省值])

  • 11、函數(shù)的嵌套

    • 單行函數(shù)可以嵌套于任何層。
    • 嵌套的函數(shù)是從最里層向最外層的順序計算的!
1477115638859.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1.簡介 數(shù)據(jù)存儲有哪些方式?電子表格,紙質文件,數(shù)據(jù)庫。 那么究竟什么是關系型數(shù)據(jù)庫? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 2,033評論 0 2
  • SQL SELECT 語句 一、查詢SQL SELECT 語法 (1)SELECT 列名稱 FROM 表名稱 (2...
    有錢且幸福閱讀 6,020評論 0 33
  • 世人對《小王子》的推崇無需贅述,就是這樣的一個小故事,卻填充了我諸多的漫漫時光。年少輕狂、深夜孤寂、閑暇懶散,靜靜...
    陳兒閱讀 978評論 0 1
  • 在這森林里 水泥悄悄萌著芽 鋼筋開著花 花兒結成的果實 既四方又規(guī)矩 深夜果實里的夫妻在叫罵 紅墻里鎖了孩子的哭啼...
    倉央格桑閱讀 635評論 0 0
  • 1、建立項目 制定規(guī)范 編寫一個名為“學習筆記”的Web應用程序,讓用戶能夠記錄感興趣的主題,并在學習每個主題的過...
    summer_zhou閱讀 1,218評論 0 4

友情鏈接更多精彩內(nèi)容