12. MySQL 中的 sql 语句

381 阅读5分钟

一、MySQL Workbench 管理数据库

1. 创建数据库

image.png

2. 创建数据表

image.png

点击要添加表的数据库,选中 table, 鼠标右键选择 create Table.

往数据表中创建字段时, 有一个 DataType 数据类型,它的含义如下:

  1. init 整数
  2. varchar(len)字符串
  3. tinyint(1)布尔值

字段的特殊标识:

  1. PK(Primary Key) 主键、唯一标识
  2. NN(Not Null)值不允许为空
  3. UQ(Unique)值唯一
  4. AI(Auto Increment) 值会自动增长

二、使用 SQL 管理数据库

1. 什么是 SQL

SQL(英文全称:Structured Query Language) 是 结构化查询语言,专门用来 访问和处理数据库 的编程语言。能够让我们 以编码的形式,操作数据库里面的数据

三个关键点:

  1. SQL 是一门 数据库编程语言
  2. 使用 SQL 语言编写出来的代码, 叫做 SQL 语句
  3. SQL 语言只能在 关系型数据库中使用(例如 MySQL、Oracle、SQL Server)。非关系型数据库(例如 Mongodb) 不支持 SQL 语言。

2. SQL 能做什么

  1. 从数据库 查询数据
  2. 向数据库中 插入新的数据
  3. 更新数据库中的数据
  4. 从数据库中删除数据
  5. 可以创建新数据库
  6. 可在数据库中创建新表
  7. 可在数据库中创建存储过程、视图
  8. 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

运用截图:

image.pngimage.png

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') 

运用截图:

image.png

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;

运用截图:

image.png

还有其他: UPDATE: 更新某一行中的若干列

例如:把 user 表中 id5用户密码用户状态,分别更新为 admin1

update my_db_01.user set password = 'admin',status='1' where id = 5

结果如下:

image.png

6. SQL 的 DELETE 语句

DELETE 语句用于删除表中的行,语法格式如下:

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

运用如下:

delete from my_db_01.user where id=1

运用截图:

image.png

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;
image.png

b. 降序排序

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

select * from my_db_01.user order by id desc ;
image.png

c. 多重排序

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

select * from my_db_01.user order by status desc,username asc ;
image.png

10. SQL 的 COUNT(*)函数

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

SELECT COUNT(*) FROM 表名称

示例:查询出 user 表中 id 大于2 的数据总条数

select count(*) from my_db_01.user where id>2

截图如下

image.png

11. 使用 AS 为列设置别名

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

示例 1:把 id 大于2 的数据查询出来数据的总条数 重新命名为 total

select count(*) as total from my_db_01.user where id>2

截图如下

image.png

示例 2:把 id 大于2 的数据查询出来数据的 username 重新命名为 uname, password 重新命名为 upwd

select username as uname, password as upwd from my_db_01.user where id>2

image.png