mySQL基础语句复习(二)

       在写查询语句之前,先说一下 多表连接的问题吧:

      我们都知道,在SQL库中,为了消除数据的冗余性,因此呢,常常用多个表的连接来表述一条完整的记录。如:一条完整的部门职工信息通常是由三个不同的表来表述的,即:员工信息表、部门信息表和城市信息表。

      多表的连接通常有两种方式:全连接和join连接。Join连接分内连接、左外连接和右外连接三种。

全连接:

      将各个表用逗号隔开,形式如下:查询出公司所有员工姓名, 所在部门名

select 员工信息.name,部门信息.name from 员工信息,部门信息 where 员工信息.department_id =  部门信息.id;

join连接:

1.              内连接:用关键字inner修饰的,如:查询所有员工, 员工所属部门select 员工信息.name,部门信息.name from 员工信息 inner join 部门信息 on 员工信息.department_id = 部门信息.id;

2.              左外连接(left outer join(注:outer可省略)):除了匹配行外,还包含左表中有的但右表中没有的,对于这样的行,右表中被选择的列设置为null。

3.              右外连接(right outer join(注:outer可省略)):除了匹配行外,还包含右表中有的但左表中没有的,对于这样的行,左表中被选择的列设置为null。

子查询:

      在SQL语句中,常用的是where子句的运用,一般来说,在where子句中写入要查找的条件,从而在指定的表中进行查询,同时,where子句也可进行嵌套,实现在多表中的查询。

      如:查询出公司所有员工姓名, 所在部门名

select 员工信息.name,部门信息.name from 员工信息,部门信息 where 员工信息.department_id =  部门信息.id;

 

查询出开发部所有员工名

select name from 员工信息 where department_id = (select id from 部门信息 where name = "开发部");

组函数查询:

1.     Count()统计组中满足条件的行数

2.     统计员工人数, 显示如下格式

select count(*) as "员工总数",count(age<30) AS "30以下",count(age>30) as "30以上" from 员工信息;

3.     max/min求表达式中所有值的最大值与最小值,avg()求指定列的平均值,sum()求指定列的值总和

查询公司员工工资最大值, 最小值, 平均值, 总和

select max(salary)from 员工信息;

select min(salary)from 员工信息;

select avg(salary)from 员工信息;

select sum(salary)from 员工信息;

4.     group by 子句

select 列名 from 表明 group by 列名 [having 条件语句]注:having 语句相当于where 子句,having必须与group by 连接

如:查询年龄大于30岁的员工有几个:select count(name

) from 员工信息 group by age having age>30;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值