資料庫:儲存有組織的資料的容器(通常是乙個檔案或一組檔案)。
注意誤用混淆:資料庫軟體被稱為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的萬用字元很有用。但這種功能是有代價的,即萬用字元搜尋一般比前面討論的其他搜尋要耗費更長的處理時間。這裡給出一些使用萬用字元時要記住的技巧。不要過度使用萬用字元。如果其他操作符能達到相同的目的,應該使...