https://www.cnblogs.com/xyxxs/p/4440187.html
事务:
作用:管理多个SQL语句执行,要么都成功,要么都失败。 —— 关系型数据库 专用!
组成:DML、DDL、DCL
特点:要么都成功,要么都失败。
使用流程:
1. 开启事务。start transaction 或 begin
2. 执行 SQL (insert、update、delete)
3. 。。。
4. 关闭事务。commit(提交:保存上述修改) rollback(撤销上述修改)。
关闭事务:
显示关闭:
显示提交:commit
显示回滚:rollback
隐式关闭:
隐式提交:一条DDL语句(如:create table)。 正常退出(exit、quit、\q)
隐式回滚:掉电、宕机、非正常退出。
Innodb 引擎,支持事务管理。 myisam 不支持。
保存点:(回滚点)
语法: 设置保存点: savepoint 保存点名
回滚至保存点:rollback to 保存点名 —— 不会关闭事务
使用流程:
1. begin 开启事务。
2. 执行 SQL语句(insert、update、delete)
3. 设置保存点
4. 。。。
N. rollback to 保存点名
N+1. 关闭事务。(commit、rollback)
事务的特性(ACID):【重点】
原子性、一致性、[ 隔离性 ]、持久性
视图:
依赖表创建,不是真实的表。不能存储表数据,数据依然存放在原始表中。
作用: 1. 筛选数据。
2. 对用户隐藏表结构
3. 降低SQL复杂度。
创建视图:
语法: create view 视图名 as select 查询语句(单表查询、多表查询、子查询。。。)。
create view vw_stu as select stuno, stuname, stusex, writtenexam, labexam from stuinfo natural join stumarks;
视图的使用:
与表的使用一致。(insert、update、delete、select)
查看视图:show tables; 不能使用 show views。
select table_name from information_schema.views;
show table status where comment = 'view'\G;
查看视图结构体: desc 视图名。
查看创建视图: show create view 视图名\G
删除: drop view [if exists] 视图名
索引:
优点: 查询速度快
缺点: insert、update、delete 效率低。
占用存储空间。
创建索引:
方法1: create index 索引名 on 表名(字段名)
方法2: alter table 表名 add index 索引名 (字段名)
创建表指定索引:
create table 表名 (字段名 字段类型,字段名 字段类型,..., index 索引名(字段名))
create table 表名 (字段名 字段类型,字段名 字段类型,..., key 索引名(字段名)) 也可以实现。
查看索引:
show create table 表名\G
删除索引:
drop index 索引名 on 表名
创建索引的原则:
1. 频繁搜索 —— 适合创建
2. 有排序需求 —— 适合创建
3. 有公共字段 —— 适合创建
4. 数据量较少,不需要创建索引。
5. 字段的取值范围较少(枚举、集合), 不需要创建。
xxx.go ——> go build xxx.go(编译) ——> xxx.exe
编译:1. 预处理 2. 编译 3. 汇编 4. 链接
编译:最慢: 词法分析、语法分析、简单逻辑分析。
预处理:
使用场景:一条SQL频繁多次执行。
使用流程:1. prepare 预处理名(stmt) from ' sql语句 '; ——> 预处理准备完毕。
2. execute 预处理名(stmt) [ using 变量 ]
变量的使用:
1. prepare 预处理名(stmt) from ' sql语句 带有 站位符(?) '; 可以有多个 ?
2. set @变量名 = 变量值, @变量名 = 变量值, 。。。
3. execute 预处理名(stmt) using @变量名,@变量名,。。。 —— 有多个占位符时, 按站位符?顺序,依次赋值。