当前位置: 首页 > news >正文

数据库知识整理——SQL数据定义

SQL的数据定义包括对表、视图、索引的创建和删除。

创建表

语句格式

CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件][,<列名><数据类型>[列级完整性约束条件]]…[,<表级完整性约束条件>]);

列级完整性约束条件有 NULL(空)和 UNIQUE(取值唯一),如 NOT NULL UNIQUE 表示取值唯一,不能取空值。

例子

建立一个供应商、零件数据库。其中,“供应商”表S(Sno, Sname, Status, City)分别表示供应商代码、供应商名、供应商状态和供应商所在城市。“零件”表 P(Pno, Pname, Color, Weight, City)表示零件号、零件名、颜色、重量及产地。数据库要满足以下要求:

  • 供应商代码不能为空,且值是唯一的,供应商的名也是唯一的。
CREATE TABLE S(
Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(30) UNIQUE,
Status CHAR(8),
City CHAR(20),
PRIMARY KEY(Sno));
  • 零件号不能为空,且值是唯一的;零件名不能为空。
CREATE TABLE P(
Pno CHAR(6),
Pname CHAR(30) NOT NULL,
Color CHAR(7),
Weight NUMERIC(6,2),
City CHAR(20)
PRIMARY KEY(Pno));

PRIMARY KEY(Pno)已经定义了 Pno为主码,所以 Pno CHAR(6) NOT NULL UNIQUE语句中的 NOT NULL UNIQUE 可以省略。

  • 一个供应商可以供应多个零件,而一个零件可以由多个供应商供应
CREATE TABLE SP(
Sno CHAR(5),
Pno CHAR(6),
Status CHAR(8),
Qty NUMERIC(9),
PRIMARY KEY(Sno,Pno),
FOREIGN KEY(SnO)REFERENCES S(Sno),
FOREIGN KEY(PnO) REFERENCES P(Pno));

FOREIGN KEY(Sno)REFERENCES S(Sno)定义了在 SP 关系中 Sno 为外码,其取值必须来自 S 关系的 Sno 域。同理,在SP 关系中 Pno 也定义为外码。

修改和删除表

修改表(ALTER TABLE)

语句格式

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

例子

  • 向“供应商”表 S增加 Zap“邮政编码”
ALTER TABLE S ADD Zap CHAR(6);

不论基本表中原来是否已有数据,新增加的列一律为空。

  • 将 Status 字段改为整型
ALTER TABLE S MODIFY Status INT;

删除表(DROP TABLE)

语句格式

DROP TABLE<表名>

例子

DROP TABLE Student

此后关系 Student 不再是数据库模式的一部分,关系中的元组也无法访问。

索引建立和删除

数据库索引就像是书本最后的索引目录。它通过建立一种“目录”机制,帮助数据库引擎绕过低效的全表扫描,实现数据的快速定位。

建立索引

语句格式

CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>]]…);

  • 次序:可选 ASC(升序)或 DSC(降序),默认值为ASC。
  • UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录。
  • CLUSTER:表明要建立的索引是聚簇索引,意为索引项的顺序是与表中记录的物理顺序一致的索引组织。

例子

假设供应销售数据库中有供应商 S、零件 P、工程项目 J、供销情况 SPJ关系,希望建立4个索引。其中,供应商S中Sno 按升序建立索引;零件P中Pno 按升序建立索引;工程项目J中 Jno 按升序建立索引;供销情况 SPJ中 Sno 按升序、Pno 按降序、Jno 按升序建立索引。

CREATE UNIQUE INDEX S-SNO ON S(Sno);
CREATE UNIQUE INDEX P-PNO ON P(Pno);
CREATE UNIQUE INDEX J-JNO ON J(Jno);
CREATE UNIQUE INDEX SPJ-NO ON SPJ(Sno ASC,Pno DESC,JNO ASC);

删除索引

语句格式

DROPINDEX<索引名>

例子

删除索引StdentIndex 

DROP INDEX

视图创建和删除

数据库中的视图,可以把它想象成一张定制好的“虚拟表”或“数据窗口”。它本身并不实际存放数据,而是保存了一个查询命令。当你查看这个视图时,数据库会立刻执行这个预存好的命令,从真实的数据表中把数据抓取过来,并按照视图定义的样子展示给你。

