-- 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. React组件三大属性之 props

    React组件三大属性之 props 理解1) 每个组件对象都会有props(properties的简写)属性2) 组件标签的所有属性都保存在props中 作用1) 通过标签属性从组件外向组件内传递变 ...

  2. PAT乙级:1069 微博转发抽奖 (20分)

    PAT乙级:1069 微博转发抽奖 (20分) 题干 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入 ...

  3. mysql实现主从复制、读写分离的配置方法(二)

    由于接触主从复制,读写分离的时间比较短,应用还不够熟练,目的是能通过MyCat实现基础的读写分离操作. 其核心功能是分库分表,配合数据库的主从模式还可实现读写分离. 1. 测试环境 一台win10主机 ...

  4. TCP协议与HTTP协议区别

    一.TCP协议与HTTP协议区别 1.直观认识 TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页 ...

  5. 如何移除本地文件夹与Git的连接

    1.在需要移除的文件夹下打开Git Bash 2.在命令行中输入如下语句 find . -name ".git" | xargs rm -Rf

  6. protobuf基础类以及python 转换pb2.py文件

    一 protobuf-前端解析js 前端解析思路: 1.问后端要数据模型文件,比如名为MODEL.proto 2.使用谷歌官方的工具生成MODEL.js 3.把项目中引用的MODEL.js 和谷歌官方 ...

  7. django中路由配置的正则

    在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...

  8. #使用C#winform编写渗透测试工具--子域名挖掘

    使用C#winform编写渗透测试工具--子域名挖掘 这篇文章主要介绍使用C#winform编写渗透测试工具--子域名挖掘.在渗透测试中,子域名的收集十分重要,通常一个网站的主站的防御能力特别强,而他 ...

  9. Apache OfBiz 反序列化命令执行漏洞(CVE-2020-9496)

    影响版本 - Apache Ofbiz:< 17.12.04 访问 https://192.168.49.2:8443/webtools/control/xmlrpc 抓包 进行数据包修改 pa ...

  10. 创建一个计算器的函数calc含有两个数字,调用函数的函数传递一个函数,分别是实现加减乘除

    function calc(num){ var n1=8; var n2=2; num(n1,n2); } //加 functiong jia(a,b){ console.log( a+b ); } ...