【数据库系统概念】第三章 SQL语句(上)~重要!!!

文章目录

    • [3.1 SQL查询语言概览](#3.1 SQL查询语言概览)
    • [==3.2 SQL数据定义==](#==3.2 SQL数据定义==)
      • [3.2.1 ==基本类型==](#3.2.1 ==基本类型==)
      • [3.2.2 ==基本模式定义==(完整性约束)](#3.2.2 ==基本模式定义==(完整性约束))
        • [a. 创建表 create table](#a. 创建表 create table)
          • [create table +表名 (列名称 列类型......)](#create table +表名 (列名称 列类型……))
          • 实例
        • [b. 插入数据](#b. 插入数据)
          • [insert into student (name,age,gender) values ('李四',19,'男');](#insert into student (name,age,gender) values (‘李四’,19,‘男’);)
        • [c. 查看表中的全部信息select * from +表名;](#c. 查看表中的全部信息select * from +表名;)
        • [d. SQL禁止破坏完整性约束的任何数据库更新](#d. SQL禁止破坏完整性约束的任何数据库更新)
        • [e. 删除元组delete,删除表drop,增加属性alter等操作](#e. 删除元组delete,删除表drop,增加属性alter等操作)
    • [3.3 SQL查询的基本结构select、from、where](#3.3 SQL查询的基本结构select、from、where)
    • [3.4 附加的基本运算](#3.4 附加的基本运算)
      • [3.4.1 更名运算 as](#3.4.1 更名运算 as)
      • [3.4.2 字符串运算 %](#3.4.2 字符串运算 %)
      • [3.4.3 select子句中的属性说明](#3.4.3 select子句中的属性说明)
      • [3.4.4 排列元组的显示次序 order by](#3.4.4 排列元组的显示次序 order by)
      • [3.4.5 where子句谓词](#3.4.5 where子句谓词)
  • 本文仅供零基础考试前预习使用
  • 本系列文章中部分图片不知来源于何方~侵删
  • 本人对系列文章内容不具备任何解释权~考完即忘,如有疑问请勿评论

3.1 SQL查询语言概览

SQL语言有以下几个部分:

  • 数据定义语言(Data-Definition Language, DDL) : SQL DDL提供定义关系模式、删除关系以及修改关系模式的命令。
  • 数据操纵语言(Data-Manipulation Language, DML): SQL DML提供从数据库中查询信息,以及在数据库中插入元组、删除元组、修改元组的能力。
  • 完整性( integrity): SQL DDL包括定义完整性约束的命令,保存在数据库中的数据必须满足所定义的完整性约束。破坏完整性约束的更新是不允许的。
  • 视图定义(view definition): SQL DDL包括定义视图的命令。
  • 事务控制(transaction control) : SQL包括定义事务的开始和结束的命令。
  • 嵌入式SQL和动态SQL( embedded SQL and dynamic SQL):嵌入式和动态SQL定义SQL语句如何嵌入到通用编程语言,如C、C++和Java中。
  • 授权(authorization) : SQL DDL包括定义对关系和视图的访问权限的命令。

3.2 SQL数据定义

3.2.1 基本类型

3.2.2 基本模式定义(完整性约束)



a. 创建表 create table
create table +表名 (列名称 列类型......)
实例
  • 名字name的 类型为32个字节
  • 年龄age 的类型为int
  • 性别gender的 类型为2个字节
b. 插入数据
insert into student (name,age,gender) values ('李四',19,'男');
  • 向name age gender 中插入数据 李四 19 男
c. 查看表中的全部信息select * from +表名;
d. SQL禁止破坏完整性约束的任何数据库更新

  例如,如果关系中一条新插入或新修改的元组在任意一个主码属性上有空值,或者元组在主码属性上的取值与关系中的另一个元组相同,SQL将标记一个错误,并阻止更新。类似地,如果插入的course元组在dept _name上的取值没有出现在department关系中,就会破坏coume上的外码约束,SQL会阻止这种插入的发生。

e. 删除元组delete,删除表drop,增加属性alter等操作

3.3 SQL查询的基本结构select、from、where

  SQL查询的基本结构由三个子句构成:select、from和where。查询的输入是在from子句中列出的关系,在这些关系上进行where和select子句中指定的运算,然后产生一个关系作为结果。

3.3.1 单关系查询

select * from +表名

  在关系模型的形式化数学定义中, 关系是一个集合。因此,重复的元组不会出现在关系中。在实践中,去除重复是相当费时的,所以SQL允许在关系以及SQL表达式结果中出现重复。因此,在上述SQL査询中,每个系名在instructor关系的元组中每出现一次,都会在查询结果中列出一次。

select distinct去重
select all显式不去重
where子句

  综上所述,select语句和where语句帮我们实现了关系代数中的选择运算和广义投影(即可添加运算符操作),另外指明可以用all和distinct谓词来指明需不需要去除重复。

3.3.2 多关系查询

【MySQL】 复合查询 | 内外连接-CSDN博客

  顾名思义,多关系查询为在提供的多个关系中查询我们所需要的信息。

通用形式
多表笛卡尔积
select、from
  • 显示雇员名、雇员工资以及所在部门的名字

  • 由于员工 信息属于 emp表 而所在部门名字属于 dept表 数据来自不同的表,所以需要进行多表查询

  • 分别用emp员工的信息 与 dept 部门表的信息 做 穷举 组合
  • 就称 两张表 进行笛卡尔积
  • 就把两张表 变成了 一张表 ,就可以进行单表查询
select、from+where

如 smith 本来是20号部门的,把10号部门的信息传过来 是没有意义的

  • 输入 select * from emp,dept where emp.deptno =dept.deptno;
  • 把对应的部门号 与部门信息 匹配上
  • 输入 select ename ,sal,dname from emp,dept where emp.deptno =dept.deptno;
  • 就可以显示雇员名、雇员工资以及所在部门的名字
教材示例:查询结果见图3-5
一些补充说明:

  由于上课顺序与课本顺序不同,书上认为我们学到SQL语言之前还未接触关系代数运算(第六章),如果你已经对笛卡尔运算和自然连接理解清晰透彻了,那么可以不需要看书后的一些赘叙。

3.3.3 自然连接

  当然,我们已经学过了自然连接运算,但是我们要用SQL语句将其表示出来。


3.4 附加的基本运算

3.4.1 更名运算 as

​ 在数据库的查询中我们经常碰到这样的困扰,两个表中具有相同的属性,或者需要自然连接同一个关系构成新的关系等...这时,更名运算就派上了大用场。

3.4.2 字符串运算 %

​ 简单来说,SQL中用一对单引号来标识字符串,如果单引号为字符串组成部分则将字符串中单引号改为双引号,在不同的数据库系统中对大小写敏感不一致,并在SQL中支持使用多种函数和模式匹配等。

示例如下:

3.4.3 select子句中的属性说明

3.4.4 排列元组的显示次序 order by

3.4.5 where子句谓词

between和not between
n维元组比较
相关推荐
oradh2 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z123456789863 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD3 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward4 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记4 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发4 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB4 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
欲速不达88204 小时前
Mysql并发DML锁等待的优化
数据库·mysql
Database_Cool_5 小时前
AI Agent 长期记忆怎么存?阿里云 PolarDB-X 对接 Mem0 记忆框架实践
数据库·阿里云
会编程的土豆5 小时前
数据库范式
数据库·oracle