SQL 是结构化查询语言(Structured Query Language)的简称,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
1.常见的数据库与分类
市面上的数据库有很多种,最常见的数据库有如下几个:
- MySQL 数据库(目前使用最广泛、流行度最高的开源免费数据库;Community + Enterprise)
- Oracle 数据库(收费)
- SQL Server 数据库(收费)
- Mongodb 数据库(Community + Enterprise)
其中,MySQL、Oracle、SQL Server 属于传统型数据库(又叫做:关系型数据库 或 SQL 数据库),这三者的设计理念相同,用法比较类似,传统型数据库的数据组织结构,与 Excel 中数据的组织结构比较类似,因此,我们可以对比着 Excel 来了解和学习传统型数据库的数据组织结构。
而 Mongodb 属于新型数据库(又叫做:非关系型数据库 或 NoSQL 数据库),它在一定程度上弥补了传统型数据库的缺陷。
2.传统型数据库的数据组织结构
在传统型数据库中,数据的组织结构分为数据库(database)、数据表(table)、数据行(row)、字段(field)这 4 大部分组成。
- 数据库类似于 Excel 的工作簿
- 数据表类似于 Excel 的工作表
- 数据行类似于 Excel 的每一行数据
- 字段类似于 Excel 的列
- 每个字段都有对应的数据类型
3.安装并配置MySQL
作为初学者来说,只需要安装 MySQL Server 和 MySQL Workbench 这两个软件,就能满足开发的需要了。
-
**MySQL Server:**专门用来提供数据存储和服务的软件。
-
**MySQL Workbench:**可视化的 MySQL 管理工具,通过它,可以方便的操作存储在 MySQL Server 中的数据
MySQL Workbench主界面组成部分:
4.创建数据表
DataType 数据类型:
- int 整数
- varchar(len) 字符串
- tinyint(1) 布尔值
字段的特殊标识:
- PK(Primary Key)主键、唯一标识
- NN(Not Null)值不允许为空
- UQ(Unique)值唯一
- AI(Auto Increment)值自动增长
5.SQL 的学习目标
重点掌握如何使用 SQL 从数据表中:
查询数据(select) 、插入数据(insert into) 、更新数据(update) 、删除数据(delete);
额外需要掌握的 4 种 SQL 语法:
- where 条件
- and 和 or 运算符
- order by 排序
- count(*) 函数
6.SQL常用语句
1.SELECT 语句
SELECT 语句用于从表中查询数据。执行的结果被存储在一个结果表中(称为结果集)。语法格式如下:
-- 从FROM 指定的[表中],查询【所有的】数据 ,* 表示【所有列】;
//SELECT * FROM 表名称
SELECT * FROM users
-- 从 FROM 指定的【表中】,查询出指定 列名称(字段)的数据。
-- SELECT 列名称 FROM 表名称
SELECT username,password FROM users //选取username,password列的数据
2.INSERT INTO 语句
INSERT INTO 语句用于向数据表中插入新的数据行,语法格式如下:
-- 1.语法解读:向指定的表中,插入如下几列数据,列的值通过values来指定
-- 注意:列(字段)和值要一一对应,多个列和值之间用英文逗号分隔。
INSERT INTO table_name(key1,key2) values(val1,val2)
-- 向 users 表中,插入一条 username 为 tony stark,password 为 098123 的用户数据,示例如下:
INSERT INTO users(username,password) values('tony stark','098123')
3.Update 语句
Update 语句用于修改表中的数据。语法格式如下:
-- 1.用UPDATE 指定要更新哪个表中的数据
-- 2.用SET 指定列对应的新值,多个字段用逗号分隔开。
-- 3.用 WHERE 指定更新条件
UPDATE 表名称 SET 列名称= 新值 WHERE 列名称 = 某值
-- 例如:更新某一行中的一个列 把 users 表中 id 为 9 的用户密码,更新为 888888。
UPDATE users SET password = 888888 WHERE id = 9;
-- 更新一行多列(字段)
UPDATE users SET password = 888888,status=1 WHERE id = 4;
4.DELETE语句
DELETE 语句用于删除表中的行。语法格式如下:
-- 从指定的表中,根据WHERE 条件 ,删除对应的数据行
DELETE FROM users WHERE 列名称 = 值;
5.额外需要掌握的 4 种 SQL 语法:
-
WHERE语句
WHERE 子句用于限定选择的标准。在 SELECT、UPDATE、DELETE 语句中,皆可使用 WHERE 子句来限定选择的标准。
-- 更新
UPDATE 表名称 SET 列名称 = 值 WHERE 列 运算符 值;
-- 删除
DELETE FROM 表名称 WHERE 列 运算符 值;
-- 查询
select 列名称 from 表名称 WHERE 列 运算符 值;
可在 WHERE 子句中使用的运算符:
- = 等于
- <> 不等于
- > 大于
- < 小于
- >= 大于等于
- <= 小于等于
- BETWEEN 在某个范围内
- LIKE 搜索某种模式
例如:
-- 1.查询status 为1 的所有用户
SELECT * FROM users WHERE status =1;
-- 1.查询id 大于2 的所有用户
SELECT * FROM users WHERE id >2;
-- 1.查询username 不等于 admin 的所有用户
SELECT * FROM users WHERE username <>'admin';
-
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 * FROM users WHERE status=0 AND id <3; -- OR 使用 OR 来显示所有 status 为 1,或者 username 为 zs 的用户: SELECT * FROM users WHERE status=1 OR username = 'zs'; -
order by 排序
- ORDER BY 语句用于根据指定的列对结果集进行排序。
- ORDER BY 语句默认按照升序对记录进行排序。
- 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。
-- 以下两条sql 语句是等价的 -- 因为 ORDER BY 默认进行升序 -- ASC 关键字代表升序排序 SELECT * FROM users ORDER BY status; SELECT * FROM users ORDER BY status ASC; -- 降序 SELECT * FROM users ORDER BY staus desc; -- 多重排序 -- 先按照 status 字段进行降序排序,再按照 username 的字母顺序,进行升序排序,示例如下: SELECT * FROM users ORDER BY staus desc,username ASC; -
count(*) 函数
COUNT(*) 函数用于返回查询结果的总数据条数,语法格式如下:
SELECT COUNT(*) FROM 表名称
-- 查询 users 表中 status 为 0 的总数据条数:
SELECT COUNT(*) FROM users WHERE status = 0
-- AS 设置别名
SELECT count(*) AS total FROM users WHERE status = 0;