MySQL Class2

学习内容:

表查询语句:

select 字段名 from 表名; //查询指定列

select 字段名 as 自定义字段名 from 表名; //查询时修改显示的列名 注意并未改变表结构

select  (字段名+字段名) as 自定义字段名 from 表名; //查询时合并列,加法运算,只能合并数值

select distinct 字段名 from 表名; //查询时去重

条件查询:

select 字段名 from 表名 where 字段名=值 and 字段名=值; //与运算查询

select 字段名 from 表名 where 字段名=值 or 字段名=值; //或运算查询

select 字段名 from 表名 where 字段名> < >= <= !=; //大于 小于 大于等于 小于等于 不等于查询

select 字段名 from 表名 where 字段名 between 值 and 值; //相当于 >= and <=查询

insert into 表名 values(); //空

insert into 表名 values(''); //空字符串

select 字段名 from 表名 where 字段名 is null; //判断是否为空

select 字段名 from 表名 where  字段名=''; //判断是否为空字符串

select 字段名 from 表名 where  字段名 like '字符%'; //查询指定字符开头的数据

select 字段名 from 表名 where  字段名 like '%字符%'; //查询是否含有指定字符

select 字段名 from 表名 where  字段名 like '字符_'; //查询是否以指定字符开头并且只有两个字符

PS 取反可用 not like

聚合查询:

select sum(字段名) as 自定义字段名 from 表名; //求总和并自定义显示名

select avg(字段名) as 自定义字段名 from 表名; //求平均数

select min(字段名) as 自定义字段名 from 表名; //求最小数

select max(字段名) as 自定义字段名 from 表名; //求最大数

select count(字段名) as 自定义字段名 from 表名; //计数 指定列的数据数量的最大值

select count(*) as 自定义字段名 from 表名; //表内所有列数据数量的最大值

select sum(字段名) as 自定义字段名 from 表名 where 字段名=(select sum(字段名) as 自定义字段名 from 表名) ; // 子查询

PS year(字段名)可以查询那一年,例如知道生日求年龄,则可以使用 year(now())-year(定义的生日字段)

分页查询:

第一行起始值为0

select  * from 表名 limit (当前页-1)*每页显示多少条,每页显示多少条;

limit ?,? 第一个数字决定从第几条(下标基0)开始显示,第二个数字决定一共显示几条数据

例:

SELECT * FROM stu LIMIT 0,2;
SELECT * FROM stu LIMIT 2,2;
SELECT * FROM stu LIMIT 4,2;
SELECT * FROM stu LIMIT 6,2;
SELECT * FROM stu LIMIT 8,2;
SELECT * FROM stu LIMIT 10,2;

查询排序:

select * from 表名 order by 字段名 asc; //正序排序

select * from 表名 order by 字段名 desc; //反序排序

select * from 表名 order by 字段名 asc,字段名 desc; //多顺序排序 第一条件排序有重复时按照第二条件排序 默认的第二顺序是数据插入顺序

排序要注意一点,如果自增主键不是数字而是字符,虽然主键看起来和数字一样,但是排序时会按照字符顺序来,比如按照ASC,2会排在20前面而不是19,

这时要用CAST(id as SIGNED) 或CONVERT(id,SIGNED) 或者直接id+0来处理,这样字符会转为数字。

分组查询:

先分组再统计

group by 字段名 //分组

count(字段名) //统计

select 字段名,count(字段名) from 表名 group by 字段名;

注意,分组后,例如 group by 编组字段名 count(*),count计算的字段就是编组字段

分组查询后筛选

分组后用having 替代where来添加筛选条件

select 字段名,count(字段名) from 表名 where 判断条件 group by 字段名 having 判断条件;

select 字段名,count(字段名) from 表名 group by 字段名 having 判断条件;

 查询最大数量的某字段方式:

select 字段 from 表 group by 字段 order by count(*) desc limit 0,1;

例如 select 院系ID from 学生表 group by 院系ID order by count(*) desc limit 0,1;

把查询结果按照数量由大到小排序然后只显示一页一行,那么得到的字段就是数量最大的那个

原文地址:https://www.cnblogs.com/whwjava/p/8556054.html