關聯查詢(連線查詢)
查詢多張表或者結果集
內連線:
語法:
select * from emp,dept where emp.deptno = dept.deptno;
select * from emp inner join dept on emp.deptno = dept.deptno;
select * from emp inner join dept using(deptno);
特點:
1.多張關聯表共有的資料記錄才能出現在結果集。
2.內連線結果與連線順序無關。
外連線:
特點1.與連線順序有關
2.有主從表之分,依次遍歷主表中的每條記錄與關聯表記錄進行匹配,如果匹配到則關聯並展示到結果集,否則以null填充。
左外連線: left [outer] join … on…
右外連線: right [outer] join … on…
自然連線
特點:自然連線都是等值連線,等值連線不一定是自然連線。
select * from emp natural join dept;
子查詢(巢狀查詢)
1.將乙個查詢結果作為另乙個查詢的條件或者組成繼續進行檢索
2.分類
單行子查詢
特點:子查詢返回結果是一條記錄
select * from dept where deptno = (select deptno from emp where empno =7788);
多行子查詢
特點:子查詢返回多條記錄
select * from dept where deptno in (select distinct deptno from emp where sal > 2000);
any/all
=any: 相當於in >any:大於最小值 all:大於最大值 聯合查詢(合併結果集)
union:聯合結果集並去重
union all:不去重
儲存引擎
1.資料庫底層的軟體組織,mysql核心就是儲存引擎。
2.儲存引擎規範了資料底層的組織方式,鎖水平,索引策略。
3.mysql支援外掛程式式儲存引擎,預設使用innodb(mysql5.5之後)。
常見儲存引擎
1.innodb:事務性資料庫首選儲存引擎。安全效能高,支援行鎖定,支援外來鍵。
2.myisam:不支援事務,但是查詢效率較高
3.memory:資料儲存於記憶體,查詢效率高
檢視和設定儲存引擎
檢視當前儲存引擎:show engines;
設定儲存引擎:my.ini: default-storage-engine=innodb
檢視編碼:show variables like '%char%';
修改編碼:關閉mysql服務: net stop mysql
my.ini:
客戶端:
default-character-set=utf8
伺服器端:
character-set-server=utf8
collation-server=utf8_general_ci
啟動mysql服務: net start mysql
事物的定義:
一組dml操作,要麼同時成功,要麼同時失敗。
開啟和提交事務
開啟事務: start transaction; begin;
提交事務: commit;
回滾事務: rollback;
注:dml操作必須在事務的環境中
預設mysql自動提交事務
#設定關閉自動提交
set autocommit = 0;
acid特性
1.原子性: 事務內的dml操作必須作為整體成功或者失敗。
2.一致性: 事務執行前後整體狀態不變。
3.隔離性: 併發事務之間不能產生干擾。
4.永續性: 事務提交後將持久化到資料庫。
併發事務產生的問題
髒讀: 乙個事務讀到另乙個事務未提交的資料。
不可重複讀: 乙個事務在可讀範圍內,多次讀取發現資料不一致。原因:另一事務在此過程中
修改該資料並且提交事務。
幻讀(虛讀):事務可讀範圍內,多次讀取發現資料新增或者減少問題。 原因:另一事務在此過程中
新增或者刪除記錄並提交事務。
事務的隔離級別
1.讀未提交: 不能解決任何問題。
2.讀已提交: 解決髒讀問題。
3.可重複讀: 解決髒讀和不可重複讀問題。
4.序列化: 解決所有問題。
檢視/修改事務隔離級別
1.檢視:select @@tx_isolation;
2.修改: set session transaction isolation level;
什麼是儲存程式
儲存和執行在伺服器端程式。
為什麼使用儲存程式?
優點1.執行效率高
2.簡化開發
缺點1.占用伺服器端資源
2.資料遷移
分類儲存過程:
執行一組sql語句,可以有輸入和輸出引數。
1.儲存過程引數三種模式:
in:輸入,預設
out:輸出
inout:輸入輸出
2.流程控制
if
while .. do ..end while
loop...end loop
repeat ... end repeat
儲存函式:
執行一組sql語句,可以有返回值。
觸發器:
執行一組sql語句,由事件驅動自動執行。
java筆記 MySQL資料庫 03
dql data query language 資料查詢語言 它是sql中核心的部分!可難可易!一 掌握mysql標準查詢語句結構 select all distinct from 要查詢的表名 as 別名 left right inner join 連線表名 as 別名 where 查詢條件 se...
MySQL 03(建立資料庫)
我們可以在登陸 mysql 服務後,使用 create 命令建立資料庫,語法如下 create database 資料庫名 以下命令簡單的演示了建立資料庫的過程,資料名為 runoob root host mysql u root p enter password 登入後進入終端 mysql cre...
day03 Mysql資料庫 索引
幾乎所有的索引都是建立在字段之上.索引 系統根據某種演算法,將已有的資料 未來可能新增的資料 單獨建立乙個檔案 檔案能夠實現快速的匹配資料,並且能夠快速的找到對應表中的記錄.索引的意義 1.提公升查詢資料的效率 2.約束資料的有效性 唯一性等 增加索引的前提條件 索引本身會產生索引檔案 有時候有可能...