聚合函数:
max ,min,avg,sum,count
最高分:
同时查询多表:
1.
mysql> select * from user;
+----+----------+------+---------+--------------+
| id | username | sex | id_card | python_grade |
+----+----------+------+---------+--------------+
| 1 | caomei | girl | 1001 | 90 |
| 2 | ruirui | girl | 1002 | 70 |
| 3 | heihei | girl | 1003 | 50 |
+----+----------+------+---------+--------------+
3 rows in set (0.00 sec)
mysql> select username from user;
+----------+
| username |
+----------+
| caomei |
| ruirui |
| heihei |
+----------+
3 rows in set (0.00 sec)
mysql> select min(python_grade ) from user;
+--------------------+
| min(python_grade ) |
+--------------------+
| 50 |
+--------------------+
1 row in set (0.01 sec)
select *
from 表1 ,表2,表n
where 条件
(表1和表2完全可以是同一张表!!!)
select max(python_grade) from user; (虚表,假表)
select username from users where python_grade =90;
u和temp(虚表)是两张表, u有除了最低分以外的信息,temp有最低分;
但u里面的信息包括最低分;
所以条件 ,当u里面的最低分==temp表的最低分时,条件就筛选出来了;
->select *
-> from user u, (select min(python_grade) as min from user ) temp
-> where u.python_grade=temp.min;
+----+----------+------+---------+--------------+------+
| id | username | sex | id_card | python_grade | min |
+----+----------+------+---------+--------------+------+
| 3 | heihei | girl | 1003 | 50 | 50 |
+----+----------+------+---------+--------------+------+
1 row in set (0.00 sec)
->select u.username ,temp.min
-> from user u , (select min(python_grade ) as min from user ) temp
-> where u.python_grade =temp.min;
+----------+------+
| username | min |
+----------+------+
| heihei | 50 |
+----------+------+
1 row in set (0.01 sec)
select +‘的’ 后面了 需要查找的东西
from + 表 表匿名,表 表匿名
where +找出‘ 开发部’/所有部门 + 关联字段,
select d.deptName ,e.empName ,e.salary
from dept d, emp e
where d.id=e.deptId and d.deptName IN('开发部','测试部') ;
select d.deptName ,e.empName ,e.salary
from dept d, emp e
where d.id=e.deptId and d.deptName ='开发部'or d.deptName= '测试部'
union 联合:
a表一样的字段;
b表一样的字段;
两个连接起来称为一个表。
union把一个表内重复的去掉了
union all 把一个表内 重复的显示出来。
多表查询条件:
select * from 表1 表2 表n where 条件
*代表字段。
多表查询方式:
内连接: 表1 inner join 表2 on 条件:
on后面的条件是 多个表之间有关联的条件。
a表有的字段,
b表有的字段,
两个表横着平成一块,
select * from dept d, emp e where d.id=e.depId;
select *
from dept d(表1) inner join emp e(表2)
on d.id=e.depId;()
select *
from dept d(表1) inner join emp e(表2)
on d.id=e.depId where d.deptName= ‘开发部’
条件1 :和两个表有关系 条件2:和两个表没有关联。
外连接:
左连接:
右连接:
模糊查询:
查询books中以王字开头的所有书:
select * from book where B_AUTHOR like ‘王%’;
select * from book where B_AUTHOR like ‘%a’;
以a结尾。
查询所有中包含‘a’的书籍;
select * from book where B_AUTHOR like ‘%a%’
内连接:inner join
select 字段1 字段n from 表1 别名 ,表2 别名 inner join
on条件 where 条件
外连接:
左外连接 : left join
以左边的表为准: 剩下右边表没有的字段补充null;
select *from 左表 left join 右表 on 条件。
右连接: right join
总结内外连接的区别:
内连接 : on之后的条件,只有同时满足左右两边的表,才可以查找出来,才可以。
MySQL limit 2种写法
NeedFSpeeed 2018-03-13 14:55:25 7947 收藏 2
展开
LIMIT 语法
1.limit 1,3 从1位置向后取3条记录。
2.limit 3 offset 1 等价于 limit 1,3