从 01 开始 从 01 开始
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • MySQL
  • 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 基础
  • Windows 使用技巧
  • 输入法
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 微信
  • 各大平台
  • RSS
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 漫画

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

    • 三国杀
  • 关于本站
  • 关于我
  • 网站动态
  • 友人帐
  • 打赏
  • 如何搭建一个博客
  • 关于邮件服务器
  • 本站的分享资料
  • 年度总结

    • 2022 年度总结
    • 2023 年度总结
  • 文章分类
  • 文章标签
  • 文章归档

PeterJXL

首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • MySQL
  • 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 基础
  • Windows 使用技巧
  • 输入法
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 微信
  • 各大平台
  • RSS
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 漫画

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

    • 三国杀
  • 关于本站
  • 关于我
  • 网站动态
  • 友人帐
  • 打赏
  • 如何搭建一个博客
  • 关于邮件服务器
  • 本站的分享资料
  • 年度总结

    • 2022 年度总结
    • 2023 年度总结
  • 文章分类
  • 文章标签
  • 文章归档
  • 计算机历史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

  • Git

  • 计算机小知识

  • MySQL

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

SQL概述

# 45.SQL概述

‍

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

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

‍

‍

# 什么是SQL

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

国际标准化组织(ISO)为 SQL 制定了相应的标准,以此为基准的SQL 称为标准 SQL。在该标准出来之前,各个DBMS各自为政,对于同一个功能,可能写法不同。

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

打个比方:如果一个数据库使用create 作为创建数据库的单词,而另一个数据库使用的是add这个单词。这就是标准不统一造成的。那么两者之间就不能使用同一个SQL进行操作数据库。

‍

‍

扩展:标准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/1/21 22:40:12
数据库的管理
表的管理

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

Theme by Vdoing | Copyright © 2022-2024 | 粤 ICP 备 2022067627 号-1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式