首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第4章 数据更新
4-1 数据的插入(INSERT语句的使用方法)
什么是INSERT
INSERT语句的基本语法
列清单的省略
插入NULL
插入默认值
从其他表中复制数据
4-2 数据的删除(DELETE语句的使用方法)
DROP TABLE语句和DELETE语句
DELETE语句的基本语法
指定删除对象的DELETE语句(搜索型DELETE)
4-3 数据的更新(UPDATE语句的使用方法)
UPDATE语句的基本语法
指定条件的UPDATE语句(搜索型UPDATE)
使用NULL进行更新
多列更新
4-4 事务
什么是事务
创建事务
ACID特性
第5章 复杂查询
5-1 视图
视图和表
创建视图的方法
视图的限制① ——定义视图时不能使用ORDER BY子句
视图的限制② ——对视图进行更新
删除视图
5-2 子查询
子查询和视图
子查询的名称
标量子查询
标量子查询的书写位置
使用标量子查询时的注意事项
5-3 关联子查询
普通的子查询和关联子查询的区别
关联子查询也是用来对集合进行切分的
结合条件一定要写在子查询中
第6章 函数、谓词、CASE表达式
6-1 各种各样的函数
函数的种类
算术函数
字符串函数
日期函数
转换函数
6-2 谓词
什么是谓词
LIKE谓词——字符串的部分一致查询
BETWEEN谓词——范围查询
IS NULL、IS NOT NULL——判断是否为NULL
IN谓词——OR的简便用法
使用子查询作为IN谓词的参数
EXIST谓词
6-3 CASE表达式
什么是CASE表达式
CASE表达式的语法
CASE表达式的使用方法
第7章 集合运算
7-1 表的加减法
什么是集合运算
表的加法——UNION
集合运算的注意事项
包含重复行的集合运算——ALL选项
选取表中公共部分——INTERSECT
记录的减法——EXCEPT
7-2 联结(以列为单位对表进行联结)
什么是联结
内联结——INNER JOIN
外联结——OUTER JOIN
3张以上的表的联结
交叉联结——CROSS JOIN
联结的特定语法和过时语法
当前位置:
首页>>
技术小册>>
SQL基础教程(中)
小册名称:SQL基础教程(中)
### 视图和表:SQL基础教程(中)章节内容 #### 引言 在SQL(Structured Query Language)的世界里,数据库是信息的海洋,而表(Tables)则是这片海洋中承载数据的基本单位。然而,随着数据量的增长和业务逻辑的复杂化,直接操作表可能会变得既繁琐又低效。这时,视图(Views)作为一种数据库对象应运而生,它为用户提供了对数据库数据的另一种灵活访问方式。本章将深入探讨SQL中的视图与表,包括它们的基本概念、创建、使用、区别以及在实际应用中的优势与限制。 #### 一、表:数据存储的基础 ##### 1.1 表的基本概念 表是数据库中最基本的数据存储结构,它以行(Row)和列(Column)的形式组织数据。每一列代表数据的一个字段,如员工姓名、年龄、部门等;每一行则代表一个具体的数据记录,即某个实体的一个实例。表通过定义列的数据类型、是否允许为空、是否为主键等属性来约束数据的存储方式,确保数据的完整性和一致性。 ##### 1.2 创建表 在SQL中,使用`CREATE TABLE`语句来创建新表。该语句需要指定表名、列名、数据类型以及其他可能的约束条件。例如: ```sql CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), Age INT, DepartmentID INT, HireDate DATE ); ``` 上述SQL语句创建了一个名为`Employees`的表,包含六个字段,其中`EmployeeID`被指定为主键。 ##### 1.3 修改与删除表 随着业务需求的变化,可能需要修改表的结构或删除不再需要的表。SQL提供了`ALTER TABLE`语句用于修改表结构(如添加、删除或修改列),而`DROP TABLE`语句则用于删除整个表及其所有数据。 #### 二、视图:数据的虚拟表示 ##### 2.1 视图的基本概念 视图是一种虚拟的表,其内容由查询定义。视图并不存储数据本身,而是存储了用于生成数据的SQL查询。当用户对视图进行查询时,数据库系统会根据视图的定义动态生成数据。因此,视图可以被视为存储在数据库中的SQL查询语句。 ##### 2.2 创建视图 使用`CREATE VIEW`语句来创建视图。该语句指定了视图的名称和用于生成视图的SQL查询。例如,假设我们想要一个只包含市场部员工信息的视图: ```sql CREATE VIEW MarketingDept AS SELECT EmployeeID, FirstName, LastName FROM Employees WHERE DepartmentID = (SELECT DepartmentID FROM Departments WHERE DepartmentName = 'Marketing'); ``` 上述SQL语句创建了一个名为`MarketingDept`的视图,它包含了所有属于市场部的员工ID、姓名信息。 ##### 2.3 使用视图 视图的使用方式与表类似,可以像查询表一样查询视图。通过视图,用户可以以更简洁、更易于理解的方式访问数据,同时隐藏了数据的复杂性和底层表的直接访问。 ```sql SELECT * FROM MarketingDept; ``` 这条SQL语句将返回`MarketingDept`视图中的所有数据,即市场部员工的ID和姓名。 ##### 2.4 视图的优点 - **简化查询**:通过视图,可以封装复杂的查询逻辑,使得数据访问更加简单直观。 - **安全性**:通过限制对特定视图的访问,可以控制用户对数据的访问权限,提高数据的安全性。 - **逻辑独立性**:当底层表结构发生变化时,只要视图定义保持不变,那么通过视图访问数据的方式就不会受到影响,从而保证了数据的逻辑独立性。 ##### 2.5 视图的限制 - **性能影响**:虽然视图可以简化查询,但每次通过视图访问数据时,数据库都需要执行视图的定义查询,这可能会降低查询性能,特别是在视图基于复杂查询或涉及大量数据时。 - **更新限制**:并非所有视图都支持数据更新操作(如INSERT、UPDATE、DELETE)。如果视图是基于复杂查询或包含聚合函数,那么可能无法直接更新视图中的数据。 #### 三、视图与表的区别与联系 - **存储方式**:表是物理存储在数据库中的,而视图是虚拟的,不占用物理存储空间,其数据是根据定义动态生成的。 - **更新能力**:表支持所有类型的数据更新操作(如INSERT、UPDATE、DELETE),而视图的更新能力取决于其定义和底层表的结构。 - **使用场景**:表通常用于存储原始数据,而视图则用于提供数据的不同表示形式,以满足特定的查询需求或安全需求。 #### 四、实际应用案例 假设有一个在线购物系统,包含商品表(Products)、订单表(Orders)等多个表。为了简化数据分析过程,可以创建多个视图: - **畅销商品视图**:展示销量最高的商品信息。 - **用户购买历史视图**:根据订单表和用户表生成,展示每个用户的购买历史。 - **库存预警视图**:实时监控库存量,当库存低于一定阈值时发出警告。 这些视图不仅简化了数据查询的过程,还提高了数据分析的效率和准确性。 #### 结语 视图和表是SQL中不可或缺的两个概念,它们共同构成了数据库的核心。表作为数据存储的基础,提供了数据的物理表示;而视图则通过封装复杂的查询逻辑,提供了数据的虚拟表示,使得数据访问更加灵活、安全。通过深入理解视图和表的基本概念、创建方法以及它们之间的区别与联系,我们可以更好地设计数据库结构,优化数据查询,提高数据管理的效率和安全性。
上一篇:
5-1 视图
下一篇:
创建视图的方法
该分类下的相关小册推荐:
SQL基础教程(上)
SQL基础教程(下)
PostgreSQL入门教程
高性能的Postgres SQL