mysql存儲引擎、索引及事務

表類型:即爲表的存儲引擎
存儲引擎類型:
              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會自動爲行添加源數據(源數據與自己的表無關) 源數據有行idpage id
             mysql表數據存儲在文件中
              1mysql讀取數據時按照頁面來的
              2、查詢數據時要進行一個全表掃描:scanning
              12形成效率下降---->索引
              索引會對應表中的數據
              通常對查詢語句常常用的字段做索引
       索引類型: BTREE:平衡樹索引 逐層的
                 RTREE
                 HASH
                 FULLTEXT:全文索引
       索引的建立:
              create table 表名 index關鍵字
              alter table 表名字 add index 索引名
             create index 索引名 on 表名(col1col2)
              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、對象認證:鏈接進來是否有命令執行的權限
相關文章
相關標籤/搜索