- 简单查询
- 条件查询
select * from emp where deptid is null;
select * from emp where deptid is not null;
select * from emp where salary>7000 and sex=0;
select * from emp where salary>7000 && sex=0;
and(&&) 并且,要求两个条件都满足 or( || ) 或者,要求两个条件满足其一 |
select * from emp where salary>=7000 and salary<=10000;
select * from emp where salary<7000 or salary >10000;
select * from emp where deptid=20 or deptid=30;
select * from emp where deptid !=10;
select * from emp where deptid in(20,30); ----简化
select * from emp where deptid !=20 and deptid !=30;
select * from emp where deptid =10;
select * from emp where deptid not in(20,30); ----简化
- 模糊条件查询 ----- like
不明确条件,常用于搜索
示例:查询出姓名中含有字母e的员工有哪些
select * from emp where ename like"%e%";
select * from emp where ename like"%e";
练习:查询出员工姓名中倒数第2个字符是e的员工有哪些
select * from emp where ename like"%e_";
% 匹配任意字符 > =0 _ 匹配任意1个字符 =1 以上匹配符号必须结合like关键字使用 |
- 分页查询 ---- limit
查询的结果中,有太多的数据,一次显示不完,可以做成分页显示
需要有两个已知的条件:当前的页码、每页的数据量
每页开始查询的值=(当前页码-1)*每页数据量 |
select * from emp limit 开始查询的值,每页的数据量;
练习:假设每页显示5条数据,查询出前4页的数据
第一页: select * from emp limit 0,5;
第二页: select * from emp limit 5,5;
第三页: select * from emp limit 10,5;
第四页: select * from emp limit 15,5;
注意事项:limit后的两个值必须是数值型,不能加引号 |
- 复杂查询
- 聚合查询 /分组查询 group by
示例:查询出所有员工的数量
select count(*) from emp ;
select count(eid) from emp ; #推荐使用主键列
select count(deptid) from emp ;
函数:是一个功能体,需要提供若干个数据,返回结果 聚合函数 count() / sum() / avg() / man() / min() 数量 总和 平均 最大 最小 |
练习:查询出所有女员工的工资总和
select sum(salary) from emp where sex=0 ;
练习:查询出10号部门的平均工资是多少
select avg(salary) from emp where deptid=10;
练习:查询出男员工的最低工资
select min(salary) from emp where sex=1;
练习:查询出年龄最小员工的生日(生日的最大值)
select max(birthday) from emp ;
分组查询通常查询聚合函数和分组条件 |
示例:查询出男女员工的数量、平均工资、工资总和
select count(eid),avg(salary),sum(salary),sex from emp group by sex;
练习:查询出各部门的工资总和,最高工资,最低工资
select sum(salary),sum(salary),min(salary),deptid from emp group by deptid;
- 子查询
多个SQL命令的组合,把第一个查询的结果作为第二个的条件。
步骤1:查询出平均工资 ---11125 select avg(salary) from emp 步骤2:查询出工资大于11125的员工 select ename from emp where salary>11125 |
select ename from emp where salary> (select avg(salary) from emp);
练习:查询出和tao同一个部门的员工有哪些
select * from emp where deptid= (select deptid from emp where ename ="tao") and ename != "tao";
and ename != "tao"; 不包含“tao”自己 |
year() 获取日期中的年份 示例:查询出所有员工出生的年份 select year(birthday) from emp; 示例:查询出1993年出生的员工 select * from emp where year(birthday)=1993; |
练习:查询出和tom同一年出生的员工有哪些
select * from emp where year(birthday)=(select year(birthday) from emp where ename="tom") and ename !="tom";;
- 多表查询
要查询的数据分布在多个表中,前提是表之间已经建立了关联
示例:查询出所有员工的姓名及其部门名称
select ename,dname from emp,dept where deptid=did ;
select emp.ename a,dept.dname b from emp,dept where emp.deptid=dept.did;
- 内连接 ...inner join...on...
select ename,dname from emp inner join dept on deptid=did;
和之前的查询结果一致
- 外连接-----左外连接 ...left outer join...on...
select ename,dname from emp left outer join dept on deptid=did;
显示左侧表中所有记录,先写哪个表就是左(outer可省略)
- 外连接----右外连接 ...right outer join...on...
select ename,dname from emp right outer join dept on deptid=did;
显示右侧表中所有记录,后写哪个表哪个就是右 (outer可省略)
左外和右外连接中outer 关键字可以省略
(4)全连接 ...full join... on ....
同时显示左侧和右侧表中所有记录
....full join... on ....
mysql不支持全连接
union all 联合后不合并相同的项
union 联合后合并相同的项
union all 联合后不合并相同的项↓
(select ename,dname from emp left outer join dept on deptid=did) union all
(select ename,dname from emp right outer join dept on deptid=did);
union 联合后合并相同的项↓
(select ename,dname from emp left outer join dept on deptid=did) union
(select ename,dname from emp right outer join dept on deptid=did);
解决方案:将左外和右外连接进行联合,合并相同的项
JS JavaScript
学习一门编程语言的步骤:
- 了解他的背景知识:历史、现状、特点、应用场景
- 搭建开发环境,编写 hello world
- 变量和常量
- 数据类型
- 运算符
- 逻辑结构
- 通用小程序
- 函数和对象
- 第三方的库和框架
- 个人项目
JavaScript高级程序设计(第3版)
链接:https://pan.baidu.com/s/1k-KXRC0p9gzz1X0xLe42Vw
提取码:fhjj
- JS应用场景
JS可以开发浏览器端的交互效果
JS还可以进行服务器端的开发,例如:访问数据库、调用其他服务器....
- 搭建开发环境
- 浏览器
浏览器内部都有自带的JS解释器,可以执行JS代码
内核
谷歌/火狐/Safari/edge/欧朋
- Node.js
JS在服务器端的运行环境
- 运行JS
- 浏览器
创建01.js和01.html文件,把html中编写代码,将js嵌入进去
<script src="../day04/01.js"></script> |
<script src="js路径"></script>
- Node.js
在命令行cmd下
node 直接拖拽要运行的文件(js路径) 回车
- JS的语法规范
区分大小写
每行代码结束的分号可省略
分为单行注释//和多行注释/*....*/