Mysql视图与事物与字符集实验

一 视图

1.视图的定义

 视图是一个虚拟表,其内容由查询定义。

2.视图的优点

1)视点集中

2)简化操作

3)定制数据

4)分隔合并数据

5)安全性好

3.语法格式及限定条件

1)语法格式:create view 视图名 as select 语句;

2)限定条件:

 像表一样,视图命名必须唯一

 创建视图没有数量限制

 创建视图必须有安全访问权限(由数据库管理员授予)

 视图可以嵌套,即可以建立一个视图,该视图可以使用基于其他视图返回数据的查询

 视图不可以建立索引,触发器

4.视图的应用

1)使用视图简化连接

 create view jhlj as select c.cust_id,c.cust_name,c.cust_contact,oi.prod_id from customers as

c,orders as o,orderitems as oi where c.cust_id=o.cust_id and o.order_num=oi.order_num;

查看订购了 TNT2 客户信息

 select * from jhlj where prod_id='TNT2';

2)使用视图重新格式化检索数据

 create view gsh as select concat(trim(vend_name),'(',trim(vend_country),')') as vend_title from vendors;

3)使用视图过滤不需要的数据

 create view glsj as select cust_id,cust_email from customers where cust_email is not null;

4)使用视图创建计算字段

 create view jszd as select order_num,prod_id,quantity,item_price,quantity*item_price as price_count from orderitems;

5.更新视图

1)可以对视图使用 insert、update、delete 语句用以更新视图中的数据。但是更新视图中的数据,数据来源的底层表中的数据也会被更改。

 create view order_test as select * from orders;

 delete from order_test where order_num=20009;

 select * from order_test;

 select * from orders;

2)不是所有的视图都可以更新

 分组(使用 group by 和 having ) 连接 子查询 联合 聚合函数 distinct 计算列

6.删除视图

 drop view 视图名;

注:删除视图不会删除视图中数据来源的基本表

二 事务

1.相关概念

1)事务(transaction):一组 SQL 语句

2)回滚(rollback):撤销指定 SQL 语句的处理过程

3)提交(Commit):将还未保存的数据库语句写入数据库表

4)保存点 (Savepoint):事务集中的一个临时占位符,可进行回滚(与撤销整个事务不同)

2.事务的特性(ACID)

A.原子性:要么全部执行,要么全不执行

C.一致性:事务的相关操作,需要保持数据的一致

I.隔离性:事务与事务间互相隔离

D.持久性:事务一旦提交,数据立即生效

3.使用事务处理

1)创建测试用表

 create table nmx ( n_id int not null auto_increment, n_name char(20)paimary key (n_id) )engine=InnoDB;

 insert into nmx values()

2)开启事务

 start transaction;

delete from nmx;

select * from nmx;

 退出数据库,重新登录后

select * from nmx;

 发现表中数据未被删除

3)使用 rollback 回滚

start transaction;

 delete from nmx;

 select * from nmx;

 rollback;

 select * from nmx;

注:rollback 只可以在一个事务中使用(在一个 START TRANSACTION 命令被声明之后)。事务处理是用来管理 insert,update 和 delete 语句的,不能对 select 语句回(无任何意义)。不能对 create 或 drop 操作回滚。并不是所有的数据库引擎都支持事务管理,show engines 可以查看哪些数据库引擎支持事务

4)使用 commit 操作

 start transaction;

delete from nmx where n_id=‘1’;

  commit;

 退出数据库,重新登录后

select * from nmx;

 发现表中数据已被删除

注:在一个 commit 和 rollback 语句执行之后,事务自动关闭(将来更改会隐式提交)。隐式提交和显式提交:DBMS 自动帮你执行 commit 操作被称为隐式提交手动输入 commit 命令完成提交动作被称为显式提交

5)使用保存点

 start transaction;

 delete from nmx where n_id=3;

 savepoint s1;

 delete from nmx;

 select * from nmx;

 rollback to s1;

 select * from nmx;

注:如果回滚至某保存点创建之前的状态,则该保存点不再生效

保存点必须在事务模式下使用(在 start transaction 后使用)

