Mysql高阶语句(2)

news2024/11/24 16:12:07

Mysql视图:优化操作与安全方案

概述:

视图(View)是数据库中的一种虚拟表,虽然不包含实际数据,但可以映射真实数据,像是数据库表的镜花水月或倒影。视图会动态地保存结果集的数据,使得操作更加灵活。视图可以简化复杂查询,并且为不同用户提供不同的查询结果集,增加了数据库的安全性。

作用场景:

  • 针对不同的用户或权限身份,展示不同的数据结果集。视图在不同的查询中可以映射为一张或多张基础表,从而提供更灵活的数据展示。

功能:

  • 简化查询: 通过视图,复杂的查询可以变得简单。
  • 灵活查询: 可以创建多种视图,满足不同用户的需求。
  • 提高安全性: 视图可隐藏基础表的部分数据结构,避免暴露表的细节。
  • 适用范围: 视图适用于多表连接浏览,主要用于查询操作,而不适合频繁的增、删、改操作。

视图与表的区别:

  1. 视图是已编译的SQL语句,而表则不是。
  2. 视图没有物理记录,而表有物理记录。
  3. 视图不占用物理空间,表则占用。
  4. 视图只展示基础表的数据,不能直接对视图进行增、删、改操作,除非通过SQL语句更新。
  5. 视图属于虚表,而表属于实表。
  6. 视图的建立和删除只影响视图本身,不会影响对应的基础表,但更新视图中的数据会影响基础表。

视图与表的联系:

  • 视图是在基础表之上建立的虚拟表,它的结构和内容来自基础表。视图是基础表的抽象存在,可以定义为单表或多表的查询结果。

视图操作示例

单表视图创建:

  • 创建一个视图,展示分数大于或等于80分的学生:
CREATE VIEW v_score AS 
SELECT * FROM info 
WHERE score >= 80;
  • 视图数据展示:
SELECT * FROM v_score;

多表视图创建:

  • 创建两个表infotest01,并通过它们创建一个多表视图:
CREATE VIEW v_info(id, name, score, age) AS 
SELECT info.id, info.name, info.score, test01.age 
FROM info, test01 
WHERE info.name = test01.name;
  • 视图数据展示:
SELECT * FROM v_info;

视图的更新与影响:

  • 可以通过视图来更新基础表的数据,但不能修改通过函数计算得来的字段。

  • 例如,更新视图v_score中的数据,同时影响info基础表:

UPDATE v_score SET score = '120' WHERE name = 'tianqi';

Mysql中的NULL值

NULL值的概念:

定义:NULL表示数据缺失,与数字0或空白字符不同。NULL值是没有实际值的。可使用 IS NULLIS NOT NULL 来判断字段是否为NULL

NULL值与空值的区别:

  • 空值:长度为0,不占用空间。
  • NULL值:表示未知,实际占用空间

NULL值的使用示例:

1、添加新列:

ALTER TABLE info ADD COLUMN addr VARCHAR(50);

2、更新数据:

UPDATE info SET addr = 'nj' WHERE score >= 70;

3、统计数量:验证NULL值是否被计算在内。

SELECT COUNT(addr) FROM info;

4、查询NULL值

SELECT * FROM info WHERE addr IS NULL;

5、查询非NULL值

SELECT * FROM info WHERE addr IS NOT NULL;

连接查询

MySQL 的连接查询,通常都是将来自两个或多个表的记录行结合起来,基于这些表之间的 共同字段,进行数据的拼接。首先,要确定一个主表作为结果集,然后将其他表的行有选择 性的连接到选定的主表结果集上。使用较多的连接查询包括:内连接、左连接和右连接

模板:
create table test1 (
a_id int(11) default null,
a_name varchar(32) default null,
a_level int(11) default null);

create table test2 (
b_id int(11) default null,
b_name varchar(32) default null,
b_level int(11) default null);

insert into test1 values (1,'aaaa',10);
insert into test1 values (2,'bbbb',20);
insert into test1 values (3,'cccc',30);
insert into test1 values (4,'dddd',40);

insert into test2 values (2,'bbbb',20);
insert into test2 values (3,'cccc',30);
insert into test2 values (5,'eeee',50);
insert into test2 values (6,'ffff',60);

总结

  • 查询方便:视图提供了索引速度快和多表查询更为迅速的优点。
  • 安全性:通过视图隐藏数据表的复杂性,增强了数据的安全性,特别是在权限管理中应用广泛。

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

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

相关文章

springboot邮件发送的方式?如何配置服务?

Springboot邮件发送的优化策略?Springboot发信技巧? Spring Boot作为一个流行的Java框架,提供了简单而强大的方式来实现邮件发送功能。AokSend将详细介绍Spring Boot邮件发送的方式,帮助开发者快速掌握这一技能。 SpringBoot邮件…

跟我一起学Python编程(五),变量的定义和使用

