SQL基础语句九

SQL基础语句

来源尚硅谷的SQL基础语句
TCL
Transaction CONTROL language 事务控制语言
事物
一个或一组sql 语句组成一个执行单元,这个执行单元要么全部执行 要么全部不执行
事物:
事物由单独单元的一个或多个SQL语句组成,在这个单元中,每个MYSQL 语句是相互依赖的 而整个单独单元作为一个不可分割的整体,如果单元中某条SQL语句执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将会回到事物开始以前的状态;如果单元中的所有SQL 语句执行成功,则事物被顺利执行。
通过show engines
最多的是INNODB MYISAM MEMORY 其中INNDOB事物支持
事物的ACID 属性

  1. 原子性
    原子性是指事物是一个不可分割的工作单位,事物中的操作要么都发生,要么都不发发生
  2. 一致性
    事物必须使数据库从一个一致性状态变换到另外一个一致性状态
  3. 隔离性
    事物的隔离性是指一个事物的执行不能被其他事物干扰,即一个事物内部的操作及使用的数据对并发的其他事物是隔离的,并发执行的各个事物之间不能互相干扰
  4. 持久性
    持久性是指一个事物一旦被提交,它对数据库中的数据的改变是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响
    事物的创建
    隐士事物:事物没有明显开启和结束标记
    比如insert update delete语句
    显示事物 事物具有明显的开启和结束的标记
    前提:必须先设置自动提交功能为禁用

Set autocommit=0;
开启事物
SET autocommit=0;
START TRANSACTION
编写一组事物的语句
UPDATE account SET balance =150 WHERE username=’111’;
UPDATE account SET balance=1500 WHERE username=’222’;
结束事物
COMMIT;
对于同时运行的多个事物,当这些事物访问数据库中相同的数据时,如果没有采取必要的隔离机制 就会导致各种并发问题
脏读:对于两个事物T1 T2 T1读取了已经被T2更新但还没有被提交的字段之后 弱T2回滚,T1读取的内容就是临时且无效的。
不可重复度:对于两个事物T1 T2 T1读取了一个字段,然后T2更新了该字段字后T1再次读取同一个字段 值就不同了。
幻读:对于两个事物T1 T2 T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行,之后 如果T1再次读取了同一个表 就会多出几行
数据库事物的隔离性 数据库系统必须具有隔离并发运行各个事物的能力 使他们不会相互影响 避免各种并发问题。
一个事物与其他事物隔离的程度成为隔离级别 数据库规定了多种事物隔离级别 不同隔离级别对应不同的干扰程度,隔开级别越高 数据一致性就越好,但并发性越弱。
ORACLE 支持 两种事物隔离级别 READ COMMITED ,SWRIALIZABLE 默认为READ COMMITED
MYSQL 支持4种事物隔离级别 MYSQL 默认为REPEATABLE READ
READ UNICOMMITED. READ COMMITED .REPEATABLE READ. SERIALIZABLE
读未提交数据 读已提交数据 可重复读 串行化
视图
含义 :虚拟表 和普通表一样使用
视图:MYSQL5.0.1版本开始提供视图功能。一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了sql逻辑,不保存查询结果。
案例:查询姓张的学生名和专业名
CREATE VIEW V1
AS
SELECT studentname ,majorname
FROM stuinfo s
INNER JOIN major m ON s.majorid=m.id;

SELECT*FROM V1 WHERE stuname LIKE’张%’;
一. 创建视图
CREATE VIEW 视图名
AS
查询语句;

  1. 查询邮箱中包含a字符的员工名 部门名和工种信息
    CREATE VIEW myv1
    AS
    SELECT last_name,department_name,job_title
    FROM employees e
    JOIN departments d ON e.department_id=d.department_id
    JOIN jobs j Onj.job_id =e,job_id;

SELECT *FROM myv1 WHERE last_name LIKE ’%a%’;
二.视图的修改
CREATE OR replace view 视图名
AS
查询语句
或者
ALTER VIEW 视图名
AS
查询语句 :
三.删除视图
语法:
Drop view 视图名;
四 查看视图
SHOW CREATE VIEW 视图名
练习:1.创建视图emp_v1 要求查询电话号码以011开头的员工姓名和工资 邮箱
CREATE OR REPLACE VIEW emp_v1
AS
SELECT last_name,salary,email
FROM employees
WHERE phone_number LIKE ‘011%’;
2. 创建视图emp_v2 要求查询部门的最高工资高于12000的部门信息
CREATE OR REPLACE VIEW emp_v2
AS
SELECT MAX(salary) mx_dep,department_id
FROM employees
GROUP BY department_id
HAVING MAX(salary)>12000;

SELECT d.*,m.mx_dep
FROM departments d
JOIN emp_v2 m
ON m.department_id=d.department_id;
五.视图的更新
包含以下关键字的SQL语句 分组函数 distinct group by having union union all
不允许更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值