概念:mysql
通俗的說,事務指一組操做,要麼都執行成功,要麼都執行失敗sql
舉例:數據庫
銀行匯款 嚶嚶嚶卡上一千元 嘻嘻嘻卡上也是一千元 嚶嚶嚶給朋友轉帳 若是,網斷了,嚶嚶嚶錢已經扣除,而朋友的錢又沒加,啷個辦? 代碼:create table user( id int auto_increment primary key,name varchar(12) not null default '', salary int not null default 0)charset='utf8'; insert into user(name,salary) values ('嚶嚶嚶',1000),('嘻嘻 嘻',1000) 使用事務: start transaction; sql語句 commit(無異常提 交)/rollback(有異常回滾); start transaction; update user set salary=900 where name='嚶嚶嚶'; select *from user; update user set salary=1100 where name='嘻嘻嘻'; select *from user; commit;(無異常 提交) start transaction; update user set salary=800 where name='嚶嚶嚶'; select *from user; rollback; select *from user; ##rollback回滾影響全部 ##特性: 原子性(Atomicity):原子意外最小的粒子,既不能再分的事務,要麼執行所有,要麼所有取消; 一致性(Consistency):指事務發生前和發生後,數據的總額依然匹配; 隔離性(Isolation):簡單來講,某個事物的操做對其餘事務不可見的; 持久性(Durbility):當事務完成後,其影響應該保留下來,不能撤銷,只能經過‘補償性事務’來抵消以前的錯誤; ##存儲引擎: InnoDB:舉例,保時捷引擎 MyIsam:舉例,五菱宏光引擎 建表時: creat table user(id int auto_increment primary key,name carchar(12) not null default '',salary int not null default 0)engine=Innodb charset utf8; mysql5.5以上默認使用InnoDB 兩個引擎區別: 1. Innodb 支持事務,支持行鎖 2. MyISAM 不支持事務,支持表鎖
增長視圖:服務器
create view 視圖 as SQL 語句;運維
刪除:dorp view v1;函數
觸發器:兩張表: 訂單表 庫存表 場景: 當我下一個訂單的時候, 訂單表中須要增長一個記錄, 同時庫存表中須要減1 這兩個操做是同時發生的, 而且前一個操做出發後一個操做使用方法:code
增長:delimiter// ...........delimiter;索引
查看:show triggers\G事務
刪除:drop trigger 觸發器名;
存儲過程:
建立: delimiter // create procedure p1() BEGIN select * from user where id=2; END // delimiter ;
函數:
CHAR_LENGTH(str) 返回值爲字符串str 的長度,長度的單位爲字符。一個多字節字符算做一個單字符。 對於一個包含五個二字節字符集, LENGTH()返回值爲 10, 而CHAR_LENGTH()的返回值爲5。 CONCAT(str1,str2,...) 字符串拼接 若有任何一個參數爲NULL ,則返回值爲 NULL。 FORMAT(X,D) 將數字X 的格式寫爲'#,###,###.##',以四捨五入的方式保留小數點後 D 位, 並將結果以字符串的形式返回。若 D 爲 0, 則返回結果不帶有小數點,或不含小數部分。 例如 SELECT FORMAT(12332.1,4); 結果爲: '12,332.1000' INSTR(str,substr) 返回字符串 str 中子字符串的第一個出現位置。 LEFT(str,len) 返回字符串str 從開始的len位置的子序列字符。 LOWER(str) 變小寫 UPPER(str) 變大寫 LTRIM(str) 返回字符串 str ,其引導空格字符被刪除。 RTRIM(str) 返回字符串 str ,結尾空格字符被刪去。 SUBSTRING(str,pos,len) 獲取字符串子序列 LOCATE(substr,str,pos) 獲取子序列索引位置 REPEAT(str,count) 返回一個由重複的字符串str 組成的字符串,字符串str的數目等於count 。 若 count <= 0,則返回一個空字符串。 若str 或 count 爲 NULL,則返回 NULL 。 REPLACE(str,from_str,to_str) 返回字符串str 以及全部被字符串to_str替代的字符串from_str 。 REVERSE(str) 返回字符串 str ,順序和字符順序相反。 RIGHT(str,len) 從字符串str 開始,返回從後邊開始len個字符組成的子序列
(運維方向)
數據庫的備份 爲啥要備份? 將重要的數據保存下來 用法: #語法: # mysqldump -h 服務器 -u用戶名 -p密碼 數據庫名 表名, 表名,.... > aaa.sql #示例: #單庫備份 mysqldump -uroot -p123 db1 > db1.sql mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql #多庫備份 mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql #備份全部庫 mysqldump -uroot -p123 --all-databases > all.sql 從新導入: mysql> source D:/test3.sql;