1、SQL概述
1.1 SQL背景知识
SQL(Structured Query Language,结构化查询语言) 是一种专门用于管理和操作关系型数据库的标准编程语言。它允许用户执行各种数据库操作,包括数据查询、插入、更新、删除等。
- 无论是前端工程师还是后端算法工程师,都必不可免要和数据打交道,都需要了解如何又快又准的获取想要的数据,相较于其他语言而言,SQL语言的半衰期非常长。
- SQL由IBM在上世纪70年代左右开发出来,后由美国国家标准局开始着手制定SQL标准,先后出现SQL-86、SQL-89、SQL-92、SQL-99等标准。
- 不同数据库生产商都支持SQL语句,但都有其特有的内容。

1.2 SQL分类
SQL语言在功能上主要分为以下三个大类:
- DDL(数据定义语言) ,这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。主要的语句关键字包括 CREATE、ALTER、DROP、RENAME等。
- DML(数据操作语言) ,用于添加、删除、更新和查询数据库记录,并检查数据的完整性。主要的语句关键字包括 INSERT、DELETE、UPDATE、SELECT等。
- DCL(数据控制语言) ,用于定义数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等。
2、SQL语言的规则和规范
2.1 基本规则
- SQL 可以写在一行或者多行,为了提高可读性,语句分行写,必要时使用缩进;
- 每条命令以 ; 或 \g 或 \G 结束;
- 关键字不能被缩写也不能分行;
- 所有输入状态都得是英文半角输入,并且括号、引号成对存在;
- 字符串、日期、时间类型的数据可以使用单引号(' ')表示;
- 列的别名,尽量使用双引号(" "),并且不建议省略 as。
2.2 SQL大小写规范
- MySQL 在 Windows 环境下大小写不敏感;
- MySQL 在 Linux 环境下大小写敏感:数据库名、表名、表的别名、变量名是严格区分大小写的;关键字、函数名、列名(或字段名)、列的别名(字段的别名)忽略大小写。
2.3 注释
采用如下的格式方法进行注释操作:
sql
单行注释 :# 注释文字(MySQL特有方式)
单行注释 :-- 注释文字(--后面必须加一个空格)
多行注释 :/* 注释文字 */
2.4 数据导入指令
在命令行客户端登录 mysql ,使用 source指令导入:
sql
mysql> source d:\mysqldb.sql
导入新数据前:

导入后:

可以正常使用该数据库:

3、基本的 SELECT 语句
3.0 SELECT ...
语法:SELECT 1,2; # 没有其他子句

3.1 SELECT ... FROM
语法:SELECT 字段1,字段2 FROM 表

当选择字段用通配符 ' * ' 替换时,就会输出表中所有字段信息。
3.2 列的别名
列的别名顾名思义就是起一个"小名",重命名它。有三种方式可以实现:
(1)列名与别名中间加一个空格;
(2)列名与别名之间加一个关键字 AS (可省略);
(3)别名紧跟列名,但是别名使用双引号,这样的别名可以在其中包含空格或特殊字符。

3.3 去除重复行
- 默认情况下,查询会返回全部行,包括重复行。
示例:查找员工表中有哪些部门 id;

使用DISTINCT 关键字可以剔除重复行:

3.4 空值参与运算
- 所有运算符或列值遇到 null 值,运算的结果都是 null;
- 在 MySQL 中,空值不等价于空字符串。空值的长度是空,空字符串的长度是0;
- 在 MySQL 中,空值占用空间。
3.5 着重号
如果表名已经命名为了关键字、保留字等,查询时会出现错误,此时使用着重号( ` `)标记一下表名即可正常使用。

在第四行中,order 的颜色明显和关键字一样,会出现错误。
3.6 查询常数
- 这里的常数不是单指阿拉伯数字,而是指的是常数列。
- SELECT 'CSDN' AS '公司' ,last_name FROM employees;
- 这样会给每一个查询结果都匹配上一个常数。

4、显示表结构
- 使用 DESCRIBE 或 DESC 命令,表示表的结构;

5、过滤数据
- 使用 WHERE 子句,将不满足条件的行都过滤;
- WHERE 子句必须紧跟 FROM 子句

