概念: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;