1.瞭解SQL
數據庫 :保存有組織的數據的容器(文件櫃)
表 :某種特定類型數據的結構化清單(文件)
列 :表中的一個字段
數據類型:所允許的數據的類型
行 :表中的一個記錄
主鍵 :一列(或一組列),其值可以惟一區分表中的每一個行
SQL :結構化查詢語言mysql
2.MySQL簡介
DBMS 開源,執行很快,可信賴,簡單正則表達式
3.使用MySQL
USE 數據庫名;
SHOW DATABASES;SHOW TABLES;SHOW STATUS;
SHOW CREATE ...;sql
4.檢索數據
檢索單個列:SELECT 列 FROM 表;
檢索多個列:SELECT 列1,列2 FROM 表;
檢索不一樣行:SELECT DISTINCT 列 FROM 表;
限制結果 :SELECT 列 FROM 表 LIMIT 5,5;數據庫
5.排序檢索數據
按單列排序:SELECT 列 FROM 表 ORDER BY 列;
按多列排序:SELECT 列1,列2 FROM 表 ORDER BY 列1,列2;
按排序方向:DESC降序 ASC升序(默認)
ORDER BY 後面 LIMIT安全
6.過濾數據
SELECT 列 FROM 表 WHERE 列條件;
WHERE 後面 ORDER BY;
範圍值檢查:WHERE 列 BETWEEN 5 AND 10;
空值檢查:IS NULL服務器
7.數據過濾
組合WHERE子句 AND OR(優先處理AND)
IN操做符 與OR相同功能函數
8.用通配符進行過濾
LIKE操做符
% 任何字符任意次數
_ 匹配單個字符
不要過分使用通配符性能
9.用正則表達式進行搜索
REGEXP關鍵字
. 匹配任意一個字符
| 進行OR匹配優化
10.建立計算字段
拼接字段 Concat()函數
算術計算 日誌
11.使用數據處理函數
12.彙總數據
彙集函數 AVG COUNT行數 SUM列和
13.分組數據
數據分組 GROUP BY(不能使用別名)
WHERE GROUP BY ORDER BY
過濾分組 HAVING
14.使用子查詢
子查詢進行過濾 獲得數據
子查詢做爲字段
15.聯結表
select vend_name,prod_name,prod_price from vendors,products where vendors.vend_id = products.vend_id order by vend_name,prod_name;
在沒有where字句的狀況下,默認爲笛卡兒積。
select vend_name,prod_name,prod_price from vendors inner join products on vendors.vend_id = products.vend_id;內部聯結
聯結影響性能,聯結越多表,性能下降的越厲害。
16.建立高級聯結
select p1.prod_id,p1.prod_name from products as p1,products as p2 where p1.vend_id = p2.vend_id and p2.prod_id = 'dtntr';自聯結
select c.*,.......;天然聯結,不存在重複的列
select customers.cust_id,orders.order_num from customers left outer join orders on customers.cust_id=orders.cust_id;左外部聯結,左邊全部的行
17.組合查詢
union組合查詢的結果,union all
18.全文本搜索
fullext實行全文搜索
19.插入數據
insert與select一塊兒用,插入取出來的數據
20.更新和刪除數據
update 表 set .....;
delete from 表 where.....;
21.建立和操縱表
alter table 表.....;修改表結構
22.使用視圖
視圖,不須要了解表的結構,虛擬表,數據他人已經select獲取好。
重用sql語句;簡化複雜sql,沒必要知道細節;給予用戶部分數據而不是所有(權限);
create view 視圖 as 查詢語句;
23.使用存儲過程
簡單,安全,高性能;聯想到封裝好的函數
24.使用遊標
25.使用觸發器
事件發生時自動執行(DELETE INSERT UPDATE)
26.管理事務處理
一種機制,SET TRANSACTION;
27.全球化和本地化
SHOW CHARACTER SET;SHOW COLLATION;
28.安全管理
權限的合理分配
SHOW GRANT FOR 用戶;REVOKE
GRANT 權限 ON 數據庫.表 TO 用戶;
29.數據庫維護
備份數據 mysqldump mysqlhotcopy...
進行數據庫維護 ANALYZE TABLE 表;OPTIMISE TABLE;
診斷啓動問題 手動啓動服務器
查看日誌文件
錯誤日誌【hostname.err】
查詢日誌【hostname.log】
二進制日誌【hostname.bin】
慢查詢日誌【slow.log】
FLUSH LOGS刷新日誌
30.改善性能 專用服務器 SHOW VARIABLES;SHOW STATUS; 多用戶多進程 SHOW PROCESSLIST;KILL命令 試驗聯結,並,子查詢,找出最佳的方法 EXPLAIN語句 存儲過程比一條一條快 正確的數據類型 按需取數據(SELECT *)LIKE很慢,使用FULLTEXT 時間在變化,優化也在變 索引 檢索性能+ 插入,刪除,更新性能— 複雜的條件,考慮使用UNION語句