《MySQL必知必會》1 7章 學習筆記

2021-09-28 11:53:05 字數 2904 閱讀 1859

資料庫(database) 儲存有組織的資料的容器(通常是乙個文 件或一組檔案)。

表(table) 某種特定型別資料的結構化清單。

模式(schema) 關於資料庫和表的布局及特性的資訊。 可以理解成是資料庫的同義詞。

行(row) 表中的乙個記錄。

列(column) 表中的乙個字段。所有表都是由乙個或多個列組成的。

資料型別(datatype) 所容許的資料的型別。每個表列都有相 應的資料型別,它限制(或容許)該列中儲存的資料。

主鍵(primary key) ①一一列(或一組列),其值能夠唯一區分表中每個行。

表中任何列都可以作為主鍵,只要它滿足以下條件:

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

每個行都必須具有乙個主鍵值(主鍵列不允許null值)。

主鍵通常定義在表的一列上,但這不是必需的,也可以一起使用多個列作為主鍵。在使用多個列作為主鍵時,上述條件必須應用到構成主鍵的所有列,所有列值的組合必須是唯一的(但單個列的值可以不唯一)。

除強制規則外,應該堅持的幾個普遍認可的好習慣:

不更新主鍵列中的值;

不重用主鍵列的值;

不在主鍵列中使用可能會更改的值。

sql(發音為字母s-q-l或sequel)是結構化查詢語言(structured query language)的縮寫。sql是一種專門用來與資料庫通訊的語言。

-u使用者名稱,-h主機名,-p埠號,-p輸入密碼。

use 資料庫名

show databases;

show tables;

show columns from 表名;與describe 表名;相同

show status; 顯示伺服器狀態資訊

show create database 庫名; 和show create table 表名; 分別用來顯示建立庫或表的sql語句

show grants;顯示使用者的安全許可權

show errors 和 show warnings 顯示伺服器錯誤或警告

sql語句不區分大小寫,許多sql開發人員喜歡對所有sql關鍵字使用大寫,對所有列和表明使用小寫,這樣做⑩**更易於閱讀和除錯。

檢索單列 select 列名 from 表名;

檢索多列 select 列名1,列名2 from 表名;

檢索所有列 select * from 表名;

檢索不同的行(唯一的行) select distinct 列名 from 表名;distinct關鍵字應用於所有列而不僅是前置它的列,即select distinct 列名1,列名2 from 表名;表示列名1和列名2組合起來不同;

限制結果 select 列名 from 表名 limit num; 返回結果不多於num行;select 列名 from 表名 limit num1, num2;返回結果從num1行開始,不多於num2行。行號從0開始。也可以寫為select 列名 from 表名 limit num2 offset num1。

order by子句使用的列將是為顯示所選的列,但也可以為非顯示所選的列

select 列名 from 表名 order by 列名1 [desc | asc]; 單列排序:列名1以字母序排序(預設公升序)

select 列名 from 表名 order by 列名1 [desc | asc],列名2 [desc | asc],…; 多列排序:多列以字母序排序(預設公升序),列名2進行排序需要保證多行的列名1相同,否則不進行排序

指定排序方向:預設公升序

降序:列名 desc

多列排序都為降序 需要排序的每個列名後都加desc

select 列名 from 表名 order by 列名 [desc | asc] limit 行數; 組合使用選出最高或最低的幾行,有些資料庫用top關鍵字來完成

select 列名 from 表名 where 子句 [order by 列名]; 過濾資料

檢索出的資料並不是以純粹的隨機順序顯示的。如果不排序,資料一般將以它在底層表**現的順序顯示。這可以是資料最初新增到表中的順序。但是,如果資料後來進行過更新或刪除,則此順 序將會受到mysql重用**儲存空間的影響。因此,如果不明確控制的話,不能(也不應該)依賴該排序順序。關聯式資料庫設計理論認 為,如果不明確規定排序順序,則不應該假定檢索出的資料的順序有意義。

1、where子句中使用的條件,如果將值與串型別的列進行比較,則需要限定引號;

2、使用between時必須制定兩個值,所需範圍的低端值和高階值,這兩個值必須用and分隔,between匹配範圍中所有的值,包括開始值和結束值。

3、可以用is null匹配空值。注意在通過過濾選擇出不具有特定值的行時,具有null值的行不會被匹配。

= 等於 <> != 不等於

《小於 <=小於等於 >大於 >=大於等於

betweem … and … 範圍值檢查

is null

and or

in not

計算的次序。sql(像多數語言一樣)在處理or操作符前,優先處理and操作符。

圓括號具有較and或or操作符高的計算次序。

圓括號在where子句中還有另外一種用法。in操作符用來指定條件範圍,範圍中的每個條件都可以進行匹配。

in操作符的優點:

在使用長的合法選項清單時,in操作符的語法更清楚且更直觀。 

在使用in時,計算的次序更容易管理(因為使用的操作符更少)。

in操作符一般比or操作符清單執行更快。

in的最大優點是可以包含其他select語句,使得能夠更動態地建立where子句。

where子句中的not操作符有且只有乙個功能,那就是否定它之後所跟的任何條件。

not操作符的優點:

對於簡單的where子句,使用not確實沒有什麼優勢。但在更複雜的子句中,not是非常有用的。

mysql支援使用not對in、between和exists子句取反,這與多數其他dbms允許使用not對各種條件取反有很大的差別。

mysql的必知必會 mysql 必知必會 筆記

好久沒有寫了。1 show columns from table 等同於describe table顯示的是表的結構。而select from table 則顯示的是整個表中插入的資料。2 select distinct c1,c2 from table除非列不相同,否則所有行將被檢索出來,即不能對...

MySQL必知必會 17

mysql也允許執行多個查詢 多條select語句 並將結果作為單個查詢結果集返回。這些組合查詢通常稱為並 union 或復合查詢 compound query 有兩種基本情況,其中需要使用組合查詢 在單個查詢中從不同的表返回類似結構的資料 對單個表執行多個查詢,按單個查詢返回資料。可用union操...

mysql必知必會 mysql必知必會(四)

十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...