从 01 开始 从 01 开始
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档
  • 计算机历史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

  • Git

  • 计算机小知识

  • 数据库

    • 教程概述
    • 数据的存储
    • 数据库的安装
    • 数据库的启停与连接
    • 数据库的管理
    • SQL 概述
      • 什么是 SQL
      • SQL 的分类
      • SQL 的基本书写规则
      • 命名规则
      • 换行符
    • 表的管理
    • SELECT 基础
    • 运算符
    • 聚合查询
    • 数据的排序
    • 数据的插入
    • 数据的删除
    • 数据的更新
    • 事务
    • 视图
    • 子查询
    • 函数
    • 谓词
    • CASE 表达式
    • 集合运算
    • 联结查询-JOIN
    • SQL 入门小结
    • 更多数据库
    • MySQL 的数据类型
    • 命令行的一些用法
    • 用户与权限管理
    • MySQL 的权限管理
    • mysqldump
    • mysqladmin
    • Liquibase
    • 表注释与字段注释
    • 编码类型
  • 计算机基础
  • 数据库
2023-11-15
目录

SQL 概述

# 45.SQL 概述

之前我们已经用了一些 SQL(例如数据库的创建,删除)。

接下来我们就要讲表的管理了,在此之前先说一下 SQL 的基本书写规则。

‍ ‍

# 什么是 SQL

SQL 是为操作数据库而开发的语言。可以用来查询数据、插入和删除数据。

国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的 SQL 称为标准 SQL。

但在该标准出来之前,各个 DBMS 各自为政,对于同一个功能,可能写法不同。

所以即使目前标准出来了,之前的历史遗留问题也还存在,所以有时候一个 SQL 能在 Oracle 上执行,但是在 MySQL 上执行不了(写法不同)。

打个比方:如果一个数据库使用 create 作为创建数据库的单词,而另一个数据库使用的是 add 这个单词。

‍

扩展:标准 SQL 和特定 SQL

每隔几年,ANSI(美国国家标准协会)或 ISO(国际标准化组织)等便会修订 SQL 的标准,进行语法的修订并追加新功能。

1986 年,ANSI 首次制定了 SQL 的标准,之后又进行了数次修订。修订后的标准以修订年份来命名,例如 SQL:1999、SQL:2003、SQL:2008 等。以这些标准为基准的 SQL 就是标准 SQL。

但是,SQL 的标准并不强制“每种 RDBMS 都必须使用”。虽然支持标准 SQL 的 RDBMS 越来越多,但还是存在标准 SQL 无法执行的情况。这时就需要使用只能在特定 RDBMS 中使用的特殊 SQL 语句。

其实,这也是没有办法的事情,起初(大约在 20 世纪 80 年代到 90 年代),标准 SQL 能够实现的功能非常有限,无法完全满足实际需要。RDBMS 的供应商为了弥补这些不足,不得不再单独追加所需要的功能。

尽管如此,这些特定的 SQL 所带来的并不都是负面的影响。标准 SQL 将一些独特的功能收录其中,对其自身的发展起到了积极的推进作用。过去,各个供应商为了展现本公司的优势和独特性,也曾不遗余力地开发各自特定的 SQL。

目前的标准 SQL 经过多次修订,功能已经十分完善。准备学习 SQL 的读者们,就让我们先从牢记标准 SQL 的书写方法开始吧。

‍

‍

# SQL 的分类

SQL 用关键字、数据库名、表名、列名等组合而成的一条语句(SQL 语句)来描述操作的内容。

关键字是指那些含义或使用方法已事先定义好的英语单词(例如创建数据库用 create database 这两个单词,后面再跟上要创建的数据库名)

根据操作的内容,SQL 语句可以分为以下三类:

  • DDL(Data Definition Language,数据定义语言) 用来创建或者删除存储数据用的数据库以及数据库中的表等对象。例如之前说过的创建数据库、删除数据库等就是 DDL
  • DML(Data Manipulation Language,数据操纵语言) 用来查询或者变更表中的记录。例如对表进行查询,插入数据,修改数据库的 SQL 都是 DML
  • DCL(Data Control Language,数据控制语言) 用来确认或者取消对数据库中的数据进行的变更,以及权限的管理等(后续会讲)。

这个分类有个印象即可,不用背。实际使用的 SQL 中有 90% 属于 DML。

‍

# SQL 的基本书写规则

书写 SQL 语句时必须要遵守一些规则。这些规则都非常简单:

  • SQL 语句要以分号(; )结尾
  • SQL 语句不区分大小写
  • 常数的书写方式是固定的
  • 单词需要用半角空格或者换行来分隔

‍

我们逐条说明这些规则

# SQL 语句要以分号(; )结尾

一条 SQL 语句可以描述一个数据库操作。

在日常生活中,我们写东西的时候,在句尾总得加个标点符号表示结束,例如中文句子以句号(。)结尾,英文以点号(.)。而 SQL 语句则使用分号(; ) 结尾。

‍

# SQL 语句不区分大小写

SQL 不区分关键字的大小写 。例如,创建数据库不管写成 create 还是 CREATE 都是可以的。表名和列名也是如此。

‍

‍

# 常数的书写方式是固定的

SQL 语句常常需要直接书写字符串(一个以上的连续字符)、日期或者数字。如,书写向表中插入字符串、日期或者数字等数据的 SQL 语句。

在 SQL 语句中直接书写的字符串、日期或者数字等称为常数 。常数的书写方式:

  • 字符串:需要使用单引号(') 将字符串括起来,用来标识这是一个字符串,例如 'abc'​。
  • 日期的:也需要使用单引号将其括起来。日期的格式有很多种('26 Jan 2010'​ 或者 '10/01/26'​ 等),这里统一使用 '2010-01-26'​ 这种 '年 -月 - 日'​ 的格式。
  • 数字的:不需要使用任何符号标识,直接写成 1000 这样的数字即可,无需加注单引号(否则会被认为是字符串了)

‍

‍

# 单词需要用半角空格或者换行来分隔

SQL 语句的单词之间需使用半角空格或换行符来进行分隔。如下这种未加分隔的语句会发生错误 ,无法正常执行。

  • CREATETABLE Product
  • CREATE TABLEProduct

但是不能使用全角空格作为单词的分隔符,否则会发生错误,出现无法预期的结果。

‍

# 命名规则

在 RDBMS 中,对于数据库名,表名和列名的命名是有规则的,不能乱命名:

  • 只能使用英文字母、数字、下划线(_​)作为数据库、表和列的名称 。其他符号不能出现在名字中,例如 -、$ 、# 、?​
  • 名称必须以半角英文字母开头
  • 名字不能重复。不能创建两个名字相同的数据库,在同一个数据库中不能创建两个相同名称的表,在同一个表中也不能创建两个名称相同的列

‍

# 换行符

SQL 语句使用换行符或者半角空格来分隔单词,在任何位置进行分隔都可以,即使像下面这样通篇都是换行符也不会影响 SQL 语句的执行:

create
database 
test2;;
1
2
3

‍

但是这样可读性很差。一般来说一个关键字占一行即可。

注意,空行不能用来分隔,这样会导致错误:

create

database 
test2;;
1
2
3
4

‍

‍

(完)

上次更新: 2024/12/4 21:15:24
数据库的管理
表的管理

← 数据库的管理 表的管理→

最近更新
01
2025 年 2 月记
02-28
02
最全面的浏览器教程-完结撒花
02-16
03
这个工具可以轻松搞到你的浏览器账户密码!
02-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式