今天给大家介绍一下Python变量的定义和使用,我们要使用编程语言去做一件事情,一定要使用到变量。 什么是变量? 在Python中,变量可以用来存储各种类型的数据,如数字,文本(称为字符串&#xff09…

云计算之大数据(上)

目录 一、Elasticsearch 1.1 产品组件 1.1.1 X-Pack 1.1.2 Beats数据采集中心 1.1.3 Logstash 1.1.4 Kibana 1.2 架构特性 1.2.1 性能 1.2.2 安全性 1.2.3 可用性 1.2.4 可扩展性 1.2.5 可维护性 1.2.6 国际化 1.3 综合检索分析 1.4 全观测 1.5 大数据检索加速…

遗传算法与深度学习实战(5)——遗传算法中常用遗传算子

遗传算法与深度学习实战(5)——遗传算法中常用遗传算子 0. 前言1. 常用选择算子1.1 轮盘选择 (roulette wheel selection)1.2 随机遍历抽样 (Stochastic universal sampling, SUS)1.3 排序选择 (rank-based selection)1.4 适应度缩放选择(Fit…

无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了

智慧工业视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上…

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络 谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网…

软件测试学习笔记丨接口测试用例设计

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32078 一、简介 接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计,也需要用到黑盒测试用例的设计方…

​数据链路层——流量控制可靠传输机制 ​

https://www.cnblogs.com/nekodream/p/18048072 数据链路层的流量控制 较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。 数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。 数据链路层流量控制…

UEFI——Variable的使用

一、Variable简介 Variable Services是Runtime Services的一部分,提供关于variable的一些服务,Variable被定义为键值对,由标识信息加上属性(键)和任意数据(值)组成。用在固件部内部和固件与操作…

JAVA工具----自动化API文档APIFOX

前言:想必大家在后端开发的过程过,最烦的就是写接口文档了。然而如果是对接前写,就更加烦躁,可能之前写好的接口文档全都要改,还会占用大量的时间,一般的小团队也耗不起这样的费时。那么使用Swagger和侵入式…

如何查询小红书、抖音等多平台品牌声量数据?

现在很多企业都需要掌握小红书、抖音、公众号、微博等各个社媒平台上,企业品牌声量趋势情况,行业内容占有率如何,搜索指数高低等等,借此来判断企业的品牌影响力、行业地位以及最近的活动/事件等营销效果。那么跨平台查询是比较麻烦…

一篇清楚的明白什么是场外个股期权?

今天带你了解一篇清楚的明白什么是场外个股期权?场外个股期权是一种非标准化的期权合约,在金融机构和投资者之间定制进行。它具有更大的灵活性,但也伴随着较高的信用风险和复杂性。适用于对冲风险、增强收益和设计结构性产品等多种策略。 场…

提取音频转mp3的工具哪个好?这六个新手必备

各位音乐爱好者们!是不是有时候你会听到一首歌,觉得它的中间伴奏简直太棒了,想要把它单独提取出来,却发现无从下手呢? 别担心,现在有了提取音频在线工具,这些难题都能迎刃而解。下面&#xff0…

Jmeter_循环获取请求接口的字段,并写入文件

通过JSON提取器、计数器、beanshell,循环读取邮箱接口的返回字段,筛选出flag为3的收件人,并写入csv文件。 1、调用接口,获取所有的邮件$.data.total.count; 2、beanshell后置处理total转换成页码,这里是227…

STM32 HAL freertos零基础(二)-通过STM32CubeMX配置Freertos后在程序中进行任务创建,便于任务管理与识别。

1、简介 通过STM32CubeMX配置Freertos后,建立的任务都在freertos.c文件中,不易于观察,并且每次生成新任务还需要打开STM32CubeMX,本次教程讲解一种通过STM32CubeMX配置Freertos后在程序中进行任务创建,起到类似添加传…

官宣:28家重点实验室,获5750万元资金支持!

【欧亚科睿学术】 点击关注:关注GZH【欧亚科睿学术】,第一时间了解科研最新动态! 根据省级财政专项资金管理办法有关规定,拟安排2024年省重点实验室28项,拟安排省财政资金5750万元。现予以公示: 本文来源…

企业如何治理“两高一弱”?

攻防演练已经落幕,“两高一弱”专项整治依旧如火如荼。针对高危端口、高危漏洞和弱口令这三大网络环境中最常见的关键安全挑战,公安机关及各行业主管部门高度重视,要求各级组织及时发现并消除网络和信息系统“两高一弱”问题,实现…

照片删除了怎么恢复回来?要学会这些数据恢复方法

在数字化时代,照片已经成为我们记录生活、珍藏回忆的重要载体。然而,有时由于误操作或其他原因,我们可能会不小心删除了重要的照片。面对这种情况,很多人会感到焦虑和无助。幸运的是,有多种方法可以帮助我们恢复删除的…

一次性了解Neo4j图形数据库

Neo4j高性能的NoSQL图形数据库 它将结构化数据存储在网络(从数学角度叫做图)上而不是传统的表格中。 Neo4j是一个嵌入式的、基于磁盘的、具备完全事务特性的Java持久化引擎。 但它在数据表示上采用了图形模型,即数据以节点(Nod…

Facebook与区块链的结合:推动社交平台的去中心化

随着区块链技术的崛起,全球各大科技公司纷纷探索其应用潜力。Facebook作为全球领先的社交媒体平台,也在区块链领域中迈出了关键一步,试图通过去中心化技术来提升用户体验并应对传统社交平台所面临的挑战。本文将探讨Facebook与区块链结合的潜…