MySQL 常用关键字用法详解

MySQL 常用关键字用法详解

在开发工程中,操作数据库的时候经常会有不同类型的条件查询,除了使用where外,Mysql本身也提供了很多常用的关键字。本文主要介绍一些常用的关键字,像update、insert、delete、select这样的就不在做解释 。

distinct关键字

distinct关键字的目的是去重查询,示例如下:

select distinct 选择的字段 from 表名 条件从句;  //distinct放在去重字段的前面
between关键字

between是查询条件关键字,主要和and连用,示例如下:

select * from user where age between 25 and 30; (查询年龄在25-30之间的用户)
limit关键字

limit关键字主要用在分页查询上,LIMIT 子句用于强制 SELECT 语句返回指定的记录数,LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1),示例如下:

SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15  

//为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1:    
SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last.   
  
//如果只给定一个参数,它表示返回最大的记录行数目:    
SELECT * FROM table LIMIT 5; //检索前 5 个记录行   
 
//换句话说,LIMIT n 等价于 LIMIT 0,n。  
count关键字

count关键字的主要目的是返回所有的记录条数,示例如下:

select COUNT(*) from user; (查询user表所有记录条数)
sum、max、min、avg关键字

sum、max、min、avg四个关键字,分别代表查询结果的求和、最大值、最小值和平均值,示例如下:

select sum(age) from user;(查询所有的年龄和)

select min(age) from user;(最小的年龄)

select max(age) from user;(最大的年龄)

select avg(age) from user;(所有人年龄的平均值)
order by关键字

order by关键字主要是用在排序上,排序分为正序(asc )和倒序(desc)两种,示例如下:

//倒序查询
SELECT * from runoob_tbl ORDER BY submission_date DESC
//正序查询
SELECT * from runoob_tbl ORDER BY submission_date ASC;
group by关键字

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。示例如下:
创建数据库表,插入数据

DROP TABLE IF EXISTS `employee_tbl`;
CREATE TABLE `employee_tbl` (
  `id` int(11) NOT NULL,
  `name` char(10) NOT NULL DEFAULT '',
  `date` datetime NOT NULL,
  `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `employee_tbl`
-- ----------------------------
BEGIN;
INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2');
COMMIT;

我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

使用 WITH ROLLUP
WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+
| name   | singin_count |
+--------+--------------+
| 小丽 |            2 |
| 小明 |            7 |
| 小王 |            7 |
| NULL   |           16 |
+--------+--------------+
4 rows in set (0.00 sec)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值