代码:

Customers表格:

mysql省去特定链接的ssl_子查询


Orders表格:

mysql省去特定链接的ssl_外链_02


内连接:

内连接是在交叉连接的基础上

只列出连接表中与连接条件相匹配的数据行,匹配不上的记录不会被列出。

语法:

隐式语法:
	select *  from customers,orders where customers.id=orders.customer_id;
显式语法:
	select *  from customers as c inner join orders as o on c.id=o.customer_id;

外链接:
外链接是以一张表为基表,其他表信息进行拼接,如果有就拼接上,如果没有显示null; 外链接分为左外连接和右外连接。

左外连接: 以关键字左边的表格为基表进行拼接。

语法:

select * from customers as c left join orders as o on c.id=o.customer_id;

右外连接: 以关键字右边的表格为基表

语法:

select * from orders as o right join customer as c on c.id=o.customer_id;

子查询:包括嵌套子查询、相关子查询。

嵌套子查询:
内部查询的执行独立于外部查询,内部查询仅执行一次,执行完毕后将结果作为外部查询的条件使用(嵌套子查询中的子查询语句可以拿出来单独运行。)

例如:查询id为1的老师教过的学生。
select * from students where id in(select student_id from teacher_student where t_id=1);

相关子查询:

内部查询的执行依赖于外部查询的数据,外部查询每执行一次,内部查询也会执行一次。每一次都是外部查询先执行,取出外部查询表中的一个元组,将当前元组中的数据传递给内部查询,然后执行内部查询。根据内部查询执行的结果,判断当前元组是否满足外部查询中的where条件,若满足则当前元组是符合要求的记录,否则不符合要求。然后,外部查询继续取出下一个元组数据,执行上述的操作,直到全部元组均被处理完毕。

mysql省去特定链接的ssl_mysql省去特定链接的ssl_03


例如:每一科考试成绩大于平均分的学生的分数。

select * from score as a where a.score>(select avg(b.score) from score as b where a.cou_id=b.cou_id);
常用函数:
 1、count():求满足列的条件的总的行数。
 例如:统计一个班级的人数。
 select count(id) from class one;2、sum():求总和。
 例如:求一个班的数学平均分。
 select sum(math)/count(*) from student ;3、avg():求平均数。
 例如:求数学平均分
 select avg(math) from student;4、max()\min():求最大值,最小值。
 例如:求数学成绩的最大值最小值。
 select max(math),min(math) from student;group by :分组
 GROUP BY子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组。
 分组的含义是:把该列具有相同值的多条记录当成一组记录处理,最后只输出一条记录。分组函数忽略空值。例题:
 create table t_order(id int primary key,product varchar(20),price float(8,2));
 insert into t_order values(1,‘xiaomi’, 1000);
 insert into t_order values(2,‘xiaomi’,1100);
 insert into t_order values(3,‘huawei’,2200);
 insert into t_order values(4,‘apple’,8200);例如:
 (1)对订单中每一类商品进行归类。
 select product sum(price) from t_order group by product;
 (2)查询商品总价格大于3000的商品。
 select product ,sum(price) from t_order group by product having sum(price)>3000;having \ where 的区别
 ①、where和having都是用来做条件限定的,
 ②、WHERE是在分组(group by)前进行条件过滤,
 ③、HAVING子句是在分组(group by)后进行条件过滤,
 ④、WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。
 ⑤、HAVING子句用来对分组后的结果再进行条件过滤
 having sum(price)>2000 相当于 拿着 列名为sum(price)去查询。