SQL必知必會》讀書筆記

2021-08-10 04:23:48 字數 2311 閱讀 8394

慎用「*」檢索所有列:

一般而言,除非你確實需要表中的每一列,否則最好別使用*萬用字元。雖然使用萬用字元能讓你自己省事,不用明確列出所需列,但檢索不需 要的列通常會降低檢索和應用程式的效能。

使用萬用字元有乙個大優點。由於不明確指定列名(因為星號檢索每一列),所以能檢索出名字未知的列。

2. 關於distinct

不能部分使用distinct

distinct關鍵字作用於所有的列,不僅僅是跟在其後的那一列。例如,你指定select distinct vend_id, prod_price,除非指定的兩列完 全相同,否則所有的行都會被檢索出來。

限定行數

sql server和access中使用select時,可以使用top關鍵字來限制最多返回多少行

oracle:select prod_name from products where rownum <=5;

mysql、mariadb、postgresql或者sqlite:select prod_name from products limit 5;

萬用字元

在確實需要使用萬用字元時,也盡量不要把它們用在搜尋模式的開始處。把萬用字元置於開始處,搜尋起來是最慢的

5 xxtrim()去除空格

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

1.count

使用count(*)對錶中行的數目進行計數,不管表列中包含的是空值(null)還是非空值。 使用count(column)對特定列中具有值的行進行計數,忽略null值。

子查詢返回單列

作為子查詢的select語句只能查詢單個列。企圖檢索多個列將返回錯誤。

用於統計數量欄位的子查詢

select cust_name, cust_state,

(select

count(*)

from orders

where orders.cust_id = customers.cust_id) as orders

from customers order

by cust_name;

該子查詢對檢索出的每個顧客執行一次

union使用規則

union會自動取消重複的行 union all則不會取消重複行。

刪除所有行

如果想從表中刪除所有行,不要使用delete。可使用truncate table語句,它完成相同的工作,而速度更快(因為不記錄資料的變動)。

除非確實打算更新和刪除每一行,否則絕對不要使用不帶where子句的update或delete語句。

保證每個表都有主鍵(如果忘記這個內容,請參閱第12課),盡可能像where子句那樣使用它(可以指定各主鍵、多個值或值的範圍)。

在update或delete語句使用where子句前,應該先用select進行測試,保證它過濾的是正確的記錄,以防編寫的where子句不正確。

使用強制實施引用完整性的資料庫(關於這個內容,請參閱第12課),這樣dbms將不允許刪除其資料與其他表相關聯的行。 5. 有的dbms允許資料庫管理員施加約束,防止執行不帶where子句的update或delete語句。如果所採用的dbms支援這個特性,應該使用 它。

事務用來管理insert、update和delete語句。不能回退select語句(回退select語句也沒有必要),也不能回退create或drop操作。

mysql和oracle事務區別

游標:(cursor)是乙個儲存在dbms伺服器上的資料庫查詢,

它不是一條select語句,而是被該語句檢索出來的結果集。

作用:可以在檢索出來的行中前進或後退一行或多行。

1、主鍵,oracle不可以實現自增,mysql可以實現自增。

oracle新建序列,seq_user_id.nextval

2、索引:

mysql索引從0開始,oracle從1開始。

3、分頁,

mysql: select * from user order by desc limit n ,m.

表示,從第n條資料開始查詢,一共查詢m條資料。

oracle:select * from user

select rownum a * from ((select * from user)a)

select * from (select rownum a.* from (select * from user) a )

where r between n , m .

表示,n表示從第n條資料查詢,查詢到m條資料

SQL必知必會 讀書筆記

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

《SQL必知必會》讀書筆記

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

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

管理系統 dbms 資料庫是通過 dbms 建立和操縱的容器,而具體它究竟是什麼,形式如何,各種資料庫都不一樣 表 table 某種特定型別資料的結構化清單。資料庫中的每個表都有乙個名字來標識自己。這個名字是唯一的,即資料庫中沒有其他表具有相同的名字。有的資料庫還使用資料庫擁有者的名字作為唯一名的一...