首页 > 数据库 > MySQL > 正文

MySql之表记录操作(查询)

2024-07-24 12:59:27
字体:
来源:转载
供稿:网友

1、字段(列)控制

1).查询所有列

SELECT * FROM 表名;

2).查询指定列

SELECT 列名1[,列名2,列名2,...] FROM 表名;

3).重复的记录只出现一次

SELECT DISTINCT * | 列名1[,列名2,列名2,...] FROM 表名;

4).列运算

Ⅰ.数据相同的列可以做加、减、乘、除运算

SELECT sale*1.5 FROM emp;SELECT sale+comm FROM emp;

Ⅱ.字符串类型可以做连续运算

SELECT CONCAT('$',sal) FROM emp;

Ⅲ.转换NULL值

有时需要把NULL值转换成其他值,例如comm+1000时,如果comm列存在NULL值,那么NULL+1000还是NULL,而我们希望把NULL当成0来运算.
SELECT IFNULL(comm,0)+1000 FROM emp;

Ⅳ.给列起别名(as在使用时可以省略)

SELECT IFNULL(comm,0)+1000 AS 奖金 FROM emp;

2、条件控制

1).条件查询

与UPDATE与DELETE语句一样,SELECT语句也可以使用WHERE子句来控制记录。
SELECT empno,ename,sal,comm FROM emp WHERE sal>1000 AND comm IS NOT NULL;SELECT empno,ename,sal,comm FROM emp WHERE sal BETWEEN 20000 AND 30000;SELECT empno,ename,sal,comm FROM emp WHERE job IN ('经理','董事长');

2).模糊查询

当你想查询姓张,并且姓名一共两个字的员工时,这时就可以使用模糊查询,模糊查询使用运算符LIKE。

Ⅰ._匹配一个任意的字符,注意只匹配一个字符而不是多个。

SELECT * FROM emp WHERE ename LIKE '张_';

Ⅱ.%匹配0~N个任意字符,当查询姓张,并且不管名字长度时可以使用。

SELECT * FROM emp WHERE ename LIKE '张%';

Ⅲ.当查询名字包含张字的员工时,可以使用以下语句

SELECT * FROM emp WHERE ename LIKE '%张%';

Ⅳ.当模糊语句只有一个%时,此条件等同于不存在,但是姓名为NULL的查询不出来。

SELECT * FROM emp WHERE ename LIKE '%';

3、排序

使用ORDER BY进行排序。

1).升序:使用关键词ASC,并且可以省略,它是默认的

SELECT * FROM emp ORDER BY sal ASC;

2).降序:使用关键词DESC,不能省略

SELECT * FROM emp ORDER BY comm DESC;

3).使用多列作为排序条件,按照书写顺序,在前的先排序,前面相同时,再按照后一条件进行排序,以此类推。

SELECT * FROM emp ORDER BY sal ASC,comm DESC;

4、聚合函数

聚合函数用来做某列的纵向运算。

1).COUNT:计算指定列不为NULL的记录的行数。

SELECT COUNT(*) FROM emp;

2).MAX:找出指定列最大的值

SELECT MAX(sale) FROM emp;

3).MIN:找出指定列最小的值

SELECT MIN(sale) FROM emp;

4).SUM:计算指定列的值的总和

SELECT SUM(sale) FROM emp;

5).AVG:计算指定列的值的平均值

SELECT AVG(sale) FROM emp;

5、分组查询

分组查询是把记录使用某一列进行分组,然后查询组信息。例如:查询所有部门的记录数。
SELECT job,COUNT(*) FROM emp GROUP BY job; 查询每种工作的最高工资。
SELECT job,MAX(sale) FROM emp GROUP BY job;

*组条件HAVING的加入:WHERE无法使用聚合函数,而如果没有HAVING就无法进行相关的测试了。

例如:查询所有部门人数大于100的部门
SELECT job,COUNT(*) FROM emp GROUP BY job HAVING COUNT(*) > 100;

6、LIMIT子句

LIMIT用于限制查询结果的起始行,以及总行数。例如:查询起始行为第五行,一共查询三行记录。
SELECT * FROM emp LIMIT 4,3;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表