这是我参与「第五届青训营 」伴学笔记创作活动的第 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 关键字,示例如下: