一、MySQL Workbench 管理数据库
1. 创建数据库
2. 创建数据表
点击要添加表的数据库,选中 table, 鼠标右键选择 create Table.
往数据表中创建字段时, 有一个 DataType 数据类型,它的含义如下:
- init 整数
- varchar(len)字符串
- tinyint(1)布尔值
字段的特殊标识:
- PK(Primary Key) 主键、唯一标识
- NN(Not Null)值不允许为空
- UQ(Unique)值唯一
- AI(Auto Increment) 值会自动增长
二、使用 SQL 管理数据库
1. 什么是 SQL
SQL(英文全称:Structured Query Language) 是 结构化查询语言,专门用来 访问和处理数据库 的编程语言。能够让我们 以编码的形式,操作数据库里面的数据。
三个关键点:
- SQL 是一门 数据库编程语言
- 使用 SQL 语言编写出来的代码, 叫做 SQL 语句
- SQL 语言只能在 关系型数据库中使用(例如 MySQL、Oracle、SQL Server)。非关系型数据库(例如 Mongodb) 不支持 SQL 语言。
2. SQL 能做什么
- 从数据库 查询数据
- 向数据库中 插入新的数据
- 更新数据库中的数据
- 从数据库中删除数据
- 可以创建新数据库
- 可在数据库中创建新表
- 可在数据库中创建存储过程、视图
- etc.....
3. SQL 的 SELECT 语句
SELECT 语句用于 从表中查询数据,执行的结果被存储在一个 结果表 中(称为 结果集)。格式语法如下:
-- 这是注释
-- 从 FROM 指定的【表中】,查询出【所有的】数据。* 表示【所有列】
SELECT * FROM 表名称
-- 从 FROM 指定的【表中】,查询出指定的 【列名称字段】的数据。
SELECT 列名称 FROM 表名称
注意:SQL 语句中的关键字对 大小写不敏感。 SELECT 等效于 select, FROM 等效于 from.
希望从 user 表中选择所有的列,可以使用 符号 * 取代 列 的名称
运用如下:
-- 从 my_db_01 这个数据库中的 user 表中查询出所有的数据
SELECT * FROM my_db_01.user;
-- 从 my_db_01 这个数据库中的 user 表中查询出 username, password 这两列的数据
select username, password from my_db_01.user
运用截图:
4. SQL 的 INSERT INTO 语句
INSERT INTO 语句用于 向数据表中 插入新的数据行,语法如下:
--语法解读:向指定的表中,插入如下几列数据,列的值通过 values 一 一指定
-- 注意:列和值要一 一对应,多个列和多个值之间,要使用英文的逗号分隔
INSERT INRO 表名称(列1,列2,...) VALUES(值1,值2,...)
运用如下: 向 user 表中插入一条 username 为 xxl, password 为 528520 的数据
INSERT INTO my_db_01.user (username, password) VALUES ('xxl', '528520')
运用截图:
5. SQL 的 UPDATE 语句
Update 语句用于 修改表中的数据。语法格式如下:
-- 语法解读:
-- 1. 用 UPDATE 指定要更新哪个表中的数据
-- 2. 用 SET 指定列对应的新值
-- 3. 用 WHERE 指定更新的条件
UPDARE 表名称 SET 列名称=新值 WHERE 列名称=某值
运用如下: 把 id 为 5 的用户密码 password 更新 为 88888
update my_db_01.user set password = '88888' where id = 5;
运用截图:
还有其他: UPDATE: 更新某一行中的若干列
例如:把 user 表中 id 为 5 的 用户密码 和 用户状态,分别更新为 admin 和 1
update my_db_01.user set password = 'admin',status='1' where id = 5
结果如下:
6. SQL 的 DELETE 语句
DELETE 语句用于删除表中的行,语法格式如下:
-- 语法解读
-- 从指定的表中,根据 WHERE 条件, 删除对应的数据行
DELETE FROM 表名称 WHERE 列名称=值
运用如下:
delete from my_db_01.user where id=1
运用截图:
7. SQL 的 WHERE 子句
a. SQL 的 WHERE 子句
WHERE 子句用于 限定选择的标准。在 SELECT、UPDATE、DELETE 语句中,皆可使用 WHERE 子句来限定选择的标准。
--查询语句中的 WHERE 条件
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
select password from user where id=2
-- 更新语句中的 WHERE 条件
UPDATE 表名称 SET 列=新值 WHERE 列 运算值 值
update user set password='xxl123' where id=3
--删除语句中的 WHERE 条件
DELETE FROM 表名称 WHERE 列 运算符 值
delete from user where id=2
b. 可在 WHERE 子句中使用的运算符
下面的运算符可在 WHERE 子句中使用,用来限定选择的标准:
| 操作符 | 描述 |
|---|---|
| = | 等于 |
| <> | 不等于 |
| 大于 | |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| BETWEEN | 在某个范围内 |
| LIKE | 搜索某种模式 |
| 注意: | 在某些版本的 SQL 中,操作符<> 可以写为 !== |
可以通过 WHERE 子句来限定 SELECT 的查询条件:
-- 查询 stastus 为 1 的所有用户
SELECT * FROM users WHERE status=1
-- 查询 id 大于 2 的所有用户
SELECT * FROM users WHERE id >2
-- 查询 username 不等于 admin 的所有用户
SELECT * FROM users WHERE username<>'admin'
8. SQL 的 AND 和 OR 运算符
AND 和 OR 可 在WHERE 子语句中 把两个或多个条件结合起来。
AND 表示 必须同时满足多个条件,相当于 JS 中的 && 运算符,例如 if(a !== 10 && a !== 20)
OR 表示 只要满足任意一个条件即可,相当于 JS 中的 || 运算符,例如 if( a!==10 || a!==20 )
运用如下:
-- 查出所有 id 大于2 并且 status 的值 为 1 的数据
select * from my_db_01.user where id > 2 and status=1;
-- 查出所有 id 大于2 或者 status 的值 为 1 的数据
select * from my_db_01.user where id > 2 or status=1;
9. SQL 的 ORDER BY 子句
ORDER BY 语句中 用于根据指定的列 对结果进行排序。
ORDER BY 语句 默认 按照 升序 对记录进行排序, 默认省略 asc 关键字。
如果想要按照 降序 对记录进行排序,可以使用 DESC 关键字
a. 升序排序
对于 user 表中数据,按照 status 字段进行升序排序,示例如下:
select * from my_db_01.user order by id ;
-- 等价于
select * from my_db_01.user order by id asc;
b. 降序排序
对于 user 表中的数据,按照 id 字段进行降序排序,示例如下 :
select * from my_db_01.user order by id desc ;
c. 多重排序
对 user 表中的数据, 先按照 status 字段进行 降序排序, 再按照 username 的字母顺序,进行升序排序,示例如下 :
select * from my_db_01.user order by status desc,username asc ;
10. SQL 的 COUNT(*)函数
COUNT(*) 函数用于返回 查询结果的 总数据条数,语法如下
SELECT COUNT(*) FROM 表名称
示例:查询出 user 表中 id 大于2 的数据总条数
select count(*) from my_db_01.user where id>2
截图如下:
11. 使用 AS 为列设置别名
如果想要给查询出来的列名称设置别名,可以使用 AS 关键字,示例如下:
示例 1:把 id 大于2 的数据查询出来数据的总条数 重新命名为 total
select count(*) as total from my_db_01.user where id>2
截图如下:
示例 2:把 id 大于2 的数据查询出来数据的 username 重新命名为 uname, password 重新命名为 upwd
select username as uname, password as upwd from my_db_01.user where id>2