SQL基础学习(五)- MySQL的select语句
2017-04-26 16:13
821 查看
1、select的语法结构
SELECT[ALL|DISTINCT]<目标列表达式> [AS 列名] ,[<目标列表达式> [AS 列名] ...]
FROM<表名> [,<表名>…]
WHERE <条件表达式> [AND|OR <条件表达式>...
GROUP BY 列名
HAVING <条件表达式>
ORDER BY 列名 [ASC | DESC]
WITH OWNERACCESS OPTION;
说明:
[ ALL|DISTINCT|DISTINCTROW|TOP ]
(1)ALL:全部;
(2)DISTINCT:不包括重复行
(3) DISTINCTROW 如果有重复的记录,只返回一个
(4) TOP显示查询头尾若干记录。也可返回记录的百分比,这是要用 TOP N PERCENT子句(其中N 表示百分比)
<目标列表达式> :对字段可使用AVG、COUNT、SUM、MIN、MAX、运算符等
聚合函数
SUM ( ) 求和
AVG ( ) 平均值
COUNT ( ) 表达式中记录的数目
COUNT (* ) 计算记录的数目
MAX 最大值
MIN 最小值
VAR 方差
STDEV 标准误差
FIRST 第一个值
LAST 最后一个值
AS :为字段取别名
SELECT FirstNameAS NickName ,LastName ,City FROM Employees;
<条件表达式> :就是查询条件 谓词
比较运算符: =,> ,< , >=, <= , <>不等于,!>
,!<
确定范围 :BETWEEN AND、NOT BETWEEN AND
确定集合: IN、NOT IN
模糊匹配: LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOT LIKE
空值: IS NULL、IS NOT NULL
子查询: ANY、ALL、EXISTS
集合查询: UNION(并)、INTERSECT(交)、MINUS(差)
多重条件: AND、OR、NOT
<GROUP BY 列名> 对查询结果分组
HAVING <条件表达式> 分组筛选条件
GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明了按照哪几个字段来分
ORDER BY 列名 [ASC | DESC] 对查询结果排序; -- ASC:升序 DESC:降序
2、功能查询
简单查询
1、查询部门表中的部门编号、部门名称;SELECT DEPTNOas 部门编号,DNAME
as 部门名称 FROM DEPT;
2、查询工资大于等于1000并且小于3000的员工信息
SELECT
* FROM EMPWHERE SAL>=1000AND
SAL<3000;
3、查询年龄在23-25之间的学生
SELECT
* FROM stu WHERE ageBETWEEN23
AND25;
4、查询工作是经理、普通员工、销售员的所有员工信息
SELECT
* FROM EMP WHERE JOB IN ('MANAGER','CLERK','SALESMAN');
模糊查询
查询员工编号大于7000且姓名中不包含“S”字符的员工信息SELECT * FROM EMP WHERE EMPNO >7000 AND ENAME NOT LIKE '%S%';
查询名字里姓张的学生。
SELECT * FROM
sstud WHERE sname LIKE '张_';
SELECT * FROM sstud WHERE sname LIKE '张__';
聚合函数查询
SELECTCOUNT(*) FROM stu; //一般要专门给一个别名
SELECT
AVG(age) AS averageAge FROM sstud;//取平均值
SELECT
ROUND(AVG(age)) AS averageAge2 FROM sstud;//四舍五入
SELECT
SUM(age) AS sumAge FROM sstud;//和
SELECT
MAX(age) AS maxAge FROM sstud;//最大值
去重查询
SELECTDISTINCT sname,age FROM sstud WHERE age = ( SELECT MIN(age) FROM sstud ) ;
SELECT DISTINCT saddress FROM sstud;
排序
-desc、asc
SELECT * FROM sstud ORDER BY age ASC;//按年龄升序排SELECT age,sname FROM sstud ORDER BY age DESC;//降序
-GROUP
BY 分组
SELECTsaddress,AVG(age)AS 平均年龄 FROM sstud GROUP BY saddress;
SELECT saddress, SUM(age)AS 年龄总和 FROM sstud GROUP BY saddress;
//固定搭配1: SELECT ... FROM ... WHERE ... ORDER BY ... ----ORDER BY子句要放在最后
//固定搭配2: SELECT ... FROM ... GROUP BY ... HAVING .... ----GROUP BY子句中的条件用的是HAVING (不能用WHERE)
SELECT saddress,AVG(age)AS 平均年龄 FROM sstud GROUP BY saddress HAVING AVG(age)>22;
SELECT saddress,AVG(age) AS a FROM sstud GROUP BY saddress HAVING a>22; //留意一下别名的用法
相关文章推荐
- SQL基础学习(六)- MySQL的insert语句
- MySQL学习笔记---基础概念和一些基础SQL语句(一)
- MYSQL学习心得(1)--基础SQL语句
- MySQL学习笔记---基础概念和一些基础SQL语句(一)
- MySql(4)------SQL基础之DML(Data Manipulation Language)下的查询(select)语句
- MySQL学习笔记---基础概念和一些基础SQL语句(一)
- MySQL学习笔记---基础概念和一些基础SQL语句(二)
- MySQL学习笔记(一):基础常用SQL语句
- MySql(3)------SQL基础之DML(Data Manipulation Language),不包含select语句
- 学习 SQL 语句 - Select(9): 其他
- 学习 SQL 语句 - Select(7): 分组统计之 Avg()、Sum()、Max()、Min()、Count()
- 学习 SQL 语句 - Select(7): 分组统计之 Avg()、Sum()、Max()、Min()、Count()
- sql语句中select top n与oracle的rownum与mysql的limit用法
- 学习 SQL 语句 - Select(1): 指定表
- SQL学习笔记三 select语句的各种形式小结
- 学习 SQL 语句 - Select(4): 排序
- 学习 SQL 语句 - Select(8): 分组条件
- 【Oracle】SQL学习笔记1---基本概念及SELECT语句及提取和排序数据
- SQL语言基础--select语句的各个子句(一)
- 学习 SQL 语句 - Select(2): 指定表中的字段