1.插入数据 insert
向表中插入数据有三种方法
INSERT [ INTO ] 表名(字段名 , .....) VALUES(数据 , .....)
此方法可插入多条数据,但不可使用子查询。INSERT [ INTO ] 表名 SET 字段名 = 数据 || DEFAULT
此方法只能逐条添加数据,可以使用子查询。INSERT [ INTO ] 表名 字段名 , ..... SELECT.....
先了解,还未接触
2.更新(更改)数据 update
UPDATE 表名 SET 字段名 = 数据 [ WHERE 条件语句 ] , ....
UPDATE
可以按需求更改表数据
3.删除单表数据 delete
DELETE FROM 表名 [ WHERE 条件语句 ]
4.查询数据
- 字段查询:
SELECT 列名 , .... FROM 表名
- 条件查询:
SELECT 列名 , .... FROM 表名 WHERE 条件语句
- 分组查询( GROUP BY ):
SELECT 列名 , .... FROM 表名 GROUP BY 分组列名
(每个相同的值都会为一组) - 分组条件查询( HAVING ):
SELECT 列名 , .... FROM 表名 GROUP BY 分组列名 HAVING 条件语句
分组后再进行条件查询,下面试一下
上面将
user
表中的 age
分为了 七组
下面来给条件查询一下分组里面的 age
count(id) > 2
为 分组中出现 2
次以上的数据
5.对查询结果进行排序
查询语句 ORDER BY ASC | DESC
ASC 为正序排列,DESC 为倒序
上面语句使查询结果 按
id
的倒序排列
还可以使用其多层排序
上面语句可以解释为,先按
age
正序排列, 当多项 age
值相等时,再比较 id
的值来倒序排列
5.限制语句 LIMIT
LIMIT是一个条件限制语句
查询语句 LIMIT( 开始索引 , 结束索引 )
上面语句查询了
id
为 1 到 10 的表,使用 LIMIT
规定了它的索引以及结束的位置
注意,LIMIT
也是生效于查询后的表。
6. 子查询 subQuery
- 外查询( outer Query ):
SELECT * FROM 表名 列名
- 子查询:
SELECT * FROM 表名 列名 = ( SELECT * FROM 表名 列名 )
用括号中语句查询出来的条件,来查询第二张表。
括号中的 SELECT 语句为子查询
子查询中的外层查询可以是:
SELECT | GROUP BY | ORDER BY | LIMIT 或 Do
子查询的返回值:
子查询可以返回标量、一行、一列或子查询
上面的指令,在 user
表中将 prices
求平均数并保留两位小数。结果为 13.87
下面我们查询符合条件的选项 prices
上面操作可以使用子查询合并,更加方便
7. 子查询 ANY、 SOME 、ALL 关键字
当子查询的条件同时带有多条时,可以使用关键字来选取特定的值来查询
使用方法,直接使用关键字括号写入子查询即可 如下
- NOT IN : 当子查询中有多个值,并且需要判断外查询的值是否 包含 在子查询中时,可以使用
IN
来代替ANY
- IN: 当子查询中有多个值,并且需要判断外查询的值是否 不包含 在子查询中时,可以使用
NOT IN
代替!=
8.INNER JOIN关键字
INNER JOIN 用来合并表或者关联表,将两个表的交集合并或者关联起来
- INNER JOIN语法 :
SELECT 字段名 FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列
假设我们有两张表,Table A是左边的表,Table B是右边的表。
关联两个表如下
上面的意思为 修改 user 表的 province 为 province 的 id 值。
原本的 user表 如下
原本的 province 表如下
将 user 关联 province表 之后如下
可以看到 province 由省份变为了编号,这样可以加快 mysql 的查询效率
下面再来 使用 INNER JOIN
查询表数据
上面的两张表互相关联 user.cid 与 class 表 id 关联
上面的查询结果中也是只查询了 12 条数据,只查询了两张表中的交集部分
注意:
ON
关键字一般来设定连接条件WHERE
关键字用来结果集的过滤
还有其他几种合并表的方式,如下图(语法相同,只有关键字不同)
左外连接查询时,左表的所有数据都会被查询,而右表则不会被查询出来。
上面的查询结果,会将所有 u
表中的内容显示,而 c
表的内容不会全部显示(只显示二者的交集)
上面的结果,className 未被全部查询出来