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.mzph.cn/news/815011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻量化模块整理,即插即用

轻量化模块整理,即插即用(持续更新) 整理一些轻量化的结构,作为知识储备,可以用到后续的项目和研究中 Mobilenetv3 深度可分离卷积 MobileNetV3 是一个轻量级的深度学习模型,专为移动和边缘设备上的高效…

力扣HOT100 - 56. 合并区间

解题思路: class Solution {public int[][] merge(int[][] intervals) {// 先按照区间起始位置排序Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);int[][] res new int[intervals.length][2];int idx -1;for (int[] interval : intervals) {//直接加入的…

CSS基础之伪类选择器(如果想知道CSS的伪类选择器知识点,那么只看这一篇就足够了!)

前言:学习CSS就必须要学习选择器,在之前我们已经学习了基本选择器和复合选择器,但是还有几个选择器没有学习,这篇文章主要讲解伪类选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-…

基于springboot实现视频网站管理系统【项目源码+论文说明】计算机毕业设计

基于springboot实现视频网站管理系统演示 摘要 使用旧方法对视频信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在视频信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问…

顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-回铃音补偿

文章目录 前言联系我们解决问题操作步骤 前言 回铃音: 当别人打电话给你时,你的电话响铃了,而他听到的声音叫做回铃音。回铃音是被叫方向主叫方传送,也是彩铃功能的基础。我们平时打电话听到的“嘟 嘟 嘟 嘟”的声音,就…

asp.net core 网页接入微信扫码登录

创建微信开放平台账号&#xff0c;然后创建网页应用 获取appid和appsecret 前端使用的vue&#xff0c;安装插件vue-wxlogin 调用代码 <wxlogin :appid"appId" :scope"scope" :redirect_uri"redirect_uri"></wxlogin> <scri…

机器学习和深度学习 --李宏毅(笔记与个人理解)Day 18

Day 18 Spatial Transformer Layer 因为单纯的cNN无法做到scaling&#xff08;放大&#xff09;and rotation&#xff08;转&#xff09;&#xff0c;所以我们引入&#xff1b; 实战中也许我们可以做到 是因为 我们的training data 中包含了对data 的augmentation&#xff1b; …

解锁智能未来:用Ollama开启你的本地AI之旅

Ollama是一个用于在本地运行大型语言模型&#xff08;LLM&#xff09;的开源框架。它旨在简化在Docker容器中部署LLM的过程&#xff0c;使得管理和运行这些模型变得更加容易。Ollama提供了类似OpenAI的API接口和聊天界面&#xff0c;可以非常方便地部署最新版本的GPT模型并通过…

企业邮箱价格调查:找到适合你的最佳选择

企业邮箱价格从免费到几百元的都有&#xff0c;价格不同获得的功能和服务也不同&#xff0c;按需购买。企业邮箱多少钱一年&#xff1f;企业邮箱价格。Zoho Mail企业邮箱轻量版300元/5用户/年&#xff0c;高级版200元/用户/年&#xff0c;套件版150元/用户/元。具体的价格取决于…

《HF经理》:一、管理误区

1、不善授权: 原因&#xff1a;不信任下属&#xff0c;惯性思维&#xff08;任务一来自己冲到最前面&#xff09; 对策&#xff1a;从个人成功到带领团队成功。培养并信任下属。 2、不主动寻求上级支持: 原因&#xff1a;上级不仅仅是你的监督和考核者&#xff0c;还是你的支…

计算机网络 Cisco静态路由实验

一、实验要求与内容 1、路由器的基本配置 &#xff08;1&#xff09;命名 &#xff08;2&#xff09;关闭域名解析 &#xff08;3&#xff09;设置路由接口IP地址 2、配置静态路由以实现所有客户机都能互相通信 3、配置默认路由 4、了解ping命令和trace&#xff08;跟踪…

基于SpringBoot的“外卖点餐系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“外卖点餐系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能图 用户功能界面 订单管理界面 配送单管…

设计模式——迭代器模式15

迭代器模式提供一种方法访问一个容器对象中各个元素&#xff0c;而又不需暴露该对象的内部细节。 设计模式&#xff0c;一定要敲代码理解 抽象迭代器 /*** 迭代抽象* */ public interface Iterator<A> {A next();boolean hasNext(); }迭代器实现 /*** author ggbond*…

极市平台 | 卫星图像公开数据集资源汇总

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;卫星图像公开数据集资源汇总 本文收集整理了卫星图像的开源数据集&#xff0c;多用于图像分割方向&#xff0c;希望能给大家的学习带来帮助。 1 水体卫…

DHCP是什么意思 路由器中DHCP服务器怎么设置?

概述 DHCP是什么意思&#xff1f;很多朋友在路由器设置中&#xff0c;都会看到有一项“DHCP服务器”设置功能&#xff0c;而很多朋友对这个功能不太了解&#xff0c;也不知道怎么设置。其实&#xff0c;对于普通用户来说&#xff0c;无需去单独设置路由器DHCP服务器功能&#…

CMake快速入门

文章目录 目的环境准备快速入门总结 目的 C/C的代码可以直接使用编译工具链进行编译&#xff0c;这种方式文件一多就不方便了。也可以编写 Makefile 然后使用 make 进行编译&#xff0c;当然写 Makefile 其实也挺繁琐。对于大型项目比较流行的是编写 CMakeLists.txt 然后使用 …

SpringBoot中注册Bean的方式汇总

文章目录 ComponentScan Componet相关注解BeanImportspring.factories总结Configuration和Component的主要区别&#xff1f;Bean是不是必须和Configuration一起使用&#xff1f;Import导入配置类有意义&#xff1f;出现异常&#xff1a;java.lang.NoClassDefFoundError: Could…

大语言模型总结整理(不定期更新)

《【快捷部署】016_Ollama&#xff08;CPU only版&#xff09;》 介绍了如何一键快捷部署Ollama&#xff0c;今天就来看一下受欢迎的模型。 模型简介gemmaGemma是由谷歌及其DeepMind团队开发的一个新的开放模型。参数&#xff1a;2B&#xff08;1.6GB&#xff09;、7B&#xff…

文心一言 VS 讯飞星火 VS chatgpt (236)-- 算法导论17.3 2题

二、使用势能法重做练习17.1-3。练习17.1-3的内容是&#xff1a;假定我们对一个数据结构执行一个由 n 个操作组成的操作序列&#xff0c;当 i 严格为 2 的幂时第 i 个操作的代价为 i &#xff0c;否则代价为1。使用聚合分析确定每个操作的摊还代价。如果要写代码&#xff0c;请…

JAVA实现人工智能,采用框架SpringAI

Spring AI介绍 Spring AI是AI工程师的一个应用框架&#xff0c;它提供了一个友好的API和开发AI应用的抽象&#xff0c;旨在简化AI应用的开发工序&#xff0c;例如开发一款基于ChatGPT的对话应用程序。 项目地址&#xff1a;https://github.com/spring-projects-experimental/sp…