表的連線分為內連和外連
內連線:
內連線實際上就是利用where語句對倆個表形成的笛卡兒積進行篩選,我們前面學的所有連線都是內鏈結
語法:select 欄位名 from 表1 inner join 表2 on 連線條件 and 其他條件
例:顯示smith的名字和部門名稱
外連線:
外連線分為左外連線和右外連線
建立倆張表:
//學生表
//成績表:
查詢所有學生的成績,如果這個學生沒有成績,也要將學生的個人資訊顯示出來
查詢所有成績,即使沒有對應的學生資訊,也要將成績顯示出來
索引的基本原理:
對於沒有索引的表,我們查詢時,他會掃瞄整個表;而新增了索引以後,索引會形成一顆二叉樹
索引說明:
建立索引:
1.主鍵索引:
1)第一種方式:在建表的時候,直接在字段後面指定primary key
2)第二種方式:在建立表的最好,指定某列為主鍵索引
3)第三種方式:建立表以後再新增索引
主鍵索引的特點:
乙個表中,最多只有乙個主鍵索引,當然可以使用復合主鍵
主鍵索引效率高(主鍵不可重複)
建立主鍵索引的列,它的值不能為null,且不能重複
主鍵索引的列基本上是int
2.唯一索引的建立:
1)第一種方式:在表定義是,在某列後直接指定unique唯一屬性
2)第二種方式:建立表示,在表後指定
3)第三種方式:表建立好以後新增
唯一索引的特點:
乙個表中可以有多個唯一索引
查詢效率高
如果在某一列建立唯一索引,必須保證這列資料不能重複
如果乙個唯一索引上指定了no nul,等價於主鍵索引
3.普通索引的建立
1)第一種方式:在表的定義最後,指定某列為索引
2)第二種方式:建立完表以後指定
3)第三種方式:建立乙個名字叫 idx_name 的索引
普通索引的特點:
乙個表可以有多個普通索引,普通索引在實際開發中用的比較多
如果某列需要建立索引,但是該列有重複的值,那麼我們就應該使用普通索引
4.全文索引的建立
當對文章字段或者大量文字的字段進行檢索時,需要用到全文索引。預設全文索引支援英文,不支援中文
如果對中文進行全文檢索,可以使用sphinx的中文版
建立全文索引:
如何使用全文索引:
查詢索引:
方法1:show keys from 表名;
方法2:show index from 表名;
方法3:desc 表名
刪除索引:
方法1:刪除主鍵:alter table 表名 drop primary;
方法2:刪除其他索引:alter table 表名 drop index 索引名;
方法3:drop index 索引名 on 表名
建立索引的原則:
事務是由一組dml語句組成的,在邏輯上具有相關性。這一組dml語句要麼全部成功,要麼全部失敗,是乙個整體
事物的使用:
注:事務的隔離級別:
如何設定事務的隔離級別:
檢視當前的隔離級別:
mysql預設的隔離級別是可重複讀,一般情況下不要修改
事務的acid特性
Mysql內外連線
1.自然連線 natural join 自然連線將表中具有相同名稱的列自動進行匹配,自然連線不必指定任何同等連線條件也不能認為指定哪些列需要被匹配,自然連線得到的結果表中,兩表中名稱相同的列只出現一次。select from employee natural join department 2.內連...
Mysql事物和索引
mysql 事務主要用於處理操作量大,複雜度高的資料。mysql事物具有以下特點 在 mysql 中只有使用了 innodb 資料庫引擎的資料庫或表才支援事務。事務處理可以用來維護資料庫的完整性,保證成批的 sql 語句要麼全部執行,要麼全部不執行。事務用來管理 insert,update,dele...
MySQL筆記 復合查詢 內外連線
集合查詢 子查詢 單行子查詢 select from emp where deptno select deptno from emp where ename smith 多行子查詢 in 查詢和10號部門的工作相同的雇員的名字,崗位,工資,部門號,但是不包含10自己的 select ename,jo...