《sql必知必會》筆記

2021-06-21 13:50:04 字數 2745 閱讀 9151

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

注意誤用混淆:資料庫軟體被稱為dbms,資料庫是通過dbms建立和操縱的容器

模式:關於資料庫和表的布局及特性的資訊。

主鍵:一列或一組列,其值能夠唯一標識表中的每一行。

多條sql語句必須以「 ;」分隔。

sql語句不區分大小寫,select和select是相通的,不過表名,列名和值可能有所不同(依賴於具體點dbms及其如何配置)。

處理sql語句時,其中所有 空格都被忽略(將sql語句分成多行有利於閱讀和除錯)。

檢索多個列,列名之間必須以「 ,」分隔,但是最後乙個列不用加。

檢索所有列使用(*)萬用字元,用於檢索名字未知的列或者需要知道表中的每一列,效能低。

檢索不同的值使用distinct關鍵字 ,放在列名前面,其不僅作用於緊跟其後的那一列。 

例:select distinct vend_id,prod_price from products; 除非兩行相同,否則所有的列都會被檢索出來。

使用注釋   --之後的文字都是注釋

#一行的開始使用(不常用)

/*  */多行的注釋

子句:sql語句由子句構成,有些子句是必須的,有些則是可選的。乙個子句通常是由乙個關鍵字加上所提供的資料組成。

order by 可以取乙個或多個列的名字,據此對輸出進行排序。如果他不是最後的子句,將會出現錯誤資訊,並且可以使用非檢索的列排序。

按多個列進行排序:

..order by xx,yy;  先按xx,在xx都相同時再按yy,若xx中都是唯一的則不會按yy排列

..order by 2,3;

指定的是選擇列的相對位置而不是列名

指定排序方向:desc(降序)關鍵字只應用到直接位於其前面的列名,在多個列上進行降序排序,必須對每一列指定desc關鍵字,asc(公升序)預設的無用。

a與a預設相同,無法簡單使用order by改變

使用where子句:資料根據where子句中指定的搜尋條件進行過濾,接在from子句之後給出。

資料最好不要再應用層過率,客戶端應用處理資料,會使伺服器發動多餘資料,造成頻寬的浪費。

where子句操作符  

操作符說明

操作符說明=等於

>

大於<>

不等於》=

大於等於

!=不等於

!>

不大於between

在指定的兩個值之間

is null

為null值

!<

不小於《小於

關於引號:字串用單引號限制,用來與數值列比較不需要用引號

between例:select prod_name,prod_price

form products

where between 5 and 10

null:無值。它與字段包含0,空字串,或僅包含空格不同;

確定值是否為null,不能簡單的檢查是否=null,應該用特殊的is null

操作符:用來連線過改變where子句中的子句的官架子,也叫邏輯操作符。

and:檢索滿足條件的所有指定的行

or:  與and相反,許多dbms在第乙個條件得到滿足的情況下就不在計算第二個條件了(第乙個滿足時,不管是否滿足,相應的行都將被檢索出來)

and再求值優先順序大於or,可以使用()改變結合順序避免出錯。

in where子句中用來指定要匹配值的清單的關鍵字,功能與or相當。

例:where vend_id  in  ('dll01','brs01') 等同於where vend_id='dll01' or vend_id=『brs01』

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

not:where子句中用來否定其後條件關鍵字。

例:where not vend_id='dll01' 等同於 where vend_id<>'dll01'

優勢是與in操作符聯合使用時,not可以非常簡單的找出與條件列表不匹配的行。

like操作符: 為在搜尋子句中使用萬用字元,必須使用like操作符

萬用字元搜尋只能用於文字字段(字串),非文字資料型別字段不能使用從佩服搜尋

百分號(%)萬用字元:表示任何字元出現任意次數

..where prod_name like 'fish%';  --表示dbms接受fish之後的任意字元不管有多少個

..where prod_name like '%bean bag%'; -- 表示匹配任何位置上包含文字bean bag的值,無論前後出現什麼字元

..where prod_name like 'f%y';  --表示找出以f起頭、以y結尾的所有值

說明:注意後面跟的空格,上句檢索不出文字y後跟空格的項

..where prod_name like '%';   --%不會匹配名稱是null的行

下劃線(_)萬用字元

與%用途一樣,但只能匹配單個字元

說明:db2不支援、access使用的是?而不是_

方括號()萬用字元

方括號萬用字元制定乙個字符集,他必須匹配指定位置的乙個字元

例:找出多有名字以j或m起頭的人

where cust_contact like '[jk]%' ;

說明:一般用[^jk]否定、但access使用[!jm]否定.

使用萬用字元的技巧:

不要過度使用萬用字元,其他操作符優先

需要使用萬用字元時,也盡量不要把他們用在搜尋的開始

注意萬用字元的位置,放錯地方不會反悔想要的資料

SQL必知必會

資料庫 儲存有組織的資料的容器。資料庫管理系統 dbms 資料庫軟體,資料庫是通過dbms建立和操縱的容器。表 某種特定資料型別的結構化清單。資料庫中的每個表都有自己的名字,且唯一。不同的資料庫可以使用相同的表名。表的特性 模式 資料在表中如何儲存,儲存什麼樣的資料,資料如何分解。模式可以用來描述資...

《SQL必知必會》 筆記(1 5)

1.1.3 資料型別 varchar和char的區別 表中的每個列都有相應的資料型別,需要注意的是在不同的資料庫中相同型別的命名也是不同的,這個需要檢視對應資料庫的文件說明 就字元型別來說,mysql有char和varchar,而oracle除了這兩種還有一種varchar2型別,同時它們對應的格式...

sql必知必會筆記2

1 在很多dbms中,as關鍵字是可選的,不過最好使用它,這被視為一條最佳實踐。2 正如所見,sql的萬用字元很有用。但這種功能是有代價的,即萬用字元搜尋一般比前面討論的其他搜尋要耗費更長的處理時間。這裡給出一些使用萬用字元時要記住的技巧。不要過度使用萬用字元。如果其他操作符能達到相同的目的,應該使...