【mysql】实训笔记

视图

即sql语句的封装,本身不保存数据,数据来自基础表或者其他视图

  1. 查看表结构:desc v(视图名字)
  2. 删除视图:drop view v(视图名字)

为什么使用视图?

  1. 限制其他用户对数据库表的访问,因为视图可以有选择性的显示数据表的一部分
  2. 容易实现复杂的查询
  3. 对于相同的数据可以产生不同的视图

事务特征ACID

  1. 原子性(Atomicity)

事务是不能分割的最小单位

  1. 一致性(Consistency)

事务完成之后数据保持一致

  1. 隔离性(solation)

事务之间互不影响【和隔离级别有关系】

  1. 持久性(Durabiity)

断电之后重启数据还是事务完成时候的状态

 

 

如何操作事务

方式一

begin\commit\rollback(回滚到开始状态)

方式二

Set @@autocommit=0/Commit/rollback

 

案例一

 

 

rollback事务回滚到begin位置,

案例二

-- 获取当前会话事务是否自动提交

Select @@autocomiit -- 0不自动提交 1自动提交

Set @@autocomiit=0 -- 此时为0

Insert into user values(3,1000) -- 此时不会提交事务

要手动写上commit;这句话,才插入成功

案例三(还原点案例)

 

事务隔离级别

会影响事务的隔离性 

Read uncommitted | read committed | repeatable read(默认) | serializable

------------------------------------------越往后隔离越高,性能越差-------------------->

脏读一个事务读取到另外一个事务为提交的数据(解决:提交隔离级别)

事务A、B,同时开启事务,事务B修改id为2(未提交),事务A查询后发现id为2,接下来B回滚,B中的id为1(期间A读取到了B之前未提交的事务[2])

不可重复读同一个事务多次读取发现数据不一样(解决:调整隔离级别->默认)

事务A、B同时开启事务,事务A查询id为1,事务B修改id为2事务提交,事务A查询id为2(A还未提交),即期间出现读取数据不一样现象

幻读:事务A和B,两个事务同时开启,假设当事务B修改主键id为2提交事务后,此时事务A未提交,读取的数据没变(如果变了则回到不可重复读),如果此时也修改id为2,数据库会报错说该id已经存在,但是此时A看不见(解决:隔离级别调最高)

2022.5.20

存储过程

事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应哟服务器之间的传输,对于提高数据处理的效率是有好处的

数据库SQL语言层面的代码封装和重用

 

变量分类

系统变量

用户变量

局部变量(*)

用户变量

用户定义的,使用时不用提前声明,用的时候直接用‘@变量名’即可,作用域为当前会话,使用=和:=进行赋值

局部变量用在存储过程中,使用的时候需要先定义

定义declare名称 类型[default xx];

设置:set 名称 = value;

    set 名称 := value;

select 字段 into 名称 from 表;

select 名称;

用户变量和局部变量的区别?

不用声明且多了@

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能帮到您,以下是一份 MySQL 实训报告的参考: # MySQL 实训报告 ## 实训目的 本次 MySQL 实训旨在让学员掌握 MySQL 数据库的基本使用方法,包括数据库的创建、表的创建、数据的增删改查等操作,并能够通过实际案例练习掌握如何使用 SQL 语句来完成数据查询、筛选、排序等操作。 ## 实训环境 - 操作系统:Windows 10 - 数据库软件:MySQL 8.0.25 - 编辑器:Navicat Premium 15.0.26 ## 实训内容 ### 1. 数据库的创建 首先,我们需要在 MySQL 中创建一个新的数据库。使用以下 SQL 语句即可创建一个名为 `test` 的数据库: ``` CREATE DATABASE test; ``` ### 2. 表的创建 接着,我们需要在 `test` 数据库中创建一张新的表。表的结构可以根据需求进行设计,以下是一个例子: ``` CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; ``` 上述 SQL 语句创建了一个名为 `users` 的表,包含了 `id`、`name`、`age` 和 `email` 四个字段。其中,`id` 字段为主键,并自动递增。 ### 3. 数据的增删改查 在表创建完成后,我们可以向表中添加数据、修改数据、删除数据,并进行数据查询等操作。 #### 3.1 数据的添加 使用以下 SQL 语句即可向 `users` 表中添加一条数据: ``` INSERT INTO `users` (`name`, `age`, `email`) VALUES ('张三', 18, 'zhangsan@example.com'); ``` #### 3.2 数据的修改 使用以下 SQL 语句即可修改 `users` 表中某条数据: ``` UPDATE `users` SET `email` = 'lisi@example.com' WHERE `id` = 1; ``` 上述 SQL 语句将 `id` 为 1 的数据的 `email` 字段修改为了 `lisi@example.com`。 #### 3.3 数据的删除 使用以下 SQL 语句即可删除 `users` 表中某条数据: ``` DELETE FROM `users` WHERE `id` = 1; ``` 上述 SQL 语句将 `id` 为 1 的数据从 `users` 表中删除。 #### 3.4 数据的查询 使用以下 SQL 语句即可查询 `users` 表中的所有数据: ``` SELECT * FROM `users`; ``` 上述 SQL 语句将返回 `users` 表中所有数据的信息。 ### 4. 实际案例 以下是一个实际案例,通过该案例可以练习使用 SQL 语句进行数据查询、筛选、排序等操作。 #### 4.1 案例描述 假设我们有一个 `students` 表,包含以下字段: - `id`:学生编号,自动递增; - `name`:学生姓名,字符串类型; - `gender`:学生性别,枚举类型(`male` 或 `female`); - `age`:学生年龄,整数类型; - `score`:学生成绩,浮点数类型。 现在我们需要从 `students` 表中查询出满足以下条件的学生信息: - 性别为男性; - 年龄在 18 到 25 岁之间; - 成绩在 80 分以上; - 按照成绩从高到低排序。 #### 4.2 案例实现 使用以下 SQL 语句即可实现上述案例: ``` SELECT * FROM `students` WHERE `gender` = 'male' AND `age` >= 18 AND `age` <= 25 AND `score` >= 80 ORDER BY `score` DESC; ``` 上述 SQL 语句将返回满足条件的学生信息,并按照成绩从高到低排序。 ## 实训总结 通过本次 MySQL 实训,我们学习了数据库的创建、表的创建、数据的增删改查等基本操作,并通过实际案例练习掌握了如何使用 SQL 语句进行数据查询、筛选、排序等操作。这些知识对于我们在后续的开发工作中都有非常重要的作用,希望大家能够认真学习并掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值