SQL 教程
SQL 教程
SQL - 概述
RDBMS
SQL - RDBMS 概念
SQL - NOT NULL(非空) 约束
SQL - DEFAULT(默认)约束
SQL - UNIQUE(唯一)约束
SQL - Primary Key(主键)
SQL - Foreign Key(外键)
SQL - CHECK 约束
SQL - INDEX(索引)约束
SQL - 第一范式 (1NF)
SQL - 第二范式 (2NF)
SQL - 第三范式 (3NF)
SQL - RDBMS 数据库
SQL 操作
SQL - 语法
SQL - 数据类型
SQL - 表达式
SQL - 创建数据库
SQL - 删除或删除数据库
SQL - 选择数据库,USE 语句
SQL - 创建表
SQL - 删除或删除表
SQL - (INSERT)插入查询
SQL - (SELECT)选择查询
SQL - WHERE 子句
SQL - AND 和 OR 合取运算符
SQL - UPDATE(更新)查询
SQL - DELETE(删除)查询
SQL - LIKE 子句
SQL - TOP、LIMIT 或 ROWNUM 子句
SQL - ORDER BY 子句
SQL - GROUP BY 子句
SQL - Distinct 关键字
SQL - 排序结果
SQL 高级
SQL - 约束
SQL - 使用连接(Join)
SQL - INNER JOINS
SQL - LEFT JOINS
SQL - RIGHT JOINS
SQL - FULL JOINS
SQL - SELF JOINS
SQL - CARTESIAN or CROSS JOINS
SQL - UNIONS 字句
SQL - INTERSECT 子句
SQL - EXCEPT 子句
SQL - NULL
SQL - 别名语法
SQL - 索引
SQL - ALTER TABLE 命令
SQL - TRUNCATE TABLE 命令
SQL - 使用视图
SQL - Having 子句
SQL - 事务
SQL - 通配符运算符
SQL - 临时表
SQL - 克隆表
SQL - 子查询
SQL - 使用序列
SQL - 去重
SQL - 注入
SQL - 日期函数
上一节: SQL - TRUNCATE TABLE 命令
上一节
下一节: SQL - Having 子句
下一节
SQL - 使用视图
简述
视图只不过是存储在具有关联名称的数据库中的 SQL 语句。视图实际上是预定义 SQL 查询形式的表的组合。
视图可以包含表的所有行或从表中选择行。可以从一个或多个表创建视图,这取决于编写的 SQL 查询来创建视图。
视图是一种虚拟表,允许用户执行以下操作 -
以用户或用户类别认为自然或直观的方式构造数据。
以用户可以看到和(有时)准确修改他们需要的内容的方式限制对数据的访问。
汇总各种表格中的数据,这些表格可用于生成报告。
创建视图
数据库视图是使用CREATE VIEW陈述。可以从单个表、多个表或另一个视图创建视图。
要创建视图,用户必须根据具体实现具有适当的系统权限。
基础的CREATE VIEW语法如下 -
CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];
您可以在 SELECT 语句中包含多个表,其方式与在普通 SQL SELECT 查询中使用它们的方式相似。
例子
考虑具有以下记录的 CUSTOMERS 表 -
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
以下是从 CUSTOMERS 表创建视图的示例。此视图将用于获取 CUSTOMERS 表中的客户姓名和年龄。
SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM CUSTOMERS;
现在,您可以以与查询实际表类似的方式查询 CUSTOMERS_VIEW。以下是相同的示例。
SQL > SELECT * FROM CUSTOMERS_VIEW;
这将产生以下结果。
+----------+-----+
| name | age |
+----------+-----+
| Ramesh | 32 |
| Khilan | 25 |
| kaushik | 23 |
| Chaitali | 25 |
| Hardik | 27 |
| Komal | 22 |
| Muffy | 24 |
+----------+-----+
WITH CHECK 选项
WITH CHECK OPTION 是 CREATE VIEW 语句选项。WITH CHECK OPTION 的目的是确保所有 UPDATE 和 INSERT 都满足视图定义中的条件。
如果它们不满足条件,则 UPDATE 或 INSERT 返回错误。
以下代码块具有使用 WITH CHECK OPTION 创建相同视图 CUSTOMERS_VIEW 的示例。
CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;
这种情况下的 WITH CHECK OPTION 应该拒绝在视图的 AGE 列中输入任何 NULL 值,因为视图是由 AGE 列中没有 NULL 值的数据定义的。
更新视图
可以在以下给出的某些条件下更新视图 -
SELECT 子句可能不包含关键字 DISTINCT。
SELECT 子句可能不包含汇总函数。
SELECT 子句可能不包含集合函数。
SELECT 子句可能不包含集合运算符。
SELECT 子句可能不包含 ORDER BY 子句。
FROM 子句不能包含多个表。
WHERE 子句不能包含子查询。
查询可能不包含 GROUP BY 或 HAVING。
计算的列可能不会更新。
基表中的所有 NOT NULL 列都必须包含在视图中,INSERT 查询才能正常工作。
因此,如果视图满足上述所有规则,那么您可以更新该视图。以下代码块有一个更新 Ramesh 年龄的示例。
SQL > UPDATE CUSTOMERS_VIEW
SET AGE = 35
WHERE name = 'Ramesh';
这最终会更新基表 CUSTOMERS,同样会反映在视图本身中。现在,尝试查询基表,SELECT 语句将产生以下结果。
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
在视图中插入行
数据行可以插入到视图中。适用于 UPDATE 命令的相同规则也适用于 INSERT 命令。
在这里,我们不能在 CUSTOMERS_VIEW 中插入行,因为我们没有在此视图中包含所有 NOT NULL 列,否则您可以在视图中插入行,就像在表中插入它们一样。
将行删除到视图中
可以从视图中删除数据行。适用于 UPDATE 和 INSERT 命令的相同规则适用于 DELETE 命令。
以下是删除 AGE = 22 的记录的示例。
SQL > DELETE FROM CUSTOMERS_VIEW
WHERE age = 22;
这最终会从基表 CUSTOMERS 中删除一行,同样会反映在视图本身中。现在,尝试查询基表,SELECT 语句将产生以下结果。
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 35 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
删除视图
显然,在您有视图的地方,如果不再需要视图,您需要一种方法来删除它。语法非常简单,如下所示 -
DROP VIEW view_name;
以下是从 CUSTOMERS 表中删除 CUSTOMERS_VIEW 的示例。
DROP VIEW CUSTOMERS_VIEW;
上一节: SQL - TRUNCATE TABLE 命令
上一节
下一节: SQL - Having 子句
下一节
查看笔记 分享笔记
笔记内容:
称呼:
Email:
站点:
分享笔记 重置
分类导航
前端
Ajax 教程
Angular 教程
Aurelia 教程
Bootstrap 教程
ChartJS 教程
CSS 教程
ES6 教程
FontAwesome 教程
HTML 教程
HTML 字符集 教程
HTML 游戏 教程
JavaScript 教程
jQuery 教程
Less 教程
React 教程
Sass 教程
Stylus 教程
TypeScript 教程
Unity 教程
Vue.js 教程
WebAssembly 教程
XAML 教程
颜色 教程
服务端
C# 教程
C++ 教程
COBOL 教程
C语言 教程
Fortran 教程
Go 教程
Groovy 教程
Java 教程
JSP 教程
JVM 教程
Kotlin 教程
Lisp 教程
Lua 教程
Node.js 教程
Pascal 教程
Perl 教程
PHP 教程
Python 教程
Python 3 教程
Ruby 教程
Rust 教程
Scala 教程
Spring 教程
Spring Boot 教程
Spring Cloud 教程
VB.Net 教程
移动端
Android 教程
IOS 教程
Objective-C 教程
React Native 教程
Swift 教程
小程序 教程
数据库
Access 教程
DB2 教程
Mariadb 教程
Memcached 教程
MongoDB 教程
MySQL 教程
Neo4j 教程
PL/SQL 教程
PostgreSQL 教程
Redis 教程
SQL 教程
SQL Server 教程
SQLite 教程
T-SQL 教程
数据格式
Jackson 教程
JSON 教程
SVG 教程
XML 教程
开发工具
ActiveMQ 教程
Ant 教程
Apache HttpClient 教程
Apache POI PPT 教程
AWS 教程
Docker 教程
ElasticSearch 教程
ExpressJS 教程
GIT 教程
GitLab 教程
Google Maps 教程
Gradle 教程
Java NIO 教程
JavaFX 教程
JavaMail 教程
JDBC 教程
jMeter 教程
JPA 教程
jsoup 教程
Junit 教程
KoaJS 教程
Kubernetes 教程
Log4j 教程
Logstash 教程
Lucene 教程
Makefile 教程
Maven 教程
RESTful 教程
Sed 教程
SEO 教程
Servlet 教程
SLF4J 教程
Socket.IO 教程
Struts 教程
SVN 教程
TestNG 教程
UML 教程
UNIX / LINUX 教程
WebSocket 教程
WPF 教程
xStream 教程
区块链 教程
数据处理
Flink 教程
Flume 教程
Hadoop 教程
Hbase 教程
Hive 教程
Kafka 教程
Kibana 教程
MapReduce 教程
MATLAB 教程
MyBatis 教程
Pig 教程
R语言 教程
Solr 教程
Spark 教程
Storm 教程
Zookeeper 教程
大数据分析 教程
数据仓库 教程
数据挖掘 教程
计算机基础
HTTP 教程
IPv4 教程
IPv6 教程
Ubantu 教程
WebServices 教程
嵌入式系统 教程
操作系统 教程
数据结构和算法 教程
汇编语言 教程
物联网 教程
电子电路基础 教程
编译器设计 教程
网站开发 教程
计算机 教程
计算机基础 教程
计算机网络 教程
设计模式 教程
AI
CNTK 教程
Keras 教程
PyTorch 教程
TensorFlow 教程
人工智能 教程
机器学习 教程
Python 技术
Django 教程
Flask 教程
NumPy 教程
Pandas 教程
Pillow 教程
PyGTK 教程
PyQt5 教程
PySpark 教程
pytest 教程
Python -数据科学 教程
Python MySQL 教程
Python 取证 教程
Python 数据结构 教程
Python 文本处理 教程
Python 网络编程 教程
Python 网页抓取 教程
Python 设计模式 教程
RxPY 教程
SciPy 教程
Seaborn 教程
SymPy 教程
wxPython 教程
框架
Laravel 教程
Web 图标Icon 教程
Web2py 教程
WebGL 教程
WebRTC 教程
WordPress 教程
Yii 教程
Zend Framework 教程
SAP
Crystal Reports 教程