表類型:即爲表的存儲引擎
存儲引擎類型:
MyISAM: 不支持事務 表級別索 mysql默認的引擎 每一個表都會對應一個文件--> ls data/library/
InnoDB: 支持事務 行級別加鎖 外鍵
Archive:作歸檔引擎的 對數據壓縮 挖掘的 不容許索引 只支持insert select
Federted: 支持跨數據庫鏈接表
MERGE : 實現表聯合或分開的 是一個虛擬表 臨時表
BLACKHOLE: 實現複製的中繼的 並無實現數據的真正存儲
CSV: 底層是文本文件 實現向不兼容的非sql的跨數據庫轉換
Memory:內存引擎 比普通快30%
Cluster:或NDB 運行內存中,用於集羣中 實現節點之間數據的快速提取的
percona公司開發的xtradb支持事務
命令:
修改表類型:改表的數據引擎 表中已有數據引擎要謹慎
查看錶的引擎:SHOW TABLE STATUS\G
查看當前系統引擎: SHOW ENGINES
修改表引擎:ALTER TABLE books ENGINE=innodb
ALTER TABLE class.mask ENGINE=InnoDB 不在class數據庫中的 調用
主鍵的定義:
create table stu (
id INT NOT NULL,
name CHAR(6) NOT NULL,
sex CHAR(1) NOT NULL,
PRIMARY KEY (name,sex)
);
create table course (
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
course VARCHAR(255) NOT NULL DEFAULT 'RH033',
starttime DATE NOT NULL DEFAULT '
2011-01-09
'
);
設置字段默認參數:ALTER TABLE stu MODIFY sex CHAR(1) NOT NULL DEFAULT 'm' 默認性別都爲男
外鍵的定義:表與表之間定義 在表的引擎裏要支持
FOREIGN KEY () REFERENCES 外鍵指定的表
ALTER TABLE stu ADD course TINYINT UNSIGNED DEFAULT '2'
ALTER TABLE stu ADD FOREIGN KEY(course)<--鍵值 REFERENCES course(id)<--表
表中數據不完成時有要引用數據的完成性能夠:置空SET NULL 刪除DELECT 或 field
FOREIGN KEY (course) REFERENCES course(field| SET NULL|DELECT)
級聯
數據庫的視圖:爲一個表建立一個虛擬表 即爲另外一個表的鏡像 原表爲基表 新表就爲虛表
create view 視圖名 as select 子句
視圖能夠更新和添加數據(基表也會同步顯示)
create view test as selcet name
數據庫的索引: 快速查找數據 更新時會較慢 安行row存儲、顯示數據
存儲數據: 行 mysql會自動爲行添加源數據(源數據與自己的表無關) 源數據有行id、page id
mysql表數據存儲在文件中
1、mysql讀取數據時按照頁面來的
2、查詢數據時要進行一個全表掃描:scanning
1和2形成效率下降---->索引
索引會對應表中的數據
通常對查詢語句常常用的字段做索引
索引類型: BTREE:平衡樹索引 逐層的
RTREE :
HASH :
FULLTEXT:全文索引
索引的建立:
create table 表名 index關鍵字
alter table 表名字 add index 索引名
create index 索引名 on 表名(col1,col2)
CREATE INDEX stu_age_index ON stu(age) USING BTREE
SHOW CREATE TABLE stu;
數據庫的事務:語句的組合被看作一個總體
ACID:事務所遵循的原則
原子性 atomicity
一致性 consistency 數據不一致時會回滾的 以日誌爲基準
隔離性: 事務隔離級別 寫入的過程當中文件會被鎖定
MyISAM-->表鎖定
innodb--> 行鎖定
讀鎖:共享的 寫鎖:獨佔的
持久性:durability
事務的建立:myisam不支持事務
啓動事務 START TRANSACTTION 爲提交以前其餘用戶是看不到的 可回滾本身看到
回滾: ROLLBACK
提交 COMMIT
保存修改內容: SAVEPOINT jing<--保存名
指定到回滾到某一點:ROLLBACK TO SAVEPOINT jing 回滾到jing這一點
沒有明確指定提交事務 隱式會自動提交數據
事務的隔離級別:
read uncommitted 讀未提交
read committed 讀提交
repeatable read 重讀 mysql默認級別
serialable 串行化
select @@xt_isolation 查詢mysql的事務隔離級別
變量: 全局變量
會話變量
變量 :靜態 動態:執行過程就可修改的
設置: set global variable=值 設置全局變量
mysql的開發:
存儲過程 存儲函數 觸發器 調度事件
存儲例程:存儲過程 存儲函數 把經常使用的命令集合起來以方便後續使用 把sql語句模塊化
存儲過程: stored procedures
\d // \d // 改變結束符號爲//
create procedure name() 建立存儲過程 create procedure select()
begin begin
statement;能夠有多個 select * from stu;
end// end//
\d ; \d ;
調用存儲過程 call name() call select()
刪除存儲過程 drop procedure select()//
存儲過程: 支持自定義的變量@ set設置 系統的用@@ 參數的輸入
存儲函數:只能返回標量 字符串 值
if條件測試
調用存儲函數 select name()函數名;
\d //
CREATE FUNCTION day()
RETUNRNS VARCHAR(255)
BEGIN
DECLARE message VARCHAR(255);
IF DAYOFWEEK(NOW()) BETWEENT 2 END 6 THEN
END IF;
RETURE message;
END//
調用:SECLECT day()//
觸發器:TRIGGER 執行時附加額外的動做
mysql支持的觸發器: insert delete update
調度事件:scheduled events 定時執行的 至關於crontab
查看:SHOW CREATE PROCEDURE select; 查看存儲過程
SHOW CREATE FUNCTION select; 查看存儲函數
改變表的默認字符集
ALTER TABLE
GUI 工具:
SQLyog 遠程鏈接
phpMyAdmin
MySQL Query Browser
MySQL Administrator
MySQL Workbench
mysql認證:1、登錄認證
2、對象認證:鏈接進來是否有命令執行的權限