每个保存点都需要由唯一的名字来标识

保存点越多,对回滚的管理就越灵活。

保存点在一个事务处理完成后自动释放(即执行一个 rollback 或者 commit 之后),也可以使用 release savepoint 显式释放保存点。

 start transaction;

 delete from nmx where n_id=3;

 savepoint s1;

 delete from nmx;

 select * from nmx;

 release savepoint s1;

 rollback to s1;

 这时会提示:SAVEPOINT s1 does not exist

此时可以直接回滚来恢复原来数据

6)修改默认提交

 关闭自动提交:set autocommit=0

 开启自动提交:set autocommit=1

三 全球化和本地化

1.基本概念

1)字符集(Character set):单词和符号的集合。

2)编码(Encoding):字符集成员的内部表示。

3)排序规则(Collation):规定字符如何比较的指令。

注:不同的排序规则不仅影响排序(使用 ORDER BY 对数据排序),也会影响搜索(如 where语句在查找 CAR 时是否能找到 car);在 MariaDB 中,执行常规的的数据库活动(select 、insert等)没有太多担心的必要。需要担心的是在服务器、数据库、表的层级上决定使用哪种字符集和排序规则。

2.使用字符集和排序规则

1)查看 MariaDB 支持的字符集和排序规则

 查看支持的字符集: show character set;

 查看排序规则: show collation;

2)查看当前 DBMS 正在使用的字符集和排序规则

 查看正在使用的字符集:show variables like 'character%';

 查看正在使用的排序规则:show variables like 'collation%';

注:在创建表时,可以同时指定该表使用的字符集和排序规则。

    如果仅指定了字符集,没有指定排序规则,那么将会使用该字符集的默认排序规则。

    如果字符集和排序规则都没有指定,则会使用数据库默认字符集和排序规则。

3)创建表时指定默认字符集,指定某字段使用的字符集

 create table mx ( h_id int not null, h_name char(20) character set utf8 ) default character set latin1;

4)指定排序规则检索数据

 select * from orderitems order by prod_id collate latin1_general_cs;

注:指定的排序规则必须是该表使用的字符集中的排序规则之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/536617.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于java+springboot+vue实现的兴顺物流管理系统(文末源码+Lw)23-287

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,货运信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…

【域适应】深度域适应常用的距离度量函数实现

关于 深度域适应中,有一类方法是实现目标域和源域的特征对齐,特征对齐的衡量函数主要包括MMD,MK-MMD,A-distance,CORAL loss, Wasserstein distance等等。本文总结了常用的特征变换对齐的函数定义。 工具 …

Vue3学习04 组件通信

Vue3学习04 组件通信 组件通信props 父 ↔ 子自定义事件 子 > 父mitt 任意组件间通信v-model 父↔子$attrs 祖↔孙$refs、$parent案例的完整代码ref注意点 provide、inject 祖↔孙piniaslot① 默认插槽② 具名插槽③ 作用域插槽 组件通信 Vue3组件通信和Vue2的区别&#xf…

LangChain的RAG实践

