-- 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 分组之前的

mysql基础操作(二):简单查询DQL的更多相关文章

  1. mysql基础-数据库表简单查询-记录(五)

    0x01 MySQL的查询操作 单表查询:简单查询                 多表查询:连续查询                联合查询 选择和投影 投影:挑选要符合的字段     select ...

  2. MySQL基础操作(二)

    MySQL基础操作 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.注意:使用视图时 ...

  3. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  4. MYSQL 基础操作

    1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...

  5. MySQL基础操作&&常用的SQL技巧&&SQL语句优化

    基础操作     一:MySQL基础操作         1:MySQL表复制             复制表结构 + 复制表数据             create table t3 like t ...

  6. MySQL基础(二)——DDL语句

    MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...

  7. mysql数据库优化课程---13、mysql基础操作

    mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...

  8. 【MySQL】MySQL基础操作语句

    mysql基础操作语句,包括数据库的增.删.切换,以及表的增.删.改.查.复制. 创建数据库 mysql> create database tem; 使用数据库 mysql> use te ...

  9. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  10. mysql 基础入门 单表查询

    单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...

随机推荐

  1. Linux从入门到进阶全集——【第十五集:安装apache服务器】

    1,查看是否安装了httpd软件包以及其依赖:rpm -qa httpd(rpm -qa | grep httpd),如果没有输出任何信息,表示你没有安装httpd软件包,如果有输出一般是已经安装了: ...

  2. python + pytest基本使用方法(参数化)

    import pytestimport math#pytest 参数化#'base,exponent,expected'用来定义参数的名称.# 通过数组定义参数时,每一个元组都是一条测试用例使用的测试 ...

  3. js中==和===的区别以及总结

    js中==和===的区别以及总结 学习js时我们会遇到 == 和 === 两种符号,现做总结如下 两种符号的定义 "==" 叫做相等运算符 "===" 叫做严格 ...

  4. idea创建web工程、配置tomcat及基本配置

    背景 现在许多人从eclipse转到idea了,小编也不例外.但是刚转初期还是有挺多不适应的,特总结了创建maven的web工程.配置tomcat服务器及基本配置.有了这些配置,上手idea也就跟ec ...

  5. Node.js躬行记(7)——定时任务的进化史

    一.纯手工 公司主营的是直播业务,会很许多打榜活动,也就是按主播收到的礼物或收益进行排序,排在前面的会有相应奖励. 纯手工时代,每接到一个活动,就重新写一份,第一次写完.之后就是复制黏贴,再修改,每次 ...

  6. 微信JSSDK的使用步骤

    步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".(登录后可在"开发者中心" ...

  7. AndroidStudio 插件总结

    工作中常用的插件备注如下: Alibaba Java Coding GuidelinesCheckStyle-IDEAAndroid Drawable PreviewGsonFormatTransla ...

  8. 面试官疯狂问我:char和varchar的区别 怎么办?愣着干嘛?进来白嫖啊!

    MySQL的修仙之路,图文谈谈如何学MySQL.如何进阶!(已发布) 面前突击!33道数据库高频面试题,你值得拥有!(已发布) 大家常说的基数是什么?(已发布) 讲讲什么是慢查!如何监控?如何排查?( ...

  9. docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    docker报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon run ...

  10. Android程序员如何通过跳槽薪资翻倍?

    马爸爸总结了一句话:跳槽,要么是钱不到位,要么是受了委屈. 我给自己这次的跳槽经历做了一个分析,希望能对那些想换工作的朋友有所帮助. 许多朋友想换工作,但是对"换工作"的理解可能仅 ...