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

mysql学习记录:单表查询(补充1)

2017-12-25 15:17 405 查看
数据库表的增删改查用得最频繁最广泛的就是查询,对于单表主要知识点有:区别重复数据,数据实现简单运算,条件查询,数据排序,限制数据记录查询数量,统计函数。

1.简单查询

1)查询所有 *:

select * from table_name;

2)查询指定字段:

select 字段1,字段2,... from table_name;

3)区别重复数据 distinct:

select distinct 字段1,字段2,... from table_name;

4)实现数学四则运算数据查询:

+:加法;

-:减法;

*:乘法;

/(div):除法;

%(mod):求余;

以下是我的表结构:

Field           Type             Null    Key       Default           Extra           

--------     -------------        ------    ------     ------------      ----------------

id               int(11)            NO     PRI      (NULL)     auto_increment  

bname   varchar(100)     NO                 (NULL)                   

author    varchar(10)       NO                 (NULL)                   

number    int(11)              NO                 (NULL)                   

category  varchar(20)      NO                 (NULL)                   

abstract  varchar(1000)   NO                 (NULL)                   

    id  bname             author      number  category   abstract                           

   ------  ----------------  ----------  ------  ---------  -----------------------------------

     1  java编程思想          Bruce Ecke     100  计算机        java神书,强烈推荐          

     2  线性代数              李凤霞            120  数学         大学公共课线性代数教材  

     3  苏菲的世界             Jostein Ga      78  哲学         哲学启蒙读本,强烈推荐  

加法:SELECT number+5 FROM t_book;

减法:SELECT number+5 FROM t_book;

乘法:SELECT number*5 FROM t_book;

除法:SELECT number/5 FROM t_book;

求余:SELECT number%5 FROM t_book;

也可以使用别名方式使得显示更优雅更直观:

select number*5 count_book from t_book;

select number*5 ‘数量乘以五’ from t_book;

语法:select field1 [AS] otherfield1,field2 [AS] otherfield2,fieldn [AS] otherfieldn from table_name;

5)设置显示格式 concat:

SELECT CONCAT(bname,'这本书的类别是:',category) AS '描述' FROM t_book;

2.条件数据记录查询

1)MySQL支持的比较运算符

大于:>

小于:<

等于:=

不等于:!= (<>)

大于等于:>=

小于等于:<=   tips:在mybatis中,这个<=是与它一个符号冲突的,所以需要告诉他这个是代表我们的“小于等于”-> <![CDATA[ <= ]]>

select bname from t_book where id>2;

2)MySQL支持的逻辑运算符

AND(&&)  逻辑与

OR(||)  逻辑非

XOR  逻辑异或

NOT(!)

SELECT * FROM t_book WHERE id>1 OR number>90;

SELECT * FROM t_book WHERE id>1 XOR number>90;

NOT:还不会用,如果有知道的同学欢迎评论留言,感激




3)带 BETWEEN AND 关键字范围查询

SELECT * FROM t_book WHERE number BETWEEN 90 AND 110;

SELECT * FROM t_book WHERE number NOT BETWEEN 90 AND 110;

4)带 IN 关键字

SELECT * FROM t_book WHERE number IN(1,2,67,78,89,100,234,456);

5)带 LIKE 关键字模糊查询

SELECT * FROM t_book WHERE abstract LIKE '%强烈%';

%:通配符

3.排序数据记录

1)升序 ASC

SELECT * FROM t_book ORDER BY number ASC;

2)降序 DESC

SELECT * FROM t_book ORDER BY number DESC;

3)按照多字段排序

SELECT * FROM t_book ORDER BY id DESC,number ASC;

4.限制数据记录查询数量

1)不指定初始位置(起始偏移量)

SELECT * FROM t_book LIMIT 2;

只显示 2 条数据(一共有三条数据,显示id=1,id=2)

2)指定初始位置

语法:select field1,field2,fieldn from table_name where condition limit offset_start,row_count;

例如:SELECT * FROM t_book LIMIT 2,1;

结果:显示了 id=3 的那 1 条数据。起始偏移量与数组一样,从 0 开始

5.统计函数及记录分组

COUNT():统计表中所选字段的记录条数,【COUNT(*) | 不忽略null值、COUNT(field) | 忽略null值】;

AVG():统计表中所选字段的平均值,忽略null值;

SUM():计算所选字段的总和,忽略null值;

MAX():找出所选字段的最大值,忽略null值;

MIN():找出所选字段的最小值,忽略null值;

group by:分组关键字

1)统计函数

SELECT SUM(number) FROM t_book;

SELECT MAX(number) FROM t_book;

2)分组数据查询

SELECT * FROM t_book GROUP BY number;

3)实现统计功能分组查询

语法:SELECT GROUP_CONCAT(field) FROM table_name WHERE CONDITION GROUP BY field;

SELECT bname,GROUP_CONCAT(abstract) FROM t_book WHERE id<3 GROUP BY author;

4)多个字段分组查询

语法:SELECT GROUP_CONCAT(field),function(field) FROM table_name WHERE CONDITION GROUP BY field1,field2,fieldn;

SELECT bname,GROUP_CONCAT(abstract),AVG(number) FROM t_book WHERE id<3 GROUP BY author,bname;

5)HAVING子句限定分组查询

如果想实现对分组进行条件限制,不能通过 where 来实现,因为 where 主要用来实现条件限制分组数据记录。官方专门提供了 HAVING 来实现条件限制分组数据记录。

语法:SELECT function(field) FROM table_name WHERE CONDITION GROUP BY field1,field2,fieldn HAVING CONTITION;

SELECT bname,GROUP_CONCAT(abstract),AVG(number) FROM t_book WHERE id<3 GROUP BY author,bname HAVING AVG(number)>100;

SELECT bname,GROUP_CONCAT(abstract),AVG(number) FROM t_book WHERE id<3 GROUP BY author,bname HAVING COUNT(number);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: