-- 1.查询所有字段

select * from student;

-- 2.查询指定的字段

select id from student;
select id, name from student;

-- 3.查询时指定别名

select id as '编号', name as '姓名' from student; -- as关键字可以省略
select id '编号', name '姓名' from student;

-- 4.查询时添加常量列

--    需求:查询学生数据时添加一个"班级"列。值为"Java一班"
-- 开始的时候只有id 和 name 这两列;
-- as的使用:
-- 将id换为编号 将name换为姓名 将Java就业班放入班级中
-- 这里说的查询时添加常量列是指临时添加
-- 并不是像alter table student add column ...
-- 临时使用的列可以通过查询时动态添加进去
select id as '编号', name as '姓名', 'java一班' as '班级' from student;

-- 5.查询时合并列

--    需求:查询每个学生的总分。
-- 表如下:
-- id name age servlet mysql
-- 1 张三 20 75 80
-- 2 李四 19 86 90
select name as '姓名', (servlet+mysql) as '总成绩' from student;
-- 注意:合并列的字段必须是数值类型的字段。如果是非字符的字段合并查询没有意义。

如果要进行字段合并(如英文名的first name 和 last name 要使用concat函数)

-- 例如:
CONCAT(staff.first_name, CONCAT(" ", staff.`last_name`))

-- 6.查询去除重复记录(distinct)

--    需求:查询出有哪些地区的学生(排除重复)
-- 表如下:
-- id name age servlet mysql address
-- 1 张三 20 75 80 成都锦江
-- 2 李四 18 86 90 成都高新
-- 3 王五 19 85 66 成都武侯
select distinct address from student; -- 查询出address中的不重复的信息。 
select distinct(address) from student; -- 查询出address中的不重复的信息。 
-- 以上两种语法都是正确的:
-- 1.第一个中distinct是关键字。
-- 2.第二个中的distinct()是函数。

-- 7.条件查询(where)

-- 7.1 逻辑条件: and(与)   or(或)

-- 当出现两个或两个条件以上的时候,那么这两个条件一定会存在逻辑关系。
-- 当出现逻辑关系的时候,要么是与关系,要么是或关系(只存在这两种关系)
-- 需求:查询学生的id为1,且姓名为张三的学生
select * from student where id=1 and name = '张三'; -- (交集)
-- 需求: 查询学生的id为2,或者姓名为张三的学生
select * from student where id = 1 or name = '张三'; --(并集)

-- 7.2 比较条件:

-- >   <   >=  <=   =(和Java中的 == 相同 都是判等)  <>(mysql中的不等于 != )
-- (between and)(判断条件)
-- 需求:查询servlet分数大于80分的学生
select * from student where servlet>80;
-- 需求:查询mysql分数小于或者等于85分的学生
select * from student where mysql<=85;
select * from student where mysql<85 or mysql=85;
-- 需求:查询servlet分数大于或等于80分,且小于或等于85分的学生
select * from student where servlet>=80 and servlet<=85;
select * from student where servlet between 80 and 85; -- 80和85都包括在内
-- between and 在 ...之间,两边的都包括
-- 需求:查询年龄不等于30岁的学生
select * from student where age<>30; -- !=不是标准用法,mysql数据库中用<>

-- 7.3 判空条件:is null, is not null, =''(等于空串), <>''(不等于空串)

-- null:表示没有数据  is null、 is not null
-- 空字符:有数据
-- 需求:查询没有性别数据的学生(包括null和空串)
select * from student where gender is null or gender='';
-- 需求:查询有性别数据的学生
select * from student where gender is not null and gender <> '';

-- 7.4 模糊条件:like

-- 模糊替代符号:
-- %:替代任意个字符0~n个都可以
-- _:下划线只能替代一个字符
-- 需求:查询姓'李'的学生
select * from student where name like '李%';
-- 需求:查询名字中包含'四'字的学生
select * from student where name like '%四%';
-- 需求:查询姓'李',全名只有两个字的学生
select * from student where name like '李_';
-- 需求:查询姓'李',全名只有三个字的学生
select * from student where name like '李__';

-- 8.聚合查询:用于统计结果

-- max()   min()   avg()   count() 
-- 需求:查询servlet的最高分
select max(servlet) from student;
-- 需求:查询mysql的最低分
select min(mysql) from student;
-- 需求:查询servlet中的平均分
select avg(servlet) from student;
-- 需求:统计当前有几个学生
select count(*) from student; --使用count去统计数据,不要使用存在null的数据
-- count(id):统计有值的id字段的数量(排除掉null的数据)
select count(id) from student;

-- 9.分页查询(limit)

