SQL 教程
什么是 SQL?
SQL 是用于访问和处理数据库的标准的计算机语言。
简单地说,SQL 就是访问和处理关系数据库的计算机标准语言。也就是说,无论用什么编程语言(Java、Python、C++……,当然也包括我们大 Node.js)编写程序,只要涉及到操作关系数据库,比如,一个电商网站需要把用户和商品信息存入数据库,或者一个手机游戏需要把用户的道具、通关信息存入数据库,都必须通过 SQL 来完成。
所以,现代程序离不开关系数据库,要使用关系数据库就必须掌握 SQL。
在本教程中,你将学到关系数据库的基本概念,如何使用 SQL 操作数据库,以及一种最流行的开源数据库 MySQL 的基本安装和使用方法。
NoSQL
你可能还听说过 NoSQL 数据库,也就是非 SQL 的数据库,包括 MongoDB、Cassandra、Dynamo 等等,它们都不是关系数据库。有很多人鼓吹现代 Web 程序已经无需关系数据库了,只需要使用 NoSQL 就可以。但事实上,SQL 数据库从始至终从未被取代过。回顾一下 NoSQL 的发展历程:
1970: NoSQL = We have no SQL
1980: NoSQL = Know SQL
2000: NoSQL = No SQL!
2005: NoSQL = Not only SQL
2013: NoSQL = No, SQL!
今天,SQL 数据库仍然承担了各种应用程序的核心数据存储,而 NoSQL 数据库作为 SQL 数据库的补充,两者不再是二选一的问题,而是主从关系。所以,无论使用哪种编程语言,无论是 Web 开发、游戏开发还是手机开发,掌握 SQL,是所有软件开发人员所必须的。
不要再犹豫了!从现在开始,坚持一周,拿下 SQL!
语法
SQL 语言分成了几种要素,包括:
- 子句,是语句和查询的组成成分。(在某些情况下,这些都是可选的。)[14]
- 表达式,可以产生任何标量值,或由列和行的数据库表
- 谓词,给需要评估的 SQL 三值逻辑(3VL)(true/false/unknown)或布尔真值指定条件,并限制语句和查询的效果,或改变程序流程。
- 查询,基于特定条件检索数据。这是 SQL 的一个重要组成部分。
- 语句,可以持久地影响纲要和数据,也可以控制数据库事务、程序流程、连接、会话或诊断。
- SQL 语句也包括分号(";")语句终结符。尽管并不是每个平台都必需,但它是作为 SQL 语法的标准部分定义的。
- 无意义的空白在 SQL 语句和查询中一般会被忽略,更容易格式化 SQL 代码便于阅读。
语言特点
SQL 是高级的非过程化编程语言,它允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解其具体的数据存放方式。而它的界面,能使具有底层结构完全不同的数据库系统和不同数据库之间,使用相同的 SQL 作为数据的输入与管理。它以记录项目〔records〕的合集(set)〔项集,record set〕作为操纵对象,所有 SQL 语句接受项集作为输入,回提交的项集作为输出,这种项集特性允许一条 SQL 语句的输出作为另一条 SQL 语句的输入,所以 SQL 语句可以嵌套,这使它拥有极大的灵活性和强大的功能。在多数情况下,在其他编程语言中需要用一大段程序才可实践的一个单独事件,而其在 SQL 上只需要一个语句就可以被表达出来。这也意味着用 SQL 可以写出非常复杂的语句,在不特别考虑性能下。
SQL 同时也是数据库文件格式的扩展名。
SQL 包含四个部分:
- 数据定义语言
- 数据操纵语言
- 数据控制语言
- 事务控制语言
SQL 函数
函数 | 描述 |
---|---|
AVG | 平均值 |
COUNT | 计数(不含 Null) |
FIRST | 第一个记录的值 |
MAX | 最大值 |
MIN | 最小值 |
STDEV | 样本标准差 |
STDEVP | 总体标准差 |
SUM | 求和 |
VAR | 样本方差 |
VARP | 总体方差 |
UCASE | 转化为全大写字母 |
LCASE | 转化为全小写字母 |
MID | 取中值 |
LEN | 计算字符串长度 |
INSTR | 获得子字符串在母字符串的起始位置 |
LEFT | 取字符串左边子串 |
RIGHT | 取字符串右边子串 |
ROUND | 数值四舍五入取整 |
MOD | 取余 |
NOW | 获得当前时间的值 |
FORMAT | 字符串格式化 |
DATEDIFF | 获得两个时间的差值 |
SQL 速查手册
本站提供一个 SQL 速查手册,您可以通过SQL速查手册来快速找到对应的SQL语句,直接复制即可
SQL 数据类型
介绍 Microsoft Access、MySQL 和 SQL Server 的数据类型和范围。