MYSQL基础七--单表数据查询
1.查询所有字段
SELECT *FROM tab_red;
2.查询指定字段
SELECT dname FROM tab_red;
3.避免重复数据查询
SELECT DISTINCT dname FROM tab_red;
添加关键字DISTINCT后,dname序列中将避免重复的内容。出现的值为唯一的。
4.对查询的内容进行四则运算
SELECT id*12 FROM tab_red;
将查询到id的内容乘以12。
5.条件数据查询
(1).带关系运算符和逻辑运算符的条件数据查询;
SELECT dname FROM tab_red WHERE job = 'work'&& sal > 800;
(2).带BETWEEN AND关键字的条件数据查询;
SELECT dname FROM tab_red WHERE sal BETWEEN 1000 AND 2000;
SELECT dname FROM tab_red WHERE sal NOT BETWEEN 1000 AND 2000;
(3).带IS NULL关键字的条件数据查询
1).SELECT dname FROM tab_red WHERE sal IS NULL;表示该值为空时
2).SELECT dname FROM tab_red WHERE sal NOT IS NULL;表示该值不为空
3).SELECT dname FROM tab_red WHERE NOT sal IS NULL;表示非sal为空
2)和3)意义一样。
(4).带IN关键字的条件数据查询
范围查询条件,在IN(50,203,502,320)这个范围内查询。
SELECT dname FROM tab_red WHERE sal IN (50,203,502,320);
在使用关键字IN的时候,查询的集合中如果存在NULL,则不会影响查询结果。如果使用关键字NOT IN,查询的集合中如果存在NULL,则不会有任何的查询结果。
(5).带LIKE关键字的条件数据查询
如果查询的名字中包含文本"cj"的所有名字,此时就需要通过通配符来实现模糊查询。
“_”通配符,该通配符能匹配单个字符;
“%”通配符,该通配符值可以匹配任意长度的字符串,既可以是0个字符串,1个字符串,也可以是多个字符串。
SELECT dname FROM tab_red WHERE dname LIKE 'A%';包含A的任意长度的字符串
SELECT dname FROM tab_red WHERE dname LIKE '_A%';第二个字母为A的任意长度字符串;
通过NOT LIKE来查找不包括'A'字母的字符串
SELECT dname FROM tab_red WHERE NOT dname LIKE '%A%';
使用%A%是因为A%为首字母是A的字符串,但是在前面加%和后面加%表示字符串任意位置中包含A的字符串。
6.排序数据查询
通过关键字ORDER BY来设置查询结果的顺序
(1).按照单字段排序
1).升序排序
SELECT *FROM tab_red ORDER BY sal ASC;
由于ORDER BY 默认为升序,因此也可以改为
SELECT *FROM tab_red ORDER BY sal;
2).降序排序
SELECT *FROM tab_red ORDER BY sal DESC;
(2).按照多字段排序
SELECT *FROM tab_red ORDER BY sal,id DESC;
7.限制数据查询数量
通过关键字LIMIT来限制查询结果的数量
(1).不指定初始位置方式
如果不指定初始位置,默认值为0,表示从第一条记录开始显示
SELECT *FROM tab_red WHERE sal IS NULL LIMIT 2;
表示最多显示两条数据
(2).指定初始位置方式
LIMIT 关键字经常备用在分页系统中,对于第一页数据记录,可以通过不指定初始位置来实现,但是对于第二页或者其他页必须指定初始位置,否则无法实现分页。
LIMIT关键字海经常与ORDER BY关键字一起使用。
SELECT *FROM tab_red WHERE sal IS NULL ORDER BY sal LIMIT 5,10;
以上语句表示,从第五条语句开始,最多显示十条数据。
8.统计函数
COUNT():实现记录数据的条数
SELECT COUNT(dname) FROM tab_red;
AVG():实现计算字段值得总和
SUM():实现字段值得总和
MAX():实现字段值的最大值
MIN():实现字段值的最小值
9.分组查询
(1).简单分组查询
通过关键字GROUP BY来实现分组查询
SELECT * FROM tab_red GROUP BY dname;
(2).实现统计功能分组查询
通过关键字GROUP_CONCAT()字段来显示每个分组中所指定的字段值。
SELECT GROUP_CONCAT(dname) FROM tab_red GROUP BY mygroup;
只显示指定的dname字段的分组内容;
(3).多个字段的分组查询
SELECT * FROM tab_red GROUP BY mygroup,id;
通过 mygroup,id进行分组。
10.分组查询的条件限定
当在通过GROUP BY关键字进行分组查询的时候,不能使用WHERE关键字进行条件限定。这时就需要用到关键字HAVING关键字进行条件限定
SELECT id,GROUP_CONCAT(dname) FROM tab_red GROUP BY mygroup HAVING AVG(sal) > 2000;