-- 查询的起始行数,查询的行数
-- 需求:查询第1,2条数据
select * from student limit 0,2;
-- 需求:查询第3,4条数据
select * from student limit 2,2;
-- 需求:查询第5,6条数据
select * from student limit 4,2;
-- 需求:学生有20条数据,每页显示5条,共4页
-- 现在要查看第三页(第11条到第15条)的学生数据sql:
select * from student limit 10,5;
-- 现在要查看第四页(第16条到第20条)的学生数据sql:
select * from student limit 15,5;
-- 已知:当前页码,每页显示条数
-- 结论:分页查询当前页数据的sql:
-- select * from student (当前页码-1)*每页显示条数,每页显示条数;

-- 10.查询后排序(order by)

-- desc:降序。数值从大到小,字母z-a
-- asc:升序。数值从小到大,字母a-z
select * from student; -- 默认情况下是按照插入顺序进行的排序
-- 需求:按照id的升序排序
select * from student order by id asc;
select * from student order by id;
-- 这里的asc可以省略,默认的排序方式就是升序排序;
-- 需求:按照servlet成绩降序排序
select * from student order by servlet desc;
-- 需求:先按照age升序,再按照servlet成绩降序排序;
select * from student order by age asc, servlet desc;
-- 这里就以age为主,age升序排完了之后,在不影响age的情况下
-- 对servlet进行降序排序;(当存在年龄相同的时候)
-- 多个条件排序:先按照前面的条件排序,当出现重复记录,再按照后面的条件排序
select * from student order by name asc;-- 按照姓名升序排列
-- 最好是英文,utf8对汉字的排码不能支持按照汉字首字母排序
-- 如果要按照名字排序的话,首先要使用gbk编码

-- 11.分组查询(group by)  先查询进行条件判断,再进行分组

-- 需求:查询每个地区有多少人
-- 预期结果:
-- 成都锦江 3
-- 成都高新 1
-- 1) 对地区进行分组
-- 2) 在分组的基础上进行统计,统计的是每一组的数据
select address, count(*) from student group by address;
-- 需求:统计男女的人数
-- 注意:where条件应该 在group by 之前
select gender, count(*) from student where gender is not null and gender<>'' group by gender;
-- 需求:统计男同学中成绩最高的
select gender, max(servlet) from student where gender is not null and gender<>'' group by gender;

-- 12.分组查询后筛选  先进行分组,分组之后再进行条件判断

-- 需求: 查询哪些地区的人数是大于2个的地区
-- 1)查询每个地方有多少人。
-- 2)再对每个地区人数进行判断,人数大于2的地区即为所求
-- 这里涉及关键字 having having特定使用指:对分组之后的结果进行筛选
select address, count(*) from student group by address having count(*)>2;
-- 注意:having是用在group by 之后的 ; where是用在 group by 分组之前的

最新文章

  1. HTML5零基础学习Web前端需要知道哪些?
  2. The Bottom of a Graph-POJ2553强连通
  3. HTML5-格式化
  4. 文件上传和下载(可批量上传)——Spring(二)
  5. MVC4中下拉菜单和单选框的简单设计方法
  6. ubuntu(Eclipse+JDK) 自动安装脚本
  7. 使用了BeanUtils的简单操作
  8. HW6.16
  9. AutoLayout(转)
  10. 如何成为一个牛逼的C/C++程序员?
  11. JavaScript瀑布流代码
  12. 【iOS】彩虹渐变色 的 Swift 实现
  13. centos 7安装mysql5.5
  14. HTML-JS基础 变量与输入输出 运算符 分支结构
  15. Markdown+Pandoc 最佳写作拍档 (mailp.in)
  16. openGL光源概念
  17. IDEA Tomcat:Failed to initialize end point associated with ProtocolHandler
  18. 手动用tomcat启动war包,无法访问web项目
  19. BUG描述规范管理
  20. Java笔记 #05# Java Native Interface

热门文章

  1. 【论文阅读】End to End Learning for Self-Driving Cars
  2. spring pom文件报错:提示no declaration can be found for element &#39;dubbo:service&#39;.
  3. Spring总结之SpringMvc下
  4. Vulnhub -- Jarbas靶机渗透
  5. 基于小熊派Hi3861鸿蒙开发的IoT物联网学习【一】
  6. jvm源码解读--13 gc_root中的栈中oop的mark 和copy 过程分析
  7. 从零开始了解kubernetes
  8. 一文彻底弄懂cookie、session、token
  9. 【LeetCode】209. 长度最小的子数组
  10. OpenFaaS实战之七:java11模板解析