SQL必知必會讀書筆記(一)

2021-09-19 09:28:35 字數 2513 閱讀 2712

管理系統(dbms)

資料庫是通過 dbms 建立和操縱的容器,而具體它究竟是什麼,形式如何,各種資料庫都不一樣

表(table)

某種特定型別資料的結構化清單。

資料庫中的每個表都有乙個名字來標識自己。這個名字是唯一的,即資料庫中沒有其他表具有相同的名字。有的資料庫還使用資料庫擁有者的名字作為唯一名的一部分。也就是說,雖然在相同資料庫中不能兩次使用相同的表名,但在不同的資料庫中完全可以使用相同的表名。

資料型別相容

資料型別及其名稱是 sql 不相容的乙個主要原因。雖然大多數基本資料型別得到了一致的支援,但許多高階的資料型別卻沒有。更糟的是,偶然會有相同的資料型別在不同的 dbms 中具有不同的名稱。對此使用者毫無辦法,重要的是在建立表結構時要記住這些差異。表中的任何列都可以作為主鍵,

只要它滿足以下條件:

1.任意兩行都不具有相同的主鍵值;

2.每一行都必須具有乙個主鍵值(主鍵列不允許 null 值);

3.主鍵列中的值不允許修改或更新;

4. 主鍵值不能重用(如果某行從表中刪除,它的主鍵不能賦給以後的新行)。

關鍵字(keyword)

作為 sql 組成部分的保留字。關鍵字不能用作表或列的名字。所需的列名寫在 select 關鍵字之後,from 關鍵字指出從哪個表中檢索資料。

結束 sql 語句

多條 sql 語句必須以分號(;)分隔。多數 dbms 不需要在單條 sql語句後加分號,但也有 dbms 可能必須在單條 sql 語句後加上分號。當然,如果願意可以總是加上分號。事實上,即使不一定需要,加上分號也肯定沒有壞處

sql 語句和大小寫

請注意,sql 語句不區分大小寫,因此 select 與 select 是相同的。同樣,寫成 select 也沒有關係。許多 sql 開發人員喜歡對 sql 關鍵字使用大寫,而對列名和表名使用小寫,這樣做使**更易於閱讀和除錯。不過,一定要認識到雖然 sql 是不區分大小寫的,但是表名、列名和值可能有所不同(這有賴於具體的 dbms 及其如何配置

使用空格

在處理 sql 語句時,其中所有空格都被忽略。sql 語句可以寫成長長的一行,也可以分寫在多行。多數 sql 開發人員認為,將 sql 語句分成多行更容易閱讀和除錯distinct 關鍵字作用於所有的列,不僅僅是跟在其後的那一列。

注釋使用-- (兩個連字元)嵌在行內。-- 之後的文字就是注釋,在一行的開始處使用#,這一整行都將作為注釋。注釋從/*開始,到*/結束,/*和*/之間的任何內容都是注釋。

order by 子句的位置

無值(no value),它與字段包含 0、空字串或僅僅包含空格不同。

sql(像多數語言一樣)在處理 or 操作符前,優先處理 and 操作符。此問題的解決方是使用圓括號對操作符進行明確分組。

為什麼要使用 in 操作符?其優點如下

1. 在有很多合法選項時,in 操作符的語法更清楚,更直觀。

2. 在與其他 and 和 or 操作符組合使用 in 時,求值順序更容易管理。

3. in 操作符一般比一組 or 操作符執行得更快(在上面這個合法選項很少的例子中,你看不出效能差異)。

4. in 的最大優點是可以包含其他 select 語句,能夠更動態地建立where 子句。第 11 課會對此進行詳細介紹。

請注意 null

萬用字元%看起來像是可以匹配任何東西,但有個例外,這就是 null。方括號()萬用字元用來指定乙個字符集,它必須匹配指定位置(萬用字元的位置)的乙個字元。正如所見,sql 的萬用字元很有用。但這種功能是有代價的,即萬用字元搜尋一般比前面討論的其他搜尋要耗費更長的處理時間。這裡給出一些使用萬用字元時要記住的技巧。不要過度使用萬用字元。如果其他操作符能達到相同的目的,應該使用其他操作符。在確實需要使用萬用字元時,也盡量不要把它們用在搜尋模式的開始處。把萬用字元置於開始處,搜尋起來是最慢的。仔細注意萬用字元的位置。如果放錯地方可能不會返回想要的資料。

拼接(concatenate)

將值聯結到一起(將乙個值附加到另乙個值)構成單個值

select rtrim(vend_name) + ' (' + rtrim(vend_country) + ')' 

from vendors 

order by vend_name;

trim 函式

大多數 dbms 都支援 rtrim()(正如剛才所見,它去掉字串右邊的空格)、ltrim()(去掉字串左邊的空格)以及 trim()(去掉字串左右兩邊的空格)。

別名(alias)

是乙個欄位或值的替換名。別名用 as 關鍵字賦予。

別名的其他用途

別名還有其他用途。常見的用途包括在實際的表列名包含不合法的字元(如空格)時重新命名它,在原來的名字含混或容易誤解時擴充它。

SQL必知必會》讀書筆記

慎用 檢索所有列 一般而言,除非你確實需要表中的每一列,否則最好別使用 萬用字元。雖然使用萬用字元能讓你自己省事,不用明確列出所需列,但檢索不需 要的列通常會降低檢索和應用程式的效能。使用萬用字元有乙個大優點。由於不明確指定列名 因為星號檢索每一列 所以能檢索出名字未知的列。2.關於distinct...

SQL必知必會 讀書筆記

資料庫 database 儲存有組織的資料的容器 表 table 某種特定型別資料的結構化清單 同乙個資料庫中表名是唯一的哦 模式 schema 關於資料庫和表的布局及特性的資訊 列 column 表中的乙個字段。所有表都是有乙個或多個列組成的 資料型別 datatype 所允許的資料的型別。每個表...

《SQL必知必會》讀書筆記

第1章 了解sql 第2章 檢索資料 第3章 排序檢索資料 第4章 過濾資料 不等於 小於 小於等於 第5章 高階資料過濾 第6章 用萬用字元進行過濾 第7章 建立計算字段 第8章 使用資料處理函式 第9章 彙總資料 第10章 分組資料 第11章 使用子查詢 第12章 聯結表 第13章 建立高階聯結...