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

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 '张__';

聚合函数查询

SELECT
COUNT(*) 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;//最大值

去重查询

SELECT
DISTINCT 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 分组

SELECT
saddress,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; //留意一下别名的用法


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: