MySQL系列(三):单表查询篇

一.单表查询
1.单表查询的总语法

select 列名1,列名2,...
	from 表名
	[where 条件]                   //边查询边筛选
	[group by 列名1,列名2...]      //将查询结果进行分组
	[having 条件]                   //将查询分组后的结果进一步筛选
	[order by 列名1 asc/desc,列名2 asc/desc]   //排序,默认升序asc
	[limit 数字1,数字2]               //限制输出的记录条数或分页

2.查询表中所有记录

		语法:select 列名1,列名2,...from 表名;  (推荐)
			select * from 表名;  (属于模糊查询,效率比上面的低)
			eg:#查询表中所有的记录
            select * from t_student;
            select sid,sname,sage,sex,address from t_student;

3.根据条件查询:语法:select 列名1,列名2,…from 表名 where 条件;

eg:#边查询边筛选:查询年龄小于20岁的所有的学生信息
			select sid,sname,sage,sex,address from t_student where sage<20;

4.查询完后对结果进行排序:select 列名1,列名2,…from 表名 order by 列名1…;

eg:#查询完后对结果进行一个列的排序:查询学生信息,按学号来排/按姓名排序
select sid,sname,sage,sex,address from t_student order by sname;

#查询完后对结果进行多个列的排序:查询学生信息,先姓名排序,再按年龄排序
select sid,sname,sage,sex,address from t_student order by sname asc,sage desc;

5.聚合函数:sum()求总和,max()最大值,min()最小值,avg()求平均值,count()求总记录 数.

	注意:一般情况下,普通不能与聚合函数列一起使用(语法上可以,但逻辑上有问题),结果集无法匹配,除非普通列作为分组条件就可以和聚合函数列一起使用
		聚合函数不能用在where,其他关键字后面可以用.
	eg:#聚合函数查询
   select count(sid),sum(sage),max(sage),min(sage),avg(sage) from t_student;
#一般情况下,普通不能与聚合函数列一起使用(语法上可以,但逻辑上有问题),结果集无法匹配
   select sname,count(sid) from t_student;

6.模糊查询:
6.1:通配符:一种特殊符号,每种符号有特定含义

	*: 代表表中所有列
		_: 代表一个任意字符
		%: 代表任意长度的任意字符
	
	6.2:like查询: select 列名1,列名2... from 表名 where 列名 like 通配符;
		注意:like一般要与通配符配合使用;能用Like查询的列是字符串列.
		eg:#like模糊查询:查询所有姓王的学生
         select sid,sname,sage,sex,address from t_student 
			where sname like '王%';

	6.3:between...and...:select 列名1,列名2... from 表名 
							where 列名 between 小值 and 大值;
		注意:between...and...适用于数据列;
			between...and...小范围的值写在前面,大范围的值写在后面.反之,语法不报错,但是无意义.
		eg:#BETWEEN and: 查询年龄在18到20岁的所有的学生信息
			select sid,sname,sage,sex,address from t_student 
			where sage>=18 and sage<=20;

			select sid,sname,sage,sex,address from t_student 
			where sage BETWEEN 18 and 20;
	
	6.4:in(值1,值2...): select 列名1,列名2... from 表名 
							where 列名 in(值1,值2...);
		eg:#in:查询年龄在18到20岁的所有的学生信息
select sid,sname,sage,sex,address from t_student where sage in(18,19,20);

select sid,sname,sage,sex,address from t_student 
where sage=18 or sage=19 or sage=20;

#in:查询地址是千锋1或者是千锋2
select sid,sname,sage,sex,address from t_student where address in('千锋1','千锋2');
	
		  select sid,sname,sage,sex,address from t_student 
		  where address='千锋1' or address='千锋2'


	6.5:is [not] null:select 列名1,列名2... from 表名 
							where 列名 is null;
		eg:#is null/is not NULL
			select sid,sname,sage,sex,address from t_student 
			where sage = null;#查询不到数据

			select sid,sname,sage,sex,address from t_student 
			where sage is null;
			select sid,sname,sage,sex,address from t_student 
			where sage is not nul

7.分组查询和筛选:

7.1:分组查询:select 列1,列2...from 表名 group by 列名1,列名2;
	eg:#分组查询:分别查询出男生和女生的总人数
	select sex,count(sid) from t_student GROUP BY sex

7.2.分组查询后再筛选:select 列1,列2...from 表名 group by 列名1,列名2
					having 条件;
	注意:有having的地方一定有group by,
		但是有group by的地方不一定有having.
	#分组查询后筛选:按性别分组查询,查询出总人数大于6的性别
select sex,count(sid) from t_student GROUP BY sex having count(sid)>6

8.(MySql)limit的使用:

8.1:限制输出记录条数:select 列名1,列名2,...from 表名 limit 记录数;
		eg:#limit:限制输出记录条数;查询出学生表中前三条记录
			select sid,sname,sage,sex,address from t_student limit 3;

8.2:分页:select 列名1,列名2,...from 表名 limit 每页起始记录数,每页显示的记录条数;
		eg:#limit:对数据进行分页: 每页显示5条记录数,查询出第三页
			select sid,sname,sage,sex,address from t_student limit 10,5;
		
		分页总语法:select 列名1,列名2,...from 表名 
				limit (当前页码-1)*每页显示的记录条数,每页显示的记录条数;

9.(MySql,Oracle)distinct:去重

eg:#DISTINCT:如果有多条记录结果相同去重
	select DISTINCT sex from t_student;

二.在SQL语句中,运算符(算术运算符,赋值运算符,比较运算符,逻辑运算符)可以直接用.

1.在MySql中不等于: <>!=
			等于: =
2.逻辑运算符: and(并且),or(或者)

三.数据的完整性:数据库最重要的就是数据的完整性.

1.完整性:数据的可靠性和准确性.
2.数据完整性:实体完整性,域完整性,引用完整性,自定义完整性.
3.实体完整性:主键约束,唯一约束,标识列.
	注意:一般情况下,每张表都要有一个主键.
4.域完整性:数据类型,默认约束,非空,检查约束(check).
	注意:MySql5.5之后不支持检查约束
5.引用完整性:外键约束.
	外键约束的优点:保护数据的安全性
			 缺点:效率低
	综合外键约束的优缺点:一般不建立外键约束.
6.自定义完整性:规则、存储过程、触发器

回顾
1.dml(插入,修改,删除)
2.dql(基本查询,where,order by,聚合函数,模糊查询.group by,having,limit,distinct)
3.数据的完整性.

7:判断不为null和不为空字符串
select product_Name from prd_goods where ISNULL(product_Name)=0 and LENGTH(trim(product_Name))>0;
在这里插入图片描述

在这里插入图片描述

8:批量修改
在这里插入图片描述

在这里插入图片描述

第二种写法:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值