dml:資料操作語言—>基礎的增刪改查,insert delete updata select
1)安裝
2)服務管理
5)資料管理
語法update 表名
set 欄位1 = 值1,
欄位2 = 值2,
…where 條件表示式;示例
語法delete from 表名 where 條件表示式;
示例– 刪除201801010002訂單的資訊
delete from orders
where order_id = 『201801010002』;
特別注意
1)進行嚴格條件限定,如果不帶條件刪除所有
2)真實專案中,刪除、修改資料之前一定要備份
帶比較操作符的查詢:>,<,>=,<=,<>(或!=)
示例1:查詢所有訂單金額大於200元的訂單
select * from orders where amt > 200;
示例2:查詢所有狀態不為2的訂單
select * from orders where status <> 2;
聯合查詢
1)什麼是聯合查詢:也叫連線查詢,將多個表中的
資料進行連線,得到乙個查詢結果集
2)什麼情況下使用聯合查詢:當從乙個表無法查詢
到所有想要的資料時,使用聯合查詢
前提:聯合的表之間一定要有邏輯上的關聯性
select a.order_id, a.amt,
b.cust_name, b.tel_no
from orders a, customer b
where a.cust_id = b.cust_id;
3)笛卡爾積(聯合查詢的理論依據)
4)連線查詢
索引什麼是索引:提高查詢效率的一種技術
原理:根據某一列(字段)進行分段、排序,通過避免
全表掃瞄提高查詢效率
索引分類
1)普通索引、唯一索引
普通索引:mysql基本型別,字段值可以重複
唯一索引:欄位的值不能重複(可以為空)
2)單列索引、組合索引
單列索引:乙個索引只包含乙個字段
組合索引:乙個索引包含多個字段
3)聚集索引、非聚集索引
聚集索引(cluster index): 索引的鍵值順序和資料
順序是一致的
非聚集索引:索引的鍵值順序和資料
順序不一致的
4)如何建立索引
5)刪除索引
7)實驗:索引效率測試(20分鐘)
第一步:利用現有的orders表,插入10萬筆資料
執行insert_orders_many.py檔案
第二步:在沒有索引的情況下查詢,條件如下:
order_id = 『2018010100000002』
order_id = 『2018010100055555』
order_id = 『2018010100099996』
第三步:給orders表新增索引
create index idx_order_id on orders(order_id)
再執行第二步的查詢,檢視執行時間
備註: 如果執行檔案報錯,檢查連線引數
核對欄位的名稱、順序、型別
pymysql匯入出錯,因為缺少了pymysql模組,更換
到教學機上執行
8)索引的優缺點
9)索引使用注意事項
10)索引失效的sql語句
索引失效:表中有索引,但是查詢時候沒有使用
什麼是儲存引擎:表的物理實現方式,由於物理
實現不一樣,決定不同儲存引擎型別的技術特性
不一樣,例如:儲存機制,索引機制,鎖定方式
檢視儲存引擎
1)檢視mysql支援的儲存引擎:show engines;
2)檢視某個表的儲存引擎
show create table 表名稱;
3)修改表的儲存引擎
alter table 表名稱 engine = 引擎名稱;
4)示例:建立表,並修改儲存引擎
create table t3 (
id int primary key,
name varchar(32)
) engine = innodb;
alter table t3 engine=myisam;
檢視:show create table t3;
常用儲存引擎特點
1)innodb(mysql5.5及以後的版本預設)
如果許可權不夠,使用sudo -i 進入root使用者,
進入上面的目錄檢視
cd /var/lib/mysql
ls orders.* (檢視orders表的儲存檔案)
1.三表的內連線+group by + 子查詢的綜合查詢
2.三正規化
第一正規化(確保每列保持原子性)
第二正規化(確保表中的每列都和主鍵相關)
第三正規化(確保每列都和主鍵列直接相關,而不是間接相關)
具體見:
3.4級隔離級別
具體見:
4.innodb和myisam引擎的區別,
上面有5.多對多表的反正規化優化
增加冗餘欄位來增加查詢的效率。
6.索引本質是二分法查詢。
研發面試準備
c 從編譯到執行要經歷以下過程 源 預處理 編譯 優化 彙編 鏈結 目標程式 要進行第一步,預處理過程,要幹的事情有哪些呢,要處理預編處理巨集定義,條件編譯指令,條件包含指令,特殊符號.對於巨集定義指令,會將巨集定義變數替換成對應的部分.對條件編譯指令,預處理過程按照程式定義過濾掉不必要的部分.對條...
人人測試開發面試準備
1 首先制定專案計畫,運用什麼模型,開發計畫,測試計畫,質量計畫,使用者期望。2 需求分析 需求分析報告 目標,硬體軟體執行環境,介面需求,系統特性,效能需求,其他需求。3 系統設計階段 系統總體架構,確定開發工具,用圖的方式描述出使用者和各子系統或模組的全域性檢視 概要設 高層架構設計,系統部署圖...
Python開發面試必備
1在cpython中,列表被實現為長度可變的陣列。2.在python2中,dict的底層是依靠雜湊表 hash table 進行實現的,使用開放位址法解決衝突.3手撕iou def compute iou rec1,rec2 computing area of each rectangles s r...