SQL语句的使用中集(单表查询语句)
基本语法格式(基本的SQL的各个子句)
select 字段列表
from 表名列表
where 非聚合函数条件表达式
group by 分组表达式
having 聚合函数条件表达式
order by 排序表达式
这里我想说明一点,字段列表和表名列表都可以是多个,我们将在多表查询语句(下集)中给大家深入讲解。这里希望大家注意的是多个字段和多个表名之间以逗号来进行分隔。例如:姓名,地址。或者
表1,表2。大家需要注意的是他们都是相同级别。而当我们要表示不同级别的时候,用点来分隔。例如:
库名.数据库所有者.表名.字段名称,各个内容之间是不同级别的。这点希望大家特别注意,以后类型情况见的很多。
1、查询表中所有记录。
select * from 表名
2、查询表中部分字段内容
select 姓名 from 表名
select 姓名,地址 from 表名
3、查询满足条件的内容
select 姓名 from 人员信息表 where 地址='郑州'
select 姓名,地址 from 人员信息表 where 性别='男'
4、查询不满足条件的内容
select 姓名 from 人员信息表 where 地址<>'郑州'
select 姓名 from 人员信息表 where 地址!='郑州'
这里"<>"和"!="两个符号都代表不等于的意义。
select 姓名 from 人员信息表 where 工资>3000
select 姓名 from 人员信息表 where year(出生日期)<1980
select 姓名,地址 from 人员信息表 where year(出生日期) between 1983 and 1986
讲到这里,又有一点需要说明,如果字段的数据类型是字符型的某一种,在书写条件时必须加上引号,如果是数值型某一种,在书写条件时必须不能加引号,如果是日期型某一种,一般也要加引号,具体大家可以多通过实例验证。
表示两个条件同时满足时,两个条件之间用and关键字分隔,表示两个条件只要满足其一即可,两个条件之间用or关键字分隔。两个条件以上亦然。
select 姓名 from 人员信息表 where 工资>3000 and 性别='女'
select 姓名 from 人员信息表 where 工资>3000 or 性别='女'
各位同学体会一下,两个查询结果的区别。
5、模糊查询
select * from 表名 where 姓名 like '张%'
需要注意的是%号代表任意多个字符,_(下划线)代表任意一个字符.
查询公司名称中包含郑州的,比如有河南省郑州经贸有限公司和郑州经贸有限公司。
select * from 表名 where 姓名 like '%郑州%'
查询学号是三位数字,而且以1为开头的。
select * from 表名 where 学号 like '1__(注意:这里是两个下划线)'
6、分组表达式
group by表达式用于统计平均值或求和等内容,注意分组字段是指的可以作为分组的字段,比如统计某个部门的工资平均值,总工资等,曾经有同学问姓名字段能不能当分组字段,我想现在不言而喻了吧。
select 部门,sum(工资)
from 表名
group by 部门
需要注意的是,在包含分组表达式的SQL语句中在select子句中只能包含分组字段和聚合函数统计字段,不能包括除此之外的其它字段,当然只包含聚合函数字段也是可以的
select sum(工资)
from 表名
group by 部门
这个SQL语句也是正确的。
但是
select 姓名,部门,sum(工资)
from 表名
group by 部门
这个SQL语句就是错误的了。
注:聚合函数指可以返回一个统计函数值的函数,常见包含五个sum()、avg()、count()、max()、min()
7、聚合函数条件表达式
having表达式用于指定聚合函数条件,注意只能指定聚合函数条件,如果非聚合函数条件通过where子句来指定。
例如:
select 部门,sum(工资)
from 表名
group by 部门
having sum(工资) between 2000 and 3000
如果既有聚合函数条件,又有非聚合函数条件可以用
select 部门,sum(工资)
from 表名
where 部门='市场部'
group by 部门
having sum(工资) between 2000 and 3000
8、附带说明:
as子句的用法:
select 部门,sum(工资) as 总工资
from 表名
group by 部门
having sum(工资) between 2000 and 3000
代表将sum(工资)生成一个新的字段名称为总工资,在使用的过程中as 可以省略。即以上SQL语句等价于
select 部门,sum(工资) 总工资
from 表名
group by 部门
having sum(工资) between 2000 and 3000
distinct关键字的使用
过滤掉重复的列。
select distinct 地址
from 表名
where 部门='市场部'
阅读(1344) | 评论(0) | 转发(0) |