一,查询数据
1,基本语法
select */字段名 from 表名[where条件] ;
2,完整语法
Select[select 选项] */字段名[字段别名] from 数据源 [where条件语句] [group by语句] [having语句] [order by语句] [limit语句]
1)select 选项:
①All:默认的,保留所有结果
②Dstinct:去重,将查处来的结果,将重复去掉(所有字段都相同)。
③select * from user ;== select all * from user ;
④去重:select distinct * from user ;
2)字段别名:
字段别名:当数据查询出来的时候,有时候名字不一定满足需求(当进行多表查询的时候,会出现字段重名情况),需要对字段进行重命名,即字段别名。
字段别名语法:字段名 [as] 别名
①select id,number,name,gender from user ; ==select id as ID,number as 学号,name as 姓名,gender as 性别 from user ;
3)数据源:
数据源:数据的来源。关系型数据库的来源都是数据表,只要保证数据类似二维表,则都可以作为数据源。
数据源分类:单表数据源、多表数据源、查询语句
①单表数据源:select * from user ;
②多表数据源:select * from 表名1,表名2....; 从一张表取出一个记录,去另外一张表去匹配所有记录。并将所有表所有记录都保留(记录数和字段数)。进行交叉连接。
③子查询:数据的来源是一个查询语句(查询语句的结果是一个二维表)。
select * from(select 语句) as 表的别名;==select * from (select * from user) as s ;
4)where条件语句
where语句:用来判断数据,筛选数据。where语句返回结果:0或1,代表false和true。
①判断条件:
比较运算符:>,<,=,!=,>=,<=,like(模糊查询),between...and,in/not in
逻辑运算符:&&(and),||(or),!(not)
update my_user set age = floor(rand()*20+20),height=floor(rand()*20+170);(floor向下取整数),rand()是随机取0或1一个数。
②条件查询1
A,找出学生id为1或3或5的学生。
落在集合中:select * from my_user where id in(1,3,5);
条件查询2
B,找出学生170~180之间
select * from my_user where height between 170 and 180;
between 本身是一个闭区间,between...and 左边的值必须小于或等于右边的值。
C,select * from my_user where 1 ;所有条件都查询出来
5)Group by字句
group by:分组的意思,根据某个字段进行分组(相同的分一组,不同的分一组)
分组的作用:是为了统计数据(按组统计,按分组字段进行数据统计)
SQL提供了一系列的数据统计函数:
Count() :统计分组后的记录数:每一组有多少记录。
Max():统计每组中的最大值。
Min():统计每组中的最小值。
Avg():统计平均值
Sum():统计和
A分组统计:根据gender分组,数量,身高最高,身高最低,平均年龄,年龄总和
select gender,count(*),max(height),min(height),avg(age),sum(age) from my_user group by gender
B,Count函数:里边可以有两种参数:*代表统计记录。字段名,代表统计对应的字段(NULL不统计)。
6)Having字句
Having字句:与where字句一样,进行条件判断的。
where是针对磁盘数据进行操作,进入内存后,进行分组操作,分组结果需要Having来处理。
①Having几乎能做where能做的所有事情,但是where却不能做Having的事情。
②Having能使用字段别名,而where不能,where针对磁盘数据操作,名字只可以是字段名,而字段别名在字段加载到内存中才会产生
7)Order by字句
order by:排序,根据某个字段进行升序或降序排列,依赖校对集。
order by使用语法:order by 字段名 [asc|desc] ;asc[默认的]升序,desc降序
8)limit字句
limit是限制结果的语句,限制数量。
limit有两种使用方式:
①用来限制长度(数据量/记录数)limit 数据量。
②限制起始位置,长度 limit起始位置,长度 。记录数从0开始编号即第一个
③Limit字句用来实现数据的分页。为用户节省时间,提高服务器的执行效率,减少资源浪费。
对于用户来讲,可以点击分页按钮 1、2、3、4
对于服务器来讲,根据用户选择的页码来返回详细的数据。limited offset length;
length:分页后每页显示的数量,基本不变
offset:offset = (页码-1) * length ; 起始位置,与页码有关系