一.數據文件--》DBMS--》客戶端--》用戶mysql
二.關鍵字 key word 做爲sql語言的組成部分的一個保留字。毫不要用一個關鍵字命名錶或者列sql
三.USE關鍵字,不顯示任何結果,依賴於使用的客戶機顯示某種形式的通知;記住必須使用USE打開數據庫,才能讀取其中的數據。數據庫
四.show databases 返回可用數據可的一個列表;安全
爲了得到數據庫內的表的列表,使用show tables;服務器
show columns給出一個表名:例如:show columns from 表;函數
show status 用於顯示普遍的服務器狀態信息;排序
show create database 和 show create table,分別顯示常見特定數據庫或者表的MySQL語句;產品
show grants 用來顯示授予用戶的安全權限;it
show errors和show warnings,用來顯示服務器的錯誤或警告消息;table
在mysql中執行 help show 會顯示容許的show語句
五.檢索語句select
檢索單個列:例如 select prod_name from products 未指定排序時不排序
多條語句用;分隔
sql語句不區分大小寫(美觀性:語句大寫,表和表名小寫)
檢索多個列:要查詢多個列,必定要在列名之間加上,號 可是最後一個不加。 例如:select prod_id,prod_name,prod_price from products;
檢索全部列:select * from products 返回表中全部列,列的順序通常是列在定義中出現的順序,但有時候不是這樣的,表的模式的變化(添加或者刪除)會致使順序的變化。
檢索不一樣的行:select distinct vend_id from prodcts; 使用distinct關鍵字必須放在列名的前面,他的做用是去重適用於全部檢索的列,不能部分使用distinct
限制結果:1.例如:select prod_name from products limit 5;意思是limit返回很少於5行。爲了得出下一個5行,要指定檢索開始行和行數。
2.例如:select prod_name from products limit 5,5;第一個5是開始位置,第二個5是檢索的行數。
3.行0,檢索出來的一個行爲0行,而不是行1,所以limit1,1 檢索出來的是第二行而不是第一行。
4.行數不夠時,只能返回能返回的行數
5.例如:limit3,4 =limit4 offset3 意爲從3行開始取第四行
使用徹底限定的表名:1.例如:select products.prod_name from products; 這條sql語句在功能上等於本章再開始用的那一條語句,可是這裏制定了一個徹底限定的列名。
2.例如:select products.prod_name from crashcourse.products; 這條語句在功能上也等於剛使用的那條語句(固然,假定products表確實位於crashcourse數據庫中)
排序檢索數據:1.order by 子句取一個或者多個列的名字,據此對輸出進行排序,例如:select prod_name from products order by prod_name;
2.例如:select prod_id,prod_name,prod_price from products order by prod_price,prod_name ; 先按價格再按名稱排序
指定排序方向:1.order by * desc 降序排序 例如:select prod_id,prod_name,prod_price from products order by prod_price desc;最貴的在前邊。
2.例如:select prod_id,prod_name,prod_price from products order by prod_price desc,prod_name;最貴的排在前邊,而後在對產品名字排序。
3.在多個列上降序排序,必須對每一個列指定desc關鍵字;desc相反的是asc(升序,可是默認爲升序,通常不用)
4.order by 與 limit組合使用;select prod_price from products order by prod_price desc limit 1; desc保證行是按照最昂貴的倒序,而limit1 是告訴mysql 只返回1行。(order by子句必須在from以後,limit 必須在order by 以後 不然會產生錯誤)
六。過濾數據
1.使用where子句:where子句在表名(from子句)以後給出
2.order by 在where 以後
3.where子句操做符:between:在二者之間,=,!=,<,<=, <>:不等於
4.between使用 例如:select prod_price from products where prod_price between 5 and 10;
5.空值檢查:null並非空格,語法以下: select prod_name from products where prod_price is null;
6.and和or語句通常在where以後使用,and的優先級高於or 因此and會被優先執行,若是想先執行or 加入().
例如:select prod_name,prod_price from products where (vend_id=1002 or vend_id=1003) and prod_price >= 10;這樣就會優先執行or語句
7.in操做符:select prod_name,prod_price from products where vend_id in(1002,1003) order by prod_name;
in操做符的優勢:在使用長的合法選項清單時,in操做符的語法更清楚直觀。
使用in時更容易管理
in操做符y通常比or操做符執行的快
in最大的優勢是能夠包含其餘的select語句,使得可以更動態的創建where子句
8.not操做符:where子句中的not操做符有且只有一個功能,那就是否認它以後所跟的任何條件。 例如:select prod_name,prod_price from products where vend_id not in(1002,1003) order by prod_name;
七。通配符進行過濾
1.like操做符:爲在搜索子句中使用通配符,必須用like操做符。like指示mysql後跟的搜索模式利用通配符匹配而不是直接相等匹配進行比較。
2.百分號(%)通配符。區分大小寫;在搜索串中,%表示任何字符出現的任意次數。例如:select prod_id,prod_name from products where prod_name like 'jet%';就是jet出現的次數。通配符%不能匹配null。
3.下劃線(—)通配符:下劃線通配符與%用途同樣,但下劃線只匹配單個字符而不是多個字符
4.通配符使用技巧:不要過分使用通配符;在確實使用通配符時,除非有不要,不然不要把它們用在搜索模式的開始處,若是用了的話,搜索起來是最慢的;仔細注意通配符的位置
5.like不加通配符匹配不到結果,正則能夠。
八。彙總數據
sql彙集函數:
avg(返回某列的平均值)
count(返回某列的行數)
max(返回某列的最大值)
min(返回某列的最小值)
sum(返回某列值之和)
例如:select avg(prod_price) as avg_price from products;
九。分組數據
1.建立分組:分組是在select語句中的group by 子句中創建的
2.group by的重要規定
group by的子句能夠包含任意數目的列
若是在group by子句中嵌套了分組,數據將在最後規定的分組上進行彙總,創建分組時,指定全部列都一塊兒計算
group by 子句中列出的每一個列都必須是檢索列或有效的表達式(但不能時彙集函數)。若是在select中使用表達式,則必須在group by 子句中指定相同的表達式。不能使用別名
除彙集計算語句外,select語句中的每一個列都必須在group by 子句中給出
若是分組列中具備null值,則null必須做爲一個分組返回。若是列中有多個null值,他們將分爲一組
group by 子句必須出如今where子句以後,order by 子句以前
3.過濾分組:having
having很是相似於where。目前爲止所學過的全部類型where子句均可以用having代替,惟一的差異是where過濾行,而having過濾分組。
例如:select cust_id,count(*) as orders from orders group by cust_id having count(*) >=2
十。使用子查詢
1.子查詢
11、插入數據
1.數據插入:insert是用來插入行到數據庫表的。插入能夠用幾種方式使用
插入完整的行
插入行的一部分
插入多行
插入某些查詢結果
例如:insert into 表 values(插入數據)
十二。更新和刪除數據
update 表名 set 賦值被更新的列 where 來自某個列
delete from 表名 where 字段