【数据库】SQL 表、索引、视图的创建修改与删除

SQL 表、索引、视图的创建修改与删除


SQL表操作,又称为SQL数据定义,包含对表、视图、索引的创建和删除。

基本表与视图:

基本表和试图都是表,有所不同的是基本表是实际存储在数据库中的表,视图是虚表,是从基本表或其他视图中导出的表。所以数据库中,存放的只有视图的定义,而不存放视图的数据。


基本表操作

创建表

sql 复制代码
-- 创建案例
CREATE TABLE S(Sno CHAR(5) NOT NULL UNIQUE
			  ,Sname CHAR(3) UNIQUE
			  ,City CHAR(20)
			  ,PRIMARY KEY(Sno));

根据上述创建表案例,有如下创建表格式:

sql 复制代码
CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件])

有如下对应键值:

bash 复制代码
<表名>: S
<列名>: Sno, Sname, City
<数据类型>: CHAR(5)
[列级完整性约束条件]: NOT NULL UNIQUE

列级完整性约束条件有 NULL(空) 和 UNIQUE(取值唯一)两种,上述 NOT NULL UNIQUE 则表示取值唯一且不为空。

此外,需要关注 PRIMARY KEY(Sno) 代码的含义,定义了 Sno 为主码,主码自带属性唯一不为空。


修改表

sql 复制代码
-- 修改表(增加列)
ALTER TABLE S ADD Zap CHAR(6);
-- 修改表(修改列)
ALTER TABLE S MODIFY City INT;

增加列案例中, 修改表 S 增加数据类型为 CHAR(6) 的新列 Zap
修改列案例中, 修改表 S 中字段 CityINT 类型;

sql 复制代码
ALTER TABLE <表名>[ADD<新列名><数据类型>[完整性约束条件]]
				  [MODIFY<列名><数据类型>];

删除表

sql 复制代码
-- 删除表S案例
DROP TABLE S;

删除表语句格式为:

sql 复制代码
DROP TABLE <表名>;

索引

数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速地查找所需信息,而无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库的索引则是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

建立索引

sql 复制代码
-- 建立索引案例
CREATE UNIQUE INDEX S-SNO ON S(Sno);

上述建立索引案例中,供应商 SSno 按升序建立索引。索引建立规则如下;

sql 复制代码
CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>])
次序:可选 ASC(升序)、DSC(降序),默认值为 ASC
UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录;
CLUSTER:表明要建立的索引是聚簇索引,意为索引项的顺序是与表中记录的物理顺序一致的索引组织。

P.s. 建立索引的优点:

  • 大大加快数据的检索速度;
  • 使用 ORDER BY 和 GROUP BY 子句进行检索数据时,显著减少查询中分组和排序的时间;

删除索引

sql 复制代码
DROP INDEX <索引名>;

视图

视图是从一个或者多个基本表或视图中导出的表,其结构和数据建立在对表的查询基础上。所以视图不是真实存在的表,而是一个虚拟表。视图所对应的数据并不实际地存储在数据库中,而是存储在视图所引用的表中。视图的优点如下:

  • 使用视图集中数据,根据用户定制内容显示;
  • 屏蔽数据的复杂性,用户不必了解到数据库的结构就可以方便使用和管理数据;

视图的创建

sql 复制代码
-- 创建视图的案例
CREATE VIEW CS-STUDENT
AS SELECT Sno,Sname,Sage,Sex
FROM STUDENT
WHERE SD='CS'
WITH CHECK OPTION;

视图的子查询,可以是复杂的 SELECT 语句,但是不允许含有 ORDER BY 子句和 DISTINCT 短语;
WITH CHECK OPTION 表示在对视图进行更新或者插入操作时,保证更新或者插入的行满足定义的 WHERE 条件;


视图的删除

sql 复制代码
DROP VIEW CS-STUDENT;

删除视图 CS-STUDENT

相关推荐
爱喝白开水a6 分钟前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽10 分钟前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康19 分钟前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy34 分钟前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
ytttr8731 小时前
C# 仿QQ聊天功能实现 (SQL Server数据库)
数据库·oracle·c#
盒马coding2 小时前
第18节-索引-Partial-Indexes
数据库·postgresql
不剪发的Tony老师2 小时前
CloudDM:一站式数据库开发管理工具
数据库
望获linux3 小时前
【实时Linux实战系列】Linux 内核的实时组调度(Real-Time Group Scheduling)
java·linux·服务器·前端·数据库·人工智能·深度学习
云宏信息3 小时前
【深度解析】VMware替代的关键一环:云宏ROW快照如何实现高频业务下的“无感”数据保护?
服务器·网络·数据库·架构·云计算·快照
怪兽20143 小时前
Redis常见性能问题和解决方案
java·数据库·redis·面试