1. 什么是RAG RAG的概念最先在2020年由Facebook的研究人员在论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出来。在这篇论文中他们提出了两种记忆类型: 基于预训练模型(当时LLM的概念不像现在这么如日中天&#xff0…

CV每日论文--2024.4.11

1、InternLM-XComposer2-4KHD: A Pioneering Large Vision-Language Model Handling Resolutions from 336 Pixels to 4K HD 中文标题:InternLM-XComposer2-4KHD:开创性的大型视觉语言模型,可处理从 336 像素到 4K 高清的分辨率 简介&#x…

OJ 变长编码 【C】

又是跌跌撞撞完成的一道题,我对于位运算和进制转化这块知识点太欠缺了,写了这么久c的题目也没用过几次 知识点 1.取出低七位bit 使用&位运算符 与0x7F可以取出当前数的二进制最低七位,这里即使是整数参与运算,也会自动被转换…

社交革命的引领者:探索Facebook的创新策略

1. 引言:社交媒体的崛起 社交媒体的兴起标志着信息时代的到来,它不仅改变了人们的生活方式,也影响着整个社会结构。作为社交媒体的先驱者,Facebook以其创新的策略和领先的技术,成为了这场社交革命的引领者。从2004年马…

Shenandoah GC算法

概述 最早由Red Hat公司发起,目标是利用现代多核CPU的优势,减少大堆内存在GC时产生的停顿时间。随OpenJDK 12一起发布,暂停时间不依赖于堆的大小;这意味着无论堆的大小如何,暂停时间都是差不多的。 Shenandoah最初的…

[C++][算法基础]图中点的层次(树图BFS)

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。 所有边的长度都是 1,点的编号为 1∼n。 请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。 输入格式 第一行包含两个整数 n 和 m。 接…

【MCU开发规范】:MCU的性能测试

MCU的性能测试 前序性能评判方法MIPSCoreMark EEMBC其他参考 前序 我们平时做MCU开发时,前期硬件选型(选那颗MCU)基本由硬件工程师和架构决定,到软件开发时只是被动的开发一些具体功能,因此很少参与MCU的选型。 大部分…

Ant Desgin Vue Tree Tab 个性化需求

背景 个人对前端不是很熟,或者说过目就忘,但是对前端还要求不少,这就难搞了。 使用的前端是Mudblazor和ant design vue, Mudblazor 还没有开始搞,现在先用ant design vue,版本是vue3, ant design vue 4版…

4.11学习总结

一.IO流 一.java中IO的初步了解 (一).概念: Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据…

Excel·VBA二维数组S形排列

与之前的文章《ExcelVBA螺旋数组函数》将一维数组转为二维螺旋数组 本文将数组转为S形排列的二维数组,类似考场座位S形顺序 Function S形排列(ByVal arr, ByVal num_rows&, ByVal num_cols&, Optional ByVal mode$ "row")将数组arr转为num_rows…

必须掌握的这4种缓存模式

概述 在系统架构中,缓存可谓提供系统性能的简单方法之一,稍微有点开发经验的同学必然会与缓存打过交道,起码也实践过。 如果使用得当,缓存可以减少响应时间、减少数据库负载以及节省成本。但如果缓存使用不当,则可能…

有趣的css - 动态雷达扫描

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是使用 css 实现一个动态的雷达扫描,快学起来吧! 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码…

当然IP总流量卵化手14无线天线上实际操作夏令营【第9期】月入5w 上百万爆款打造 (74节)

在2023年,我依照导师的”项目销售”策略,成功地实现了超过100万的纯利润。在当前经济低迷的大环境下,许多大型企业纷纷裁员,这使得许多人面临着找不到满意工作的困境。与此同时,由于疫情引发的口罩需求,使得…

算法刷题Day31 | 455.分发饼干、376. 摆动序列、53. 最大子数组和

目录 0 引言1 分发饼干1.1 我的解题1.2 更好的解题 2 摆动序列2.1 我的解题2.2 我的错误原因(GPT分析)2.3 改进 3 最大子数组和3.1 我的解题 🙋‍♂️ 作者:海码007📜 专栏:算法专栏💥 标题&…

爬虫实战:我国城市的地铁数据以及分析

文章目录 1 引言2 项目背景3 技术栈和工具选择4 数据爬取4.1 爬虫设计4.2 代码实现4.3 数据保存4.4 关键点分析 5 数据处理与分析5.1 数据清洗5.2 数据分析5.3 关键点分析 6 完整代码以及结果展示7 小分享 1 引言 本文将指导你如何通过Python从高德地图爬取中国城市地铁站数据…

5G-A有何能耐?5G-A三载波聚合技术介绍

2024年被称作5G-A元年。5G-A作为5G下一阶段的演进技术,到底有何能耐呢? 三载波聚合(3CC)被认为是首个大规模商用的5G-A技术,将带来手机网速的大幅提升。 █ 什么是3CC 3CC,全称叫3 Component Carriers…

前端js基础知识(八股文大全)

一、js的数据类型 值类型(基本类型):数字(Number)、字符串(String)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol,大数值类型(BigInt) 引用数据类型:对象(Object)、数组…