【数据库】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

相关推荐
保持学习ing1 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
宇钶宇夕2 小时前
EPLAN 电气制图:建立自己的部件库,添加部件-加SQL Server安装教程(三)上
运维·服务器·数据库·程序人生·自动化
爱可生开源社区2 小时前
SQLShift 重磅更新:支持 SQL Server 存储过程转换至 GaussDB!
数据库
GEEK零零七2 小时前
Leetcode 1070. 产品销售分析 III
sql·算法·leetcode
贾修行2 小时前
SQL Server 空间函数从入门到精通:原理、实战与多数据库性能对比
数据库·sqlserver
傲祥Ax3 小时前
Redis总结
数据库·redis·redis重点总结
一屉大大大花卷3 小时前
初识Neo4j之入门介绍(一)
数据库·neo4j
周胡杰4 小时前
鸿蒙arkts使用关系型数据库,使用DB Browser for SQLite连接和查看数据库数据?使用TaskPool进行频繁数据库操作
前端·数据库·华为·harmonyos·鸿蒙·鸿蒙系统
wkj0014 小时前
navicate如何设置数据库引擎
数据库·mysql
赵渝强老师4 小时前
【赵渝强老师】Oracle RMAN的目录数据库
数据库·oracle