多表聯合查詢:
1.帶in的子查詢
2.內連線查詢
3.外連線查詢:左連線查詢和右連線查詢
建立資料庫supermarket,在其中建立 uesr、product、user_order 3個表,簡單模擬商場的使用者、商品、訂單。
使用者: id name age *** vip
商品: productid name price mount
訂單總資訊:orderid data address state userid
查詢訂單裡的使用者的資訊
select * from user where in (select distinct userid from user_order);
select * from user where not in (select distinct userid from user_order);
distinct的作用是去重,同一使用者會有多個訂單資訊。
多表查詢不建議用in查詢,因為:
子查詢在完成後,會產生一張臨時表,儲存後,再供外部查詢進行查詢,等到整個sql語句結束後,再進行釋放。
select * from user a,user_order b where a.id=b.userid and b.state=『已付款』;
或者:連線查詢(比如查詢,a、b的重複內容,c=a∩b)
select a.* from user a inner join user_order b on a.id=b.userid where b.state=『已付款』;
左連線(比如查詢a、b中,a除了重複的內容,c = a-a∩b)
select a.* from user a left join user_order b on a.id=b.userid where b.userid is null;
右連線(c = b - a∩b)
select a.* from user a right join user_order b on a.id=b.userid where b.userid is not null;
索引:把新增索引的字段全部放在一顆b+樹上,再次查詢的時候,可以快速查詢,其中有單列索引和多列索引(聯合索引)。
單列索引:索引排序的時候,只用乙個欄位的值進行排序。
多列索引:索引排序時,用多個欄位的值進行排序,先用第乙個字段值進行排序,第乙個字段相同,再用第二個字段進行排序,一次類推,順序不能亂!
表中unique唯一鍵字段都是自動新增索引項的,分別被稱為主鍵索引和唯一鍵索引。
建立索引:
create index name_index on user(name);
刪除:drop index name_index on user;
explain:是分析sql語句的執行計畫的
學會用explain檢視sql的執行計畫,觀察索引的使用情況。。。
設定乙個合理的慢查詢時間,可以有效的檢視sql執行的效率。
mysql的日誌有4種:
1:二進位制日誌 insert delete updata select
2: 查詢日誌 主要儲存所有的select語句
3:錯誤日誌 主要記錄mysql server執行、啟動、關閉、重啟階段的一些異常
4:慢查詢日誌 會把mysql server 執行中,所有執行時間超過指定long_query_time時間的select查詢語句記錄下來
MySQL 基礎語句學習
mysql語句 1 ddl語句 資料定義語言,定義不同的資料段 資料可 表 列 索引等資料庫物件的定義 ddl 是資料定義語言的縮寫,簡單來說,就是對資料庫內部的物件進行建立 刪除 修改的操作語言。它和 dml 語言的最大區別是 dml 只是對錶內部資料的操作,而不涉及到表的定義 結構的修改,更 不...
MYSQL學習筆記 SQL語句基礎
增 insert into grade values 3,english 80 insert into class select stuid,class from grade 值需匹配 刪 delete from grade where id 3 改 update grade set grade 6...
mysql5 0基礎語句 mysql基礎語句(一)
一 登入 退出 退出 quit 或 exit 二 備份 恢復資料庫 備份資料庫 在mysql服務外面執行 mysqldump h伺服器位址 u登入名 p 要備份的資料庫名 要儲存為的檔案 恢復資料庫 mysql h伺服器位址 u登入名 p埠號 p 資料庫名 注意 通常該資料庫名是需要先建立 存在 三...