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

相关推荐
喵叔哟几秒前
第7章:Neo4j索引与约束
数据库·oracle·neo4j
Winn~33 分钟前
MySQL行锁、记录锁、间隙锁、临建锁、意向锁、表锁
数据库·mysql
snowful world37 分钟前
PolyU Palmprint Database掌纹识别数据集预处理(踩坑版)
数据库·人工智能·opencv
Mylvzi1 小时前
【MySQL 从 0 讲解系列】深入理解 GROUP BY 的本质与应用(含SQL示例+面试题)
数据库·sql·mysql
Forest_HAHA2 小时前
<6>-MySQL表的增删查改
数据库·mysql
blammmp2 小时前
Redis: List类型
数据库·redis·缓存
GEEK零零七2 小时前
Leetcode 3390. Longest Team Pass Streak
sql·mysql数据库
Leo.yuan2 小时前
数据挖掘是什么?数据挖掘技术有哪些?
大数据·数据库·人工智能·数据挖掘·数据分析
重整旗鼓~3 小时前
1.sql连接语句
数据库
一只笨猫猫4 小时前
MySQL中InnoDB存储引擎底层原理与MySQL日志机制深入解析
数据库·mysql