文章目录
前言
#博学谷IT学技术支持#
最近成功报名博学谷线上课程,先把前面的知识慢慢梳理一下。MYSQL的语法知识还是很重要的。
一、MYSQL基础语法
1、SQL分类
DDL(Data Definition Language) : 数据定义语言,用来定义数据库对象:数据库,表,列等。
DDL简单理解就是用来操作数据库,表等。
DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改。
DML简单理解就对表中数据进行增删改。
DQL(Data Query Language) 数据查询语言,用来查询数据库中表的记录(数据)
DQL简单理解就是对数据进行查询操作。从数据库表中查询到我们想要的数据。
DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
DML简单理解就是对数据库进行权限控制。比如我让某一个数据库表只能让某一个用户进行操作等。
日常操作需要重点掌握DML和DQL
2、数据类型
MySQL 支持多种类型,可以分为三类:数值、日期和字符串。
数值:tinyint、int、double
日期:date、datetime
字符串:char、varchar
3、DML(增删改)
DML主要是对数据进行增(insert)删(delete)改(update)操作。
添加数据:INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
修改数据:UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;
删除数据:DELETE FROM 表名 [WHERE 条件] ;
4、DQL
完整语法:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后条件
ORDER BY
排序字段
LIMIT
分页限定
4.1基础查询
SELECT 字段列表 FROM 表名;
4.2条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
4.3排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
上述语句中的排序方式有两种,分别是:
- ASC : 升序排列 (默认值)
- DESC : 降序排列
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
4.4聚合函数
聚合函数分类
SELECT 聚合函数名(列名) FROM 表;
4.5分组查询
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
注意:WHERE是 分组前条件限定
HAVING 是分组后条件过滤
4.6分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
起始索引 = (当前页码 - 1) * 每页显示的条数
二、MYSQL高级语法
1、约束
-
约束是作用于表中列上的规则,用于限制加入表的数据
-
约束的存在保证了数据库中数据的正确性、有效性和完整性
添加约束可以在添加数据的时候就限制不正确的数据,继而保障数据的完整性。
非空约束: 关键字是 NOT NULL
唯一约束: 关键字是 UNIQUE
主键约束: 关键字是 PRIMARY KEY
检查约束: 关键字是 CHECK
默认约束: 关键字是 DEFAULT
外键约束: 关键字是 FOREIGN KEY
2、多表查询
多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。
2.1内连接查询
-- 隐式内连接
SELECT 字段列表 FROM 表1,表2… WHERE 条件;
-- 显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
2.2外连接查询
-- 左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
-- 右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
左外连接:相当于查询A表所有数据和交集部分数据
右外连接:相当于查询B表所有数据和交集部分数据
2.3子查询
查询中嵌套查询,称嵌套查询为子查询
例如:`select * from emp where salary > (select salary from emp where name = ‘猪八戒’);
- 子查询根据查询结果不同,作用不同
- 子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断
- 子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断
- 子查询语句结果是多行多列,子查询语句作为虚拟表