前端应该知道的MySQL | 青训营笔记

113 阅读5分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

NodeJS 的出现,意味着前端人员也可以书写部分简单的后端代码,跟后端打交道,就不得不了解数据库的概念,以下列举的只是简单的增删改查,而且还可能会出现安全问题。虽然现在ORM框架也有很多,但我觉得应该从基础学起。

SQL 的 SELECT 语句

语法

SELECT 语句用于从表中查询数据。执行的结果被存储在一个结果表中(称为结果表)。语法格式如下:

-- 这是注释
-- 从 FROM 指定的【表中】,查询出【所有的】数据。*表示【所有例】
SELECT * FROM 表名称
​
-- 从 FROM 指定的【表中】,查询出指定 列名称(字段) 的数据
SELECT 列名称 FROM 表名称

注意:SQL 语句中的关键词对大小写不明感。SELECT 等效于 select ,FROM 等效于 from。

SELECT* 示例

我们希望从 users 表中选取所有的列,可以使用符号 * 取代列的名称

-- 注意:星号 * 是选取所有列的快捷方式
SELECT * FROM users

SELECT 列名称 示例

如果获取名为"username"和"password"的列的内容(从名为"users"的数据库表),请使用下面的 SELECT 语句

-- 注意:多个列之间,使用英文逗号进行分隔
SELECT username, password FROM users

SQL 的 INSERT INTO 语句

语法

INSERT INTO 语句用于向数据表中插入新的数据行,语法格式如下:

-- 语法解读:向指定的表中,插入如下几列数据,列的值通过 values ——指定
-- 注意:列和值要意义对应,多个列和多个值之间,使用英文的逗号分隔
INSERT INTO table_name(列1,列2,...) VALUE(值1,值2,....)

INSERT INTO 示例

向 user 表中,插入一条 username 为 tony stark,password 为 098123 的用户数据,示例如下:

INSERT INTO users (username,password) values ('tonystark','098123')

SQL 的 UPDATE 语句

语法

Update 语句用于修改表中的数据。语法格式如下:

-- 语法解读
-- 1.用 UPDATE 指定要更新哪个表中的数据
-- 2.用 SET 指定列对应的新值
-- 3.用 HWERE 制定更新的条件
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

UPDATE 示例 - 更新某一行中的一个列

把 users 表中 id 为 7 的用户名吗,更新为 888888。示例代码如下:

UPDATE users SET password='888888' WHERE id=7

UPDATE 示例 - 更新某一行中的若干行

把 users 表中 id 为2 的用户密码和用户状态,分别更新为 admin123 和 1。示例代码如下:

-- 多个被更新的列之间,使用英文逗号进行分割
-- WHERE 后面跟着的是更新的条件
-- 注意:初学者经常忘记提供更新的 WHERE 条件。
--          这样会导致整张表的数据都被更新,一定要慎重!
UPDATE users SET password='admin123',status=1 WHERE id=2

SQL 的 DELETE 语句

语法

DELETE 语句用于删除表中的行。数据格式如下:

-- 数据解读:
-- 从指定的表中,根据 WHERE 条件,删除对应的数据行
DELETE FROM 表名称 WHERE 列名称=

DELETE 示例

从 user 表中,删除 id 为 4 的用户,示例如下:

-- 注意:对初学者来学,经常忘记提供 WHERE 条件,
--      从而导致误删整张表的数据!一定要慎重!
DELETE FROM users WHERE id=4

SQL 的 WHERE 子句

语法

WHERE 字句用于限定选择的标准。在 SELECT、UPDATE、DELETE 语句中,皆可使用 WHERE 字句来限定选择的标准。

-- 查询语句中的 WHERE 条件
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
-- 更新语句中的 WHERE 条件
UPDATE 列名称 SET=新值 WHERE 列 运算符 值
-- 删除语句中的 WHERE 条件
DELETE FROM 表名称 WHERE 列 运算符 值

可在 WHERE 子句中使用的运算符

下面的运算符可在 WHERE 子句中使用,用来限定选择的标准:

操作符描述
=等于
<>不等于
大于
<小于
>=大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式

注意:某些版本的 SQL 中,操作符 <> 可以写成 !=

WHERE 子句示例

可以通过 WHERE 子句来限定 SELECT 的查询条件:

-- 查询 status 为 1 的所有用户
SELECT * FROM users WHERE status=1
-- 查询 id 大于 2 的所有用户
SELECT * FROM users WHERE status>2
-- 查询 username 不等于 admin 的所有用户
SELECT * FROM users WHERE username<>'admin'

SQL 的 AND 和 OR 运算符

语法

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来

AND 表示必须满足多个条件,相当于 JavaScript 中的 && 运算符,例如 if(a!=10 && a!=20)

OR 表示只要满足任意一个条件即可,相当于 JavaScript 中的 || 运算符,例如 if(a!===10 || a!=20)

AND 运算符示例

使用 AND 来显示所有 status 为 0,并且 id<3 的用户:

SELECT * FORM users WHERE status=0 AND id<3

OR 运算符示例

使用 OR 来显示所有的 status 为1.或者 username 为 zs 的用户:

SELECT * FROM users WHERE status=1 OR username='zs'

SQL 的 ORDER BY 子句

语法

ORDER BY 语句用于根据指定的列对结果进行排序。

ORDER BY 语句默认按照升序对记录进行排序。

如果您希望展昭降序对记录进行排序,可以使用 DESC 关键字。

ORDER BY 子句 - 升序排序

对 users 表中的数据,按照 status 字段进行升序排序,示例如下:

-- 注意:如下两条 SQL 语句是等价的,
--      因为 ORDER BY 默认进行升序排序:
--      其中,ASC 关键字代表升序排序
SELECT * FROM users ORDER BY status
SELECT * FROM users ORDER By status ASC

ORDER BY 子句 - 降序排序

对 users 表中的数据,按照 id 字段进行降序排序,示例如下:

-- 注意:DESC 代表降序排序
SELECT * FROM users ORDER BY id DESC

ORDER BY 子句 - 多重排序

对 users 表中的数据,先按照 status 字段进行降序排序,再按照 username 的字母排序,进行升序排序,示例如下:

SELECT * FROM users ORDER BY status DESC,username ASC

SQL 的 COUNT(*) 函数

语法

COUNT(*) 函数用于返回查询结果的总数据条数,语法格式如下:

SELECT COUNT(*) FROM 表名称

COUNT(*) 示例

查询 users 表中 status 为 0 的总数据条数:

SELECT COUNT(*) FORM users WHERE status=0

使用 AS 为列设置别名

如果希望给查询出来的列名称设置别名,可以使用 AS 关键字,示例如下: