目录
5.6 聚合函数对一组值进行运算,并返回单个值。也叫组合函数。
1 insert语句
1.1 一次插入一条
方法一:
insert 表名 values ('***','***',……)
eg:
mysql> insert student values(100,'白熊');
Query OK, 1 row affected (0.00 sec)
方法二:
insert 表名(列) values('***')
eg:
mysql> insert student(name) values('胖达');
Query OK, 1 row affected (0.00 sec)
方法三:
insert 表名 set 列名='***';
eg:
mysql> insert student set name='小白';
Query OK, 1 row affected (0.00 sec)
1.2 一次插入多条
方法一:
insert 表名 values('***','***',……),('***','***',……),('***','***',……),……
方法二:
insert 表名(列名) values('***'),('***'),('***'),……
eg:
mysql> insert student(name) values('棕熊'),('查理'),('克洛伊');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
2 replace语句
可以修改一个或多个
replace 表名 values ('***','***','***',……)
eg1修改一个:
mysql> replace student values('101','小胖');
Query OK, 2 rows affected (0.00 sec)
eg2修改多个:
mysql> replace student values ('103','胖达'),('105','查理');
Query OK, 4 rows affected (0.00 sec)
Records: 2 Duplicates: 2 Warnings: 0
3 updata语句
update 表名 set 列名1=*** where 列名2=***;
/*前一个列名可以和后一个列名相同*/
mysql> update student set sno=200 where name='查理';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update student set sno=201 where sno=104;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
4 truncate语句
清空整个表
truncate table 表名;
delete from 表名;
使用delete删除某条或某几条
delete from 表名 where 判断条件;
eg1:truncate
eg2:delete
5 select语句
5.1 直接查询
select * from 表名;
select 列名1,列名2,…… from 表名;
5.2 select 语句中的算术表达式
先算乘除、后算加减、同级从左到右依次计算。
select 列名(/进行计算),列名(/进行计算),…… from 表名
5.3 给select出来的列名设置别名
eg:
mysql> select weig '体重',age '年龄' from test;
+--------+--------+
| 体重 | 年龄 |
+--------+--------+
| 80.0 | 10 |
| 75.0 | 10 |
+--------+--------+
2 rows in set (0.00 sec)
5.4 select时可以使用distinct来去重
示例如下
5.5 带有判断的查询
select 列名1,列名2,…… from 表名 (where 判断条件) (order by 列名 排序方式)
#desc为降序 asc为升序
eg:
mysql> select distinct * from ruler order by length desc;
+--------+
| length |
+--------+
| 1000 |
| 222 |
| 101 |
| 100 |
| 20 |
+--------+
5 rows in set (0.01 sec)
5.6 聚合函数对一组值进行运算,并返回单个值。也叫组合函数。
COUNT(*|列名) 统计行数
AVG(数值类型列名) 平均值
SUM (数值类型列名) 求和
MAX(列名) 最大值
MIN(列名) 最小值
除了COUNT()以外,聚合函数都会忽略NULL值。
eg:
mysql> select avg(length),max(length),min(length),count(length),sum(length) from ruler;
+-------------+-------------+-------------+---------------+-------------+
| avg(length) | max(length) | min(length) | count(length) | sum(length) |
+-------------+-------------+-------------+---------------+-------------+
| 223.2857 | 1000 | 20 | 7 | 1563 |
+-------------+-------------+-------------+---------------+-------------+
1 row in set (0.00 sec)
5.7 使用concat修改输出内容样式
mysql> select concat('<体重',weight,'>') as '体重' from test2;
+--------------+
| 体重 |
+--------------+
| <体重50.0> |
| <体重53.0> |
| <体重55.0> |
| <体重60.0> |
+--------------+
5.8 select查询中 if case
IF 判断,流程控制
IFNULL 判断是否为空
CASE 搜索语句
示例如下
5.9 group by 和 having用法
①group by
group by 子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。
eg:如下是按照num分组,得出不同num的人数。
eg:如下是相同num有哪些人
②having 子句
用来对分组后的结果再进行条件过滤
eg:如下是相同num有哪些人且人数大于2
eg:如下是num相同且人数小于2按人数降序排列
#HAVING与WHERE的区别:
WHERE是在分组前进行条件过滤, HAVING子句是在分组后进行条件过滤,WHERE子句中不能使用聚合函数, HAVING子句可以使用聚合函数。
5.10 联合查询
UNION 去重复
UNION ALL 不去重复
5.11 查询结果限定
limit x————/*检索前x个记录*/
limit x,y————/*检索从x+1开始y个记录*/
6 多表查询
6.1 inner join
SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
方法一
mysql> select e.name,d.depName from Employee e,department d where e.depno=d.depno;
方法二:
mysql> select e.name,d.depName from Employee e inner join department d on e.depno=d.depno;
6.2 left join
SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
6.3 right join
SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
7 子查询
子查询是将一个查询语句嵌套在另一个查询语句中。内部嵌套其他select语句的查询,称为外查询或主查询。
eg:比如这里要查询zip数值最大的员工的所有信息可以使用嵌套。