-- 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. Redis学习——数据结构下

    4.集合(集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素.) 1.命令 .集合内操作 1.添加元素 ...

  2. 5分钟搞定一个网页特效----v客学院技术分享

    这是我们v客学院基础班的童鞋都做完的一个超简单炫酷的特效demo,今天我来带大家用最快的速度和最简单的方法制作一个音乐抖动条,大家有兴趣不妨一起来试试~~~~~~~ 做这个demo之前我们得有一些ht ...

  3. golang拾遗:内置函数len的小知识

    len是很常用的内置函数,可以测量字符串.slice.array.channel以及map的长度/元素个数. 不过你真的了解len吗?也许还有一些你不知道的小知识. 我们来看一道GO101的题目,这题 ...

  4. Mac终端美化(iterm2+zsh+oh-my-zsh+powerlevel10k)

    iterm2+zsh+oh-my-zsh+powerlevel10k 一.下载iterm2 方式一:官网下载 https://iterm2.com/ 方式二:百度云下载 链接: https://pan ...

  5. JS通用校验工具

    将以下form的校验内容存放到路径中 1 // 是否包含<script> 2 export function checkScript(rule, value, callback) { 3 ...

  6. 2021年BI软件排名,国内外BI软件功能对比

    数据分析是帮助企业深入了解自身业务表现(例如正在做什么或哪块业务需要注意和改进)的重要元素.为了获得更直观的展现,数据分析BI软件可帮助公司通过报告.数据可视化.应用程序等从数据中获取决策数据支撑.没 ...

  7. Gogs+Drone搭建CI/CD平台

    Gogs 是由 Go 语言编写的 Git 服务器,由中国人主导开发的一款开源项目,搭建方便并且拥有完善的中文文档,配合 Drone 可以实现持续集成/持续部署.本文介绍如何通过 Docker 搭建 G ...

  8. Hadoop 3.1.1 - 概述 - 总览

    Apache Hadoop 3.1.1 和之前发布的 3.0.X 版本线相比,Apache Hadoop 3.1.1 吸收了许多重要的改进. 总览 建议用户阅读完整的版本说明.本文提供了对主要变动的总 ...

  9. 用python将word转pdf、doc转docx等

    word ==> pdf def doc2pdf(file_path): """ word格式转换doc|docx ==> pdf :return: &quo ...

  10. Mybatis学习笔记-Mybatis简介

    如何获得Mybatis 中文文档 https://github.com/tuguangquan/mybatis Github https://github.com/mybatis/mybatis-3 ...