衡阳县住房和城乡建设局网站,wordpress ul id乱码,泰安公司注册,网站建设改版方案目录 前置建表
一、什么是视图
二、为什么使用视图
三、视图的规则和限制
四、视图的增删改查 五、视图数据的更新 前置建表
CREATE TABLE student (id int NOT NULL AUTO_INCREMENT COMMENT 主键,code varchar(255) NOT NULL COMMENT 学号,name varchar(255) DEFAULT NUL…
目录 前置建表
一、什么是视图
二、为什么使用视图
三、视图的规则和限制
四、视图的增删改查 五、视图数据的更新 前置建表
CREATE TABLE student (id int NOT NULL AUTO_INCREMENT COMMENT 主键,code varchar(255) NOT NULL COMMENT 学号,name varchar(255) DEFAULT NULL COMMENT 姓名,sex enum(男,女) DEFAULT NULL COMMENT 性别,age int(0) NULL COMMENT 年龄,PRIMARY KEY (id)
);INSERT INTO test.student(id, code, name, sex, age) VALUES (1, 20220101, 张三, 男, 12);
INSERT INTO test.student(id, code, name, sex, age) VALUES (2, 202202, 李四, 男, 14);
INSERT INTO test.student(id, code, name, sex, age) VALUES (3, 202203, 王五, 女, 10);
INSERT INTO test.student(id, code, name, sex, age) VALUES (4, 202204, 张三飞, 男, 20);
INSERT INTO test.student(id, code, name, sex, age) VALUES (5, 202205, 小丽, 女, 10);
INSERT INTO test.student(id, code, name, sex, age) VALUES (6, 202206, 小明, 男, 11);CREATE TABLE score (id int NOT NULL AUTO_INCREMENT,studentcode int DEFAULT NULL,score int DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT7 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;INSERT INTO test.score(id, studentcode, score) VALUES (1, 20220101, 70);
INSERT INTO test.score(id, studentcode, score) VALUES (2, 202202, 99);
INSERT INTO test.score(id, studentcode, score) VALUES (3, 202203, 100);
INSERT INTO test.score(id, studentcode, score) VALUES (6, 202206, 69); 数据如下
一、什么是视图 视图是一种简单的数据查询机制。不同于表视图不涉及数据存储因此读者不用担心视图会充满磁盘空间。读者可以先通过命名select 语句来创建视图然后将这个查询保存起来供其他用户使用而其他用户使用这个视图时就像他们自己在直接查询数据。视图是虚拟的表。与包含数据的表不一样视图只包含使用时动态检索数据的查询。
二、为什么使用视图
1、重用SQL语句。 2、简化复杂的SQL操作。在编写查询后可以方便地重用它而不必知道它的基本查询细节。 3、使用表的组成部分而不是整个表。 4、保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。 5、更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据
三、视图的规则和限制
1、与表一样视图必须唯一命名不能给视图取与别的视图或表相同的名字。 2、对于可以创建的视图数目没有限制。 3、为了创建视图必须具有足够的访问权限。这些限制通常由数据库管理人员授予。 4、视图可以嵌套即可以利用从其他视图中检索数据的查询来构造一个视图。 5、ORDER BY可以用在视图中但如果从该视图检索数据SELECT中也含有ORDER BY那么该视图中的ORDER BY将被覆盖。 6、视图不能索引也不能有关联的触发器或默认值。 7、视图可以和表一起使用。例如编写一条联结表和视图的SELECT语句。
四、视图的增删改查
1、视图用CREATE VIEW语句来创建。 2、使用SHOW CREATE VIEW viewname来查看创建视图的语句。 3、用DROP删除视图其语法为DROP VIEW viewname;。 4、更新视图时可以先用DROP再用CREATE也可以直接用CREATE OR REPLACE VIEW。如果要更新的视图不存在则第2条更新语句会创建一个视图如果要更新的视图存在则第2条更新语句会替换原有视图。
--创建一个名为stu_score 的视图用于保存学生和成绩信息
CREATE VIEW stu_score as SELECT a.code,a.name,a.sex,a.age,b.score FROM student a LEFT join score b on a.codeb.studentcode ;这个时候score给张三飞增加一个成绩记录为90分可以看到视图也进行了变化 五、视图数据的更新
如果提供给用户一系列视图作为检索数据使用那么用户也需要修改同一数据怎么办?强迫用户使用视图检索又允许他们使用update或insert 语句自己修改基础数据。这似乎有点奇怪。为此MySQL、Oracle数据库和SQL Server都允许用户在遵守特定规则的前提下通过视图修改数据。对于MySQL来说如果下面的条件能够满足那么视图就是可更新的: 1、没有使用聚合函数(max()、min()和 avg()等); 2、视图没有使用group by或having子句; 3、select或from子句中不存在子查询,并且 where子句中的任何子查询都不引用from子句中的表; 4、视图没有使用union、union all和 distinct;from子句包括不止一个表或可更新视图; 5、如果有不止一个表或视图那么from子句只使用内连接。
比如创建一个简单的视图
CREATE VIEW stu_test as SELECT a.code,a.name,a.sex,a.age FROM student a ;
然后更新一条数据
update stu_test set age101 where code202205
更新后的视图数据
更新视图后的student表数据也会跟着变更