三、计算机理论-关系数据库-结构化查询语言SQL

SQL概述

是一种介于关系代数与关系演算之间的语言,现成为关系数据库的标准语言

特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(直接使用或者嵌入高级语言使用)、语言简洁,易学易用。

四大功能如下:

|-------|----------------------|
| SQL功能 | 动词 |
| 数据查询 | SELECT |
| 数据定义 | CREATE,DROP,ALTER |
| 数据操纵 | INSERT,UPDATE,DELETE |
| 数据控制 | GRANT,REVOKE |

数据定义

|-------|-------------------------------------------------------------------------------------------------------------------|
| 定义基本表 | CREATE TABLE 表名(列名 数据类型 列级完整性约束条件,......); |
| 修改基本表 | ALTER TABLE 表名,是修改表的结构的 |
| 删除基本表 | DROP TABLE 表名,若别的表应用了此表,则会被一并删除 |
| 建立索引 | 是加快查询速度的有效手段,CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON TABLE UNIQUE表示该索引的每一个索引值只对应唯一的数据元组 CLUSTER表示建立的索引是聚簇索引 |
| 删除索引 | DROP INDEX <索引名>; |

数据查询

SQL提供了SELECT用于数据库的查询操作

|----------|----------------------------------------|
| WHERE | 根据WHERE的条件表达式,从FROM子句指明的表或视图中查询满足条件的元组 |
| GROUP BY | 用于按指定的列的值进行分组,该列值相等的元组为一个组 |
| HAVING | 若GROUP BY子句中带有HAVING短语,则只有满足条件的组才会被显示 |
| ORDER BY | 用于按指定列的值进行排序,默认是ASC |

单表查询

查询列的操作,对应关系代数中的投影运算;查询行的操作,对应关系代数中的选择运算

|------------|---------------------------|
| 查询指定列 | |
| 查询全部列 | |
| 查询经过计算的值 | COUNT(*)是统计元组的个数 |
| 消除取值重复的元组 | 在列名前加DISTINCT可消除查询结果中重复元组 |
| 查询满足条件的元组 | 注意:_匹配单字符,%匹配多字符 |
| ORDER BY子句 | |
| GROUP BY子句 | |
| HAVING | 作用对象是组,从中选择满足条件的组 |

连接查询(主要查询)

是指一次查询同时涉及两个及以上表

|--------|-----------------|
| 等值连接查询 | |
| 外连接查询 | |
| 自身连接查询 | 是指将一个表看成逻辑上的多个表 |

嵌套查询

将一个查询块嵌套在另一个查询块中的查询成为嵌套查询;子查询的SELECT语句中不能使用ORDER BY子句,因为其只能对最终查询结果进行排序;求解方法是自里向外处理

|---------------|---|
| 包含IN的子查询 | |
| 包含比较运算符的子查询 | |
| 包含ANY或ALL的子查询 | |

数据更新(操纵)

针对是里面的元组数据进行更新

|------|----------------------------------------------|
| 插入数据 | INSERT INTO 表名 VALUES(); |
| 修改数据 | UPDATE 表名 SET 列名 = ? WHERE ?; |
| 删除数据 | DELETE FROM 表名 WHERE?; TRUNACATE TABLE 用于清空表 |

相关推荐
XDHCOM15 分钟前
PostgreSQL 25001: active_sql_transaction 报错原因分析,故障修复步骤详解,远程处理解决方案
数据库·sql·postgresql
卤炖阑尾炎41 分钟前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
周周不一样1 小时前
Andorid基础笔记2-jar&反射
笔记·pycharm·jar
智者知已应修善业2 小时前
【51单片机单按键切换广告屏】2023-5-17
c++·经验分享·笔记·算法·51单片机
daad7772 小时前
wifi_note
运维·服务器·数据库
xixingzhe22 小时前
Mysql统计空间增量
数据库·mysql
曹牧2 小时前
PL/SQL:xml数据
oracle
凉、介3 小时前
别再把 PCIe 的 inbound/outbound、iATU 和 eDMA 混为一谈
linux·笔记·学习·嵌入式·pcie
程序员萌萌3 小时前
Redis的缓存机制和淘汰策略详解
数据库·redis·缓存机制·淘汰策略
不剪发的Tony老师3 小时前
SQLite 3.53.0版本发布,重要更新
数据库·sqlite