想象一下,公司的数据库就像是一个装满各种文件(数据表)的大房间。不同岗位的员工只需要看到与他们相关的部分信息:

  • 高管可能需要看到完整的员工信息,包括薪资。
  • 人力资源需要看到员工的部门、职位等信息,但不应看到薪资。
  • 普通员工在查询通讯录时,可能只需要看到其他同事的姓名、工位号等基本信息。

如果让所有人都直接进入这个房间翻阅所有文件,不仅混乱,而且极不安全。这时,“视图”就派上用场了。它可以为不同角色的人开设一扇特定的“窗户”。透过这扇窗户,他们只能看到被允许看到的数据,其他无关或敏感的数据都被“墙”挡在了外面。这很好地实现了数据安全和权限控制。因此视图的主要作用是:1、简化复杂的查询。2、 提供逻辑独立性。

视图创建

语句格式

CREATE VIEW 视图名(列表名) AS SELECT 查询子句[WITH CHECK OPTION];

  • 子查询可以是任意复杂的 SELECT 语句,但通常不允许含有 ORDER BY 子句和DISTINCT 短语。
  • WITH CHECK OPTION 表示对 UPDATE、INSERT、DELETE 操作时保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
  • 组成视图的属性列名或者全部省略或者全部指定。如果省略属性列名,则隐含该视图由SELECT 子查询目标列的主属性组成。

例子

若学生关系模式为 Student(Sno,Sname,Sage,Sex,SD,Email,Tel),建立“计算机系”(CS 表示计算机系)学生的视图,并要求进行修改、插入操作时保证该视图中只有计算机系的学生。

CREATE VIEW CS-STUDENT
AS SELECT Sno,Sname,Sage,Sex
FROM Student
WHERE SD='CS'
WITH CHECK OPTION;

由于 CS-STUDENT 视图使用了 WITH CHECK OPTION 子句,因此,对该视图进行修改、插入操作时 DBMS 会自动加上 SD-'CS'的条件,保证该视图中只有计算机系的学生。

视图删除

语句格式

DROP VIEW 视图名

例子

删除视图CS-STUDENT

DROP VIEW CS-STUDENT

http://www.dtcms.com/a/596641.html

相关文章:

  • AAAI 2026|港科大等提出ReconVLA:利用视觉重构引导,刷新机器人操作精度!(含代码)
  • Java 进阶:IO 流与 Lambda 表达式深度解析
  • 集团公司网站推广方案怎么做十年网站建设
  • 张祥前统一场论视角下的托卡马克Z箍缩不稳定性解读
  • 【每天一个AI小知识】:什么是MCP协议?
  • 在 kubernetes 上使用 SMB 协议做存储的「即插即用」方案
  • 软件测试大赛Web测试赛道工程化ai提示词大全
  • 智慧团建官方网站登录入口优秀的网站建设价格
  • 静海做网站公司十一月新闻大事件摘抄
  • GJOI 11.6 题解
  • Java Excel 导出:EasyExcel 使用详解
  • 【SOMEIP】【R24-11】【需求翻译】[RS_SOMEIP_00002]-[RS_SOMEIP_00004]
  • VMware无法将网络更改为桥接状态:没有未桥接的主机网络适配器
  • maven打包问题/ClassNotFoundException异常
  • 告别局域网限制!Windows快速部署Docsify技术文档站点,搭配cpolar内网穿透实现公网随时随地访问
  • Python每日一练---第十二天:验证回文串
  • 【Docker】Dockerfile自定义镜像
  • 1.3 Spring的入门程序
  • 网站内的链接怎么做修改wordpress 表格
  • 企业网站源码是什么网站内链怎么优化
  • FPGA-zynq PS与PL的交互(一)
  • 做电影网站需要施工企业会计核算及常用会计分录
  • CONFIG_TRACEPOINTS和CONFIG_FTRACE的作用
  • LeetCode 热题 100——哈希——字母异位词分组
  • MATLAB 计算两点直线方程(叉乘)
  • 系统分析师-信息安全-通信与网络安全技术系统访问控制技术
  • 25年11月软考架构真题《论无服务器架构(Serverless)》考后复盘总结
  • SMamba: 基于稀疏Mamba的事件相机目标检测
  • 怎么给自己制作一个网站php整站最新版本下载
  • 饰品网站模版哪种网站