DQL查询表中记录

DQL:查询表中的记录
	1.*语法:
		select
			字段列表
		from
			表名列表
		where
			条件列表
		group by
			分组字段
		having
			分组之后的条件
		order by
			排序
		limit
			分页限定
	
	2.基础查询
		1.多个字段的查询
			select 字段名1,字段名2... from 表名;
			*注意:
				*如果查询所有字段,则可以使用*来替代字段列表。
		2.去除重复:
			distinct
		3.计算列
			*一般可以使用四则运算计算一些列值。(一般只会进行数值型的计算)
			*ifnull(表达式1,表达式2)	:null参与的运算,计算结果都为null
				*表达式1:哪个字段需要判断是否为null
				*表达式2:如果该字段为null后的替换值		
		4.起别名:
			as:as也可以省略		
	
	3.条件查询:
		1.where子句后跟条件
		2.运算符
			*>、<、<=、>=、=、<>
			*BETWEEN...AND
			*IN(集合)
			*LIKE:模糊查询
				*占位符:
					* _:单个任意字符
					* %:多个任意字符
			*IS NULL
			*and 或 &&
			*or 或 ||
			*not 或 !
					SELECT * FROM student WHERE age > 20;
					SELECT * FROM student WHERE age >= 20;

					SELECT * FROM student WHERE age =20;

					SELECT * FROM student WHERE age != 20;

					SELECT * FROM student WHERE age <> 20;

					SELECT * FROM student WHERE age >=20 && age <=30;

					SELECT * FROM student WHERE age >=20 AND age <=30;

					SELECT * FROM student WHERE age BETWEEN 20 AND 30;

					SELECT * FROM student WHERE age=22 OR age=20 OR age=25;

					SELECT * FROM student WHERE age IN(22,18,55);

					SELECT * FROM student WHERE english IS NOT NULL; 

					SELECT * FROM student WHERE NAME LIKE '马%';
					
					SELECT * FROM student WHERE NAME LIKE "_化%";

					SELECT * FROM student WHERE NAME LIKE "___";

					SELECT * FROM student WHERE NAME LIKE "%景%"
	4.排序查询
		*语法:order by 子句
			*order by 排序字段1 排序方式1,排序字段2 排序方式2...
		*排序方式:
			*ASC:升序,默认的
			*DESC:降序	
		*注意:
			*如果又多个排序条件,则当前边的条件值一样时,才会判断第二条件
	5.聚合函数:将一列数据作为一个整体,进行纵向的计算
		1.count:计算个数
			*一般选择非空的列:主键
			*count(*)
			例:SELECT COUNT(NAME) FROM student;
		2.max:计算最大值
			例:SELECT MAX(math) FROM student;
		3.min:计算最小值
			例:SELECT MIN(math) FROM student;
		4.sum:计算和
			例:SELECT SUM(english) FROM student;
		5.avg:计算平均值
			例:SELECT AVG(math) FROM student;

		*注意:聚合函数的计算,排除null值。
			解决方案:
				*选择不包含非空的列进行计算
				*IFNULL函数
	6.分组查询:
		*语法:group by 分组字段
		*注意:
			1.分组之后查询的字段:分组字段、聚合函数
			2.where和having的区别?
				*where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
				*where后不可以跟聚合函数,having可以进行聚合函数的判断
		例:
			按照性别分组,分别查询男、女同学的平均分
			SELECT sex,AVG(math) FROM student GROUP BY sex;
			按照性别分组,分别查询男、女同学的平均分,人数
			SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;
			按照性别分组,分别查询男、女同学的平均分,人数 要求:分数不低于70分的人,不参与分组。
			SELECT sex,AVG(math),COUNT(id) FROM student WHERE math>70  GROUP BY sex;
			按照性别分组,分别查询男、女同学的平均分,人数 要求:分数不低于70分的人,不参与分组,分组之后,人数大于2人。
			SELECT sex,AVG(math),COUNT(id) FROM student WHERE math>70  GROUP BY sex HAVING COUNT(id)>2;		
	7.分页查询:
		*语法:limit 开始的索引,每页查询的条数
		*公式:开始的索引 = (当前的页码 -1) * 每页显示的条数
			每页显示3条记录
				SELECT * FROM student LIMIT 0,3; 第一页

				SELECT * FROM student LIMIT 3,3;  第二页

				SELECT * FROM student LIMIT 6,3;  第三页
		*limint分页操作式一个MySQL的“方言”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值