补充:开发中,严禁使用select *。如果表中有完全重复的记录只显示一次,在查询的列之前加上distinct。
注意:我们写的所有的查询语句,最终执行的结果,都是生成一张虚拟表。
注意:别名
- null值和任何值做计算都为null,需要用到函数ifnull()函数。select IFNULL(sal,0) + 1000 from employee;如果薪资是空,则为0。
- 将字符串做加减乘除运算,会把字符串当0处理。
通配符:_下划线代表一个字符,%百分号代表任意个字符。排序
举例:聚合函数
创建一张用户表,id,username,password。
几乎所有的表都会有两个字段,create_time,update_time。
几乎所有的查询都会按照update_time降序排列。
举例:
将班级的同学按照性别分组,统计男生和女生的平均年龄。
面试题:where和having的区别?分页查询
- where是写在group by之前的筛选,在分组前筛选;having是写在group by之后,分组后再筛选。
- where只能使用分组的列作为筛选条件;having既可以使用分组的列,也可以使用聚合函数列作为筛选条件。
面试题:
- MySQL:limit
- Oracle:rownum
- SqlServer:top
分析:一个问题:我想要判断在student表中有没有叫"小红"的这个人?
student表中有10条数据,如果每页显示4条,分几页?3页
3页怎么来的?(int)(Math.ceil(10 / 4));
显示第一页的数据:select * from student limit 0,4;
第二页:select * from student limit 4,4;
第三页:select * from student limit 8,4;
注意:Limit子句永远是在整个的sql语句的最后。多表查询
SQL92语法,多表查询,如果有数据为null,会过滤掉。
外连接的关键字【outter join】,也可以省略outter,连接条件同样使用【on】关键字。
- 对于左连接,左边的表为主,左边的表的记录会完整的出现在结果集里。
- 对于右连接,右边的表为主,左边的表的记录会完整的出现在结果集里。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |