mysql数据库视图的介绍,mysql数据库视图的介绍和编辑
文章目录:
- 1.mysql视图
- 2. 在MySQL中使用和创建定义、原理和视图
- 3.如何在MySQL中创建视图?
- 4.如何在MySQL中创建数据库视图
- 5.什么是MySQL数据库视图?什么时候应该创建视图?我在网上查了一下,但似乎还是很模糊。
- 6、数据库(mysql)关键知识。
mysql视图
1。有什么看法?
查看:MySQL从5.0.1版本开始提供了查看功能。虚拟桌面。行和列数据来自自定义视图查询中使用的表。它是在使用视图时动态生成的。它只保存SQL逻辑,不保存查询结果。
2。查看应用场景
同一个查询结果在多个地方使用。查询结果使用的SQL语句比较复杂
4。视图的优点
简单、安全、独立于数据的使用
5. 创建或修改视图
创建视图语法:
修改视图语法
6. 视图可更新性
与定义视图相关在视图中查询。无法更新以下类型的视图。 1 6) where 子句中的子查询引用 from 子句中的表
7. 删除视图的语法
用户可以一次删除一个或多个视图,前提是他们拥有视图。
8.查看视图结构语法
显示表格;如果需要查询视图的定义,可以使用show create view命令查看
为了不影响其他数据库表,新建一个数据库表 t_worker_info,代码如下: Createtablet_worker_info(idint(8)primarykeynotnullauto_increment,w_idint(10)notnull,w_namevarchar(20)notnull,w_ageint(var) 10) , w_birthvarchar (20));创建t_worker_info后,查看数据结构,代码为:desct_worker_info;双击选中的数据库,右键Views“CreateView”,打开编辑器窗口,在窗口中输入代码,代码为:CREATEVIEW`view_worker_info`ASSELECT*FROMt_worker_info;查看创建视图的基本信息,使用desc或description语句,代码为:descview_worker_info;查看视图的信息,如存储引擎、数据长度等,如果以上指针为空,则说明该视图是虚表,代码如下:showtablestatuslike'view_worker_info';要查看有关已创建视图的详细信息,请使用视图名称 showcreateview。代码为:showcreateviewview_worker_info;
如何在MySQL中创建视图?
创建 [或替换] [算法 = {无效 |合并 | TEMPTABLE}]\x0d\x0a VIEW 视图名称 [(列列表)]\x0d\x0a AS select_statement\x0d\x0a [[已使用| LOCAL] CHECK OPTION] \x0d\x0a\x0d\x0a 该语句可以创建一个新视图,如果指定了 OR REPLACE 子句,该语句还可以替换现有视图。select_statement 是定义视图的 SELECT 语句。该语句可以从基表或其他视图中选择。 \x0d\x0a此语句需要对视图的 CREATE VIEW 权限以及对 SELECT 语句选择的列的某些权限。 SELECT 语句中其他位置使用的列需要 SELECT 权限。如果存在 OR REPLACE 子句,则您必须对该视图具有 DROP 权限。 \x0d\x0aView 属于数据库。默认情况下,会在当前数据库中创建一个新视图。如果您特别想要在特定数据库上创建视图,请在创建时指定 db_name.view_name。 \x0d\x0amysql CREATE VIEW test.v AS SELECT * FROM t;\x0d\x0a\x0d\x0a 数据库中表和视图共享相同的命名空间,因此数据库不能包含同名的表和视图。 \x0d\x0aViews 必须具有唯一的列名称,不能重复,就像基表一样。默认情况下,由 SELECT 语句检索的列名用作视图列名。要为视图列指定显式名称,请使用可选的column_list 子句,该子句列出以逗号分隔的标识符。列列表中的名称数必须等于 SELECT 语句检索的列数。 \x0d\x0a SELECT 语句检索的列可以是对表列的简单引用。这可以是函数、常量值、运算符等。也是一个用户术语。 \x0d\x0a SELECT 语句中不合格的表或视图将根据默认数据库进行解释。通过使用适当的数据库名称限定表或视图的名称,视图可以引用另一个数据库中的表或视图。 \x0d\x0aViews 可以使用许多 SELECT 语句创建。视图可以引用基表或其他视图。您可以使用联合、UNION 和子查询。 SELECT 甚至不需要引用任何表。以下示例定义一个视图,该视图从另一个表中选择两列,并指定根据这些列进行计算的表达式:\x0d\x0amysql CREATE TABLE t(quantity INT,price INT);\x0d\x0amysql INSERT INTO t VALUES (3, 50 );\x0d\x0amysql CREATE VIEW v AS SELECT 数量、价格、数量*价格 AS 值 FROM t;\x0d\x0amysql SELECT * FROM v;\x0d\x0a+------ -+ -- ---- -+------+\x0d\x0a|数量 |价格|值 |\x0d\x0a+-----+--------+---- ---+\x0d\x0a| 3 | 50 | 50 150 |\x0d\x0a+------+--------+--------+\x0d\x0a\x0d\x0a 以下限制适用于视图定义:\x0d\x0a · A SELECT 语句的 FROM 子句中不能包含子查询。 \x0d\x0a· SELECT 语句不能引用系统或用户变量。 \x0d\x0a· SELECT 语句不能引用准备好的语句参数。 \x0d\x0a· 在存储的子程序中,定义不能引用子程序参数或局部变量。 \x0d\x0a· 定义中引用的表或视图必须存在。但是,一旦创建了视图,就可以删除定义引用的表或视图。要检查视图定义是否存在此类问题,请使用 CHECK TABLE 语句。 \x0d\x0a· 定义中无法引用TEMPORARY 表,并且无法创建TEMPORARY 视图。 \x0d\x0a·视图定义中指定的表必须已经存在。 \x0d\x0a· 您不能将触发器与视图关联。 \x0d\x0aORDER BY 在视图定义中是允许的,但是,如果从使用带有自己的 ORDER BY 的语句的特定视图中选择,则会被忽略。 \x0d\x0a定义中的任何其他选项或子句都将添加到引用视图的语句的选项或子句中,但效果未定义。例如,如果在视图定义中包含 LIMIT 子句,并从使用带有自己的 LIMIT 子句的语句的给定视图中进行选择,则不会定义所使用的 LIMIT。同样的原则也适用于其他选项,例如 SELECT 关键字后面的 ALL、DISTINCT 或 SQL_SMALL_RESULT,以及其他子句,例如 INTO、FOR UPDATE、LOCK IN SHARE MODE 和 PROCEDURE。\x0d\x0a如果创建视图并通过更改系统变量来更改查询处理环境,则会影响视图的结果:\x0d\x0amysql CREATE VIEW v AS SELECT CHARSET(CHAR(65)), COLLATION(CHAR( 65 )); \x0d\x0aQuery OK,0 行受影响(0.00 秒)\x0d\x0a \x0d\x0amysql SET NAMES 'latin1';\x0d\x0aQuery OK,0 行受影响(0.00 秒)\x0d\x0 \ x0amysql SELECT * FROM v;\x0d\x0a+--------------------------------+-------------------------------- - - -+ \x0d\x0a|字符集(字符(65))|组成(CHAR(65)) |\x0d\x0a+--------------------+--- -------------- - - ---+\x0d\x0a|拉丁语1 | latin1_swedish_ci |\x0d\x0a+--------------------+--------------------+\ x0d \x0a1 行在集合中(0.00 秒)\x0d\x0a \x0d\x0amysql SET NAMES 'utf8';\ x0d\x0aQuery OK,0 行受影响(0.00 秒)\x0d\x0a \x0d\x0a \ SELECT x0d\x0amysql \ *来自mysql; x0d\x0a+--------------------+- --------------------+\x0d\x0a|字符集(字符(65))|组成(CHAR(65)) |\x0d\x0a+---- --------------+---------------- -- -+\x0d\x0a| UTF8 | utf8_general_ci |\x0d\ x0a+----------------+------------------------+\x0d\x0a1 row in pool (0.00 sec)\x0d\x0a\x0d\x0a可选的 ALGORITHM 子句是标准 SQL MySQL 的扩展。 ALGORITHM 可以采用三个值:MERGE、TEMPTABLE 或 UNDEFINED。如果没有 ALGORITHM 子句,则默认算法为 UNDEFINED。算法影响 MySQL 处理视图的方式。 \x0d\x0a 在 MERGE 的情况下,引用视图的指令文本与视图定义合并,以便视图定义的一部分替换指令的相应部分。使用\x0d\x0aTEMPTABLE,视图的结果被放置在临时表中,然后用于执行语句。 \x0d\x0a 对于 UNDEFINED,MySQL 选择要使用的算法。在可能的情况下,MERGE 优于 TEMPTABLE,因为 MERGE 通常更高效,并且使用临时表时无法更新视图。 \x0d\x0a选择TEMPTABLE的一个原因是可以在临时表创建之后、语句处理完成之前解锁基表。与MERGE算法相比,锁的释放速度更快,因此使用该视图的其他客户端不会阻塞它太久。 \x0d\x0a视图的算法可以通过三种方式定义: \x0d\x0a· CREATE VIEW 语句中没有ALGORITHM 子句。 \x0d\x0a· CREATE VIEW 语句中存在显式 ALGORITHM = UNDEFINED 子句。 \x0d\x0a· 对于只能使用临时表处理的视图指定 ALGORITHM = MERGE。在这种情况下,MySQL 会生成警报并将算法设置为 UNDEFINED。 \x0d\x0a 如前所述,MERGE 的处理方式是将视图定义的相应部分与引用视图的语句合并。在下面的例子中,我们简单介绍一下MERGE的操作。在此示例中,假设有 1 个 v_merge 视图,其定义如下: \x0d\x0aCREATE ALGORITHM = MERGE VIEW v_merge (vc1, vc2) AS\x0d\x0aSELECT c1, c2 FROM t WHERE c3 100;\x0d\x0a\ x0 x0a示例1:假设发出以下语句:\x0d\x0aSELECT * FROM v_merge;\x0d\x0a\x0d\x0aMySQL 处理该语句如下:\x0d\x0a· v_merge will be t\x0d\x0a· * will be vc1 , vc2 ,匹配 c1 , c2\x0d\x0a· 添加视图 2:假设发出以下语句:\x0d\x0aSELECT * FROM v_merge WHERE vc1 100) AND (c1
答案:11/16/2022。

MySQL数据库视图创建♺
在 SQL 中,视图是显示 SQL 语句结果集的表。
视图包含行和列,就像真正的表格一样。视图的字段是一个或多个数据库中真实表的字段。我们可以将 SQL 函数、WHERE 和 JOIN 语句添加到视图中并提交数据,就好像数据来自单个表一样。网上查了一下,还是很模糊
View 有两种使用方式,一是方便查询,例如下面的例子:
SQL CREATE VIEW
2 v_sale_report_sum
3 AS
3 AS
❀ 6 SUM (sale_money) AS sale_money
7 FROM
8 sale_report
9 分组依据
10 个 sale_item
;已创建视图。
。 如果是,就不要使用视图,你必须为每个查询编写很长的SQL语句。 SUM 和 GROUP BY。
借助视图,一行SQL即可解决问题。
另一个使用领域是安全设置。
例如人力资源部有一张员工表,其中包含
员工的姓名、性别、生日、籍贯、工龄、工资、职级等信息。
人力资源部,希望你能帮我写2011年的工作规划方案,但我不想让你“知道太多”。然后创建一个视图调度程序来编写。
mysql和Oracle都有一个视图
过程,它是一个存储过程,也就是与数据库操作密切相关的一些操作。使用存储过程编写时,效果比外部编写,如java或C#时要好。 。
例如,在商店数据库中,每次晚上商店打烊后都要计算销售额,然后根据每个产品类别计算每天的销售额,然后将统计数据插入到数据库中统计表。
这些操作基本上都是SELECT SUM / GROUP BY然后INSERT INTO。
仅直接在数据库中处理它。
无需将许多查询结果传递给用 Java 或 C# 编写的外部客户端。
然后通过客户端返回很多INSERT INTO语句。
数据库(mysql)关键知识
Mysql 是目前互联网上使用最广泛的关系数据库。关系数据库的本质就是将问题分成几类,然后通过关系进行查询。一个典型的问题是用户借书。共有三个表:用户表、图书表和贷款联系人表。如果需要查询某个用户的图书借阅状态或者已借阅的图书,可以通过关系查询来实现。
关系数据库范式
来自英语范式,称为NF。为了形成良好的关系,关系必须满足一定的约束条件。符合这些规范的数据库结构简洁、清晰。同时不进行插入、删除和更新。功能障碍。共有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Buss码范式(BCNF)、第四范式(4NF)、第五范式( 5NF)。 )。它也被称为完美范式)。
1NF 表示数据库表的每一列都是一个不可分割的原子数据元素。 2NF必须满足1NF,这要求数据库表中的每条记录行必须是唯一不同的。 3NF基于2NF,非素数属性不依赖于其他非素数属性(2NF下消除了传递依赖)。 BCNF是基于3NF的。非主属性不能依赖于主键的子集(根据 3NF 消除了对主键子集的依赖)。完成 BCNF 不再因功能依赖性而导致异常,但仍有可能发生。检测到由于多值依赖性而导致的异常。 4NF的定义很简单:它已经是BC范式并且不包含多值依赖关系。 5NF处理无损连接的问题。这种范例从根本上来说是没有意义的,因为无损连接很少且难以检测。领域关键范式试图定义一个考虑所有类型的依赖性和约束的终极范式,但其实用价值很小,仅存在于理论研究中。
目录和
模式是数据库对象命名空间的级别,主要用于解决命名冲突问题。理论上,一个数据库系统包含多个目录,每个目录包含多个模式,每个模式又包含多个数据库对象(表、视图、字段等)。但是Mysql数据库名为Schema,不支持目录。
Mysql 有两种主要的数据库引擎:MyISAM 和 InnoDB。 MyISAM支持全文检索,InnoDB支持事务。
SQL 中的“%”通配符表示任意出现任意次数的字符。 “_”代表任意出现一次的字符。 SQL 和正则表达式组合查询通常用在 WHERE 表名 REGEXP '^12.34' 中。子查询是从内到外执行的。
数据库连接包含外键。外键是指一个表中的某一列是另一个表的主键,那么它就是外键。笛卡尔连接生成的记录条目(如果未指定连接条件)只是第一个表的行数乘以第二个表的列数。最常用的是等值连接,也称为内连接。
特殊联接和自联接意味着查询中的两个表是同一个表。它通常用作外部语句来替换从同一个表检索数据时使用的子查询。自然连接仅返回每列一次。外连接是包含相关表中没有相关行的行的连接。例如,列出所有产品及其订单数量,包括无人订购的产品。 LEFT OUTER JOIN 表示选择左表的所有行。
组合查询是指使用UNION组合两个查询。
视图是一种用于查看存储在其他地方的数据的工具。它本身不包含数据。因此,如果表中的数据发生变化,视图返回的数据也会发生变化,因此使用复杂或嵌套视图会对性能产生较大影响。视图的功能之一是隐藏复杂的 SQL,其中通常包括连接查询。
存储过程类似于批处理,包含一个或多个 SQL 语句。语法:
CREATE PROCEDURE name()
BEGIN
SQL
END
------------------------
CALL name() //调用存储过程
游标由DECLARE定义。游标绑定到存储过程。当存储过程完成时,光标消失。打开游标后,可以使用 FETCH 语句访问所有行。
触发器在特定时间发生时自动执行 SQL 语句。语法:
CREATE TRIGGER name AFTER ON INSERT ON talbe_name FOR EACH ROW
事务处理可以维护数据库完整性并确保批处理操作要么完全执行,要么根本不执行。它包含几个关键术语:事务、回滚、提交和保存点。 ROLLBACK 只能在事务内使用。您无法回滚 CREATE 和 DROP 操作。您可以使用 COMMIT 来确保事务已提交。复杂的事务处理需要部分提交或者回滚,所以我们需要使用SAVEPOINT。您可以使用 ROLLBACK TO savepoint_name。持有点越多越好。交易完成后,保留积分自动兑换。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
code前端网