您的位置:首页 > 数据库 > MySQL

mySQL基础语句复习(二)

2011-09-12 03:13 281 查看
在写查询语句之前,先说一下多表连接的问题吧:
我们都知道,在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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: