第三章 关系数据库标准语言SQL

devtools/2025/3/5 2:21:24/

一、概述

特点

1)综合统一:数据定义语言(DDL)、操作语言(DML)、控制语言(DCL)功能于一体。

2)高度非过程化:只需提出做什么,无需了解存储路径。

3)SQL采用集合操作方式

4)提供多种实现方式:独立语言(可独立用于联机交互)、嵌入式语言(嵌入到高级语言)

5)支持三级模式:视图(外模式)、基本表(模式)、存储文件(内模式)

二、数据定义

模式的定义与删除

定义

删除

sql">drop schema <模式名> <cascade|restrict>

 cascade(级联):删除模式的同时把里面所有的数据对象都给删除

 restrict(限制):若模式内有内容,则拒绝执行。

基本表的定义、删除与修改

定义表:

sql">create table <表名>(
属性名1 数据类型 列完整性约束,
属性名2 数据类型 列完整性约束,
属性名3 数据类型 列完整性约束,
表完整性约束);

定义表所属模式:

修改表 

sql">alter table <表名>add 新列名 类型 约束 | alter 列名 类型 | drop 完整性约束名

删除表 

sql">drop table 表名 [cascade|restrict]

cascade:删除表没限制,与之相关的视图、索引、触发器啥的都一起删除。 

restrict:有关联无法删除。

索引的建立与删除

相关内容:DBMS一般自动建立主键和非空的索引,DBMS自动维护索引、DBMS自动选择是否使用哪些索引。

是内部实现技术(属于内模式范畴

建立索引

sql">create [unique][cluster] index 索引名 on 表名(属性<顺序:desc|asc>...);

一个表只能有一个聚簇索引,建立在经常查询的列上。

删除索引

sql">drop index 索引名

数据查询

1、单表查询

sql">select distinct sname from student

distinct去掉重复的行。

查询条件

1、比较大小

2、确定范围:between and      not between and 

3、确定集合:in  (集合)                      not in

4、字符匹配:like                              not like        _:单个字符   %:任意字符

5、涉及空值的查询:is null                is not null    (is不能用=代替)

6、多重条件查询:and    or 

7、排序关键词: order by  属性  asc | desc

8、聚集函数:count、sun、avg、max、min

9、group by子句   Having 条件  

having短语作用于组,从中选择满足条件的组,而where是选择满足条件的列。

2、连接查询

等值查询

自身连接:

 一个表与自己连接(需要给表起别名)

外连接:

将主体表中不满足连接条件的元组也一并输出。

sql">select student.sno
from student left out join sc on student.sno=sc.sno;

左外连接、右外连接、全外连接

复合条件连接:where有多个条件

3、嵌套查询

子查询:不能用order by语句

不相关子查询:子查询的查询条件不依赖于父查询。

相关子查询:依赖父查询。

带有比较运算符的子查询:子查询一定要在运算符之后

带有ANY或ALL谓词的子查询:

带有exists谓词的子查询:exists谓词的子查询不返回任何数据,只产生逻辑真值(true)和假值(false),子查询的目标列通常都用*

用exists或not exists实现全称量词(难点)

4、集合查询

union:并操作

intersect:交操作 

except:差操作

查询结果的列数和对应的数据类型必须相同。

union:将多个查询结果合起来后自动去除重复元组

union all:保留重复元组。

数据更新

1、插入数据

普通插入元组:

sql">insert into 表名(列名1,列名2...)
values (值1,值2,...)

子查询插入数据

sql">insert into 表名(列名1,列名2...)
子查询;

2、修改数据

sql">update 表名
set 列名1=新值1,列名2=新值2...
where 条件表达式

3、删除数据

删除指定表中满足where子句条件的元组。

sql">delete from 表名
where 条件表达式

视图

虚表:从基本表中导出的表,基表的数据发生变化,视图查询的数据也会改变

视图的操作

1、创建视图
sql">create view 视图名 (列名1,列名2...)
as 子查询
[with check option]

子查询不允许有order by或distinct短语

执行create view时并不执行select语句,只是将视图的定义存入数据字典,查询视图时也是查询基本表中的数据。

with check option的作用:在修改、删除、插入操作时自动加上where中的条件。

基于视图的视图、带表达式的视图、分组视图(group by)、

不指定属性列:

2、删除视图
sql">drop view 视图名 [cascade | restrict]

cascade:将该视图和由他导出的所有视图一起删除。

restrict:有对视图的依赖,则不允许删除。

3、更新视图

允许对行列子集视图进行更新。

但一些视图是不可更新的,因为这些视图不能唯一地有意义地转为对相应基本表的更新。

4、视图的作用

简化用户操作、提供了一定的逻辑独立性、提供安全保护、更清晰的表达查询。


http://www.ppmy.cn/devtools/164032.html

相关文章

Java 大视界 -- 基于 Java 的大数据可视化交互设计与实现技巧(105)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

[预订酒店]

预订酒店 真题目录: 点击去查看 E 卷 100分题型 题目描述 放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格。 输入描述 第一行:n,…

第49天:Web开发-JavaEE应用SpringBoot栈模版注入ThymeleafFreemarkerVelocity

#知识点 1、安全开发-JavaEE-开发框架-SpringBoot&路由&传参 2、安全开发-JavaEE-模版引擎-Thymeleaf&Freemarker&Velocity 一、开发框架-SpringBoot 参考&#xff1a;https://springdoc.cn/spring-boot/ 访问SpringBoot创建的网站 1、路由映射 RequestMapping…

DeepSeek行业应用实践报告-智灵动力【112页PPT全】

DeepSeek&#xff08;深度搜索&#xff09;近期引发广泛关注并成为众多企业/开发者争相接入的现象&#xff0c;主要源于其在技术突破、市场需求适配性及生态建设等方面的综合优势。以下是关键原因分析&#xff1a; 一、技术核心优势 开源与低成本 DeepSeek基于开源架构&#xf…

版图自动化连接算法开发 00002 ------ 添加一个中间点实现 Manhattan 方式连接两个给定的坐标点

版图自动化连接算法开发 00002 ------ 添加一个中间点实现 Manhattan 方式连接两个给定的坐标点 引言正文引言 必读文章 ------ 版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点 之前,我们实现了两个坐标点之间的直接连接,属于最简单的布线方式,但是对于光…

DeepSeek掘金——调用DeepSeek API接口 实现智能数据挖掘与分析

调用DeepSeek API接口:实现智能数据挖掘与分析 在当今数据驱动的时代,企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台,提供了强大的API接口,帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用D…

【原创】Open WebUI 本地部署

使用官网的默认部署&#xff0c;遇到不少的问题。比如白屏问题&#xff0c;其实需要修改几个参数即可。 其实在部署的时候有不少参数 WEBUI_AUTH False ENABLE_OPENAI_API 0 PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG C.UTF-8…

weaviate 安装与测试

weaviate 安装 前提条件&#xff1a;docker安装完成 步骤&#xff1a; 开启docker 在终端运行命令 docker run -p 8080:8080 -p 50051:50051 cr.weaviate.io/semitechnologies/weaviate:1.29.0 weaviate 测试 python-client安装代码测试 import weaviate client weaviat…