本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。
根据《SQL必知必会(第5版)》整理 ,由于不同的数据库管理系统对SQL标准略有不同,故撰文以汇之,此文以MySQL为标准,少量补充SQL Server(别问为什么,问就是因为考试考SQL Sever)。
数据库基础
数据库(datebase):保存有组织的数据的容器
数据库软件称为数据库管理系统(DBMS)
个人认为,数据库的结构可以这样认为:库 -> 表 -> 列(column)/ 行(row) -> 项
通表同类型,同一数据库中表名是唯一的
行又称记录
主键为一张表的标识,由一列或者几列组成,每行都必须有一个主键值,每行的主键值都是唯一的
虽然SQL语言不区分大小写,但一般关键字都大写
检索数据
多条SQL语句必须以“;”分隔,USE MySQL
语句中的USE表示使用某个库
SELECT语句
SELECT选择列,例如
1 | SELECT prod_name |
SELECT 可以选择多个列,各列之间用‘’,’‘分隔
1 | SELECT prod_name,prod_id, pord_price |
检索所有列,用“*”
1 | SELECT * |
检索不同的值
如果想去除查询结果中重复出现的记录,可以使用DISTINCT
关键字,关键字必须在列名之前。DISTINCT关键字作用与所有列,不仅仅是跟在其后的列。
1 | SELECT DISTINCT prod_name |
限定结果
在MySQL 中想要限定结果数量,可以使用LIMIT
关键字
1 | SELECT prod_name |
SQL Server使用的是TOP
1 | SELECT TOP 5 prod_name |
1 |
|
数据库中被检索的第一行是第0行,类似于数组的标号
1 | SELECT prod_name |
注释
1 | /*SELECT prod_name |
1 | #SELECT prod_name |
1 | -- SELECT prod_name |
排序检索数据
排序数据
使用ORDER BY
子句,这个子句是SELECT
中最后的一条子句
1 | SELECT prod_name |
按多个列排序
1 | SELECT prod_name, prod_price |
指定排序方式
使用DESCEND
关键字来降序
1 | SELECT prod_name, prod_price |
过滤数据
使用WHERE子句
ORDER BY
位于WHERE
之后
1 | SELECT prod_name, prod_price |
WHERE子句操作符
BETWEEN
在指定的两个值之间
IS NULL
为NULL值
字符串用单引号(’ ‘)限定
范围值检查
使用BETWEEN AND
关键字
1 | SELECT prod_price |
空值检查
1 | SELECT prod_name |
高级数据过滤
组合WHERE子句
使用AND
和OR
1 | SELECT prod_name, prod_id, prod_price |
1 | SELECT prod_name, prod_id, prod_price |
AND
优先级高于OR
IN操作符
IN
相当于OR
1 | SELECT prod_name, prod_id, prod_price |
NOT操作符
在WHERE
子句中用来否定其后条件的关键字
1 | SELECT prod_name |
用通配符进行过滤
LIKE操作符
某词末尾加LIKE
, 表示开头
1 | SELECT prod_name, prod_id |
加在首位表示含有
1 | SELECT prod_name, prod_id |
加在中间,%
匹配0-n个字符
1 | SELECT prod_name, prod_id |
_通配符
_
匹配单个字符,用法与%
类似
本文作者:Mosquito
本文链接: http://example.com/2022/03/05/SQL%E8%AF%AD%E8%A8%80%E7%AC%94%E8%AE%B0/
Mosquito 天使之吻手打
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。