mysql基础操作(二):简单查询DQL
-- 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的更多相关文章
- mysql基础-数据库表简单查询-记录(五)
0x01 MySQL的查询操作 单表查询:简单查询 多表查询:连续查询 联合查询 选择和投影 投影:挑选要符合的字段 select ...
- MySQL基础操作(二)
MySQL基础操作 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.注意:使用视图时 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- MYSQL 基础操作
1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...
- MySQL基础操作&&常用的SQL技巧&&SQL语句优化
基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t ...
- MySQL基础(二)——DDL语句
MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...
- mysql数据库优化课程---13、mysql基础操作
mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...
- 【MySQL】MySQL基础操作语句
mysql基础操作语句,包括数据库的增.删.切换,以及表的增.删.改.查.复制. 创建数据库 mysql> create database tem; 使用数据库 mysql> use te ...
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 基础入门 单表查询
单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...
随机推荐
- React组件三大属性之 props
React组件三大属性之 props 理解1) 每个组件对象都会有props(properties的简写)属性2) 组件标签的所有属性都保存在props中 作用1) 通过标签属性从组件外向组件内传递变 ...
- PAT乙级:1069 微博转发抽奖 (20分)
PAT乙级:1069 微博转发抽奖 (20分) 题干 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入 ...
- mysql实现主从复制、读写分离的配置方法(二)
由于接触主从复制,读写分离的时间比较短,应用还不够熟练,目的是能通过MyCat实现基础的读写分离操作. 其核心功能是分库分表,配合数据库的主从模式还可实现读写分离. 1. 测试环境 一台win10主机 ...
- TCP协议与HTTP协议区别
一.TCP协议与HTTP协议区别 1.直观认识 TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页 ...
- 如何移除本地文件夹与Git的连接
1.在需要移除的文件夹下打开Git Bash 2.在命令行中输入如下语句 find . -name ".git" | xargs rm -Rf
- protobuf基础类以及python 转换pb2.py文件
一 protobuf-前端解析js 前端解析思路: 1.问后端要数据模型文件,比如名为MODEL.proto 2.使用谷歌官方的工具生成MODEL.js 3.把项目中引用的MODEL.js 和谷歌官方 ...
- django中路由配置的正则
在django中配置路由遇到正则的坑: django2.x版本中使用re_path来进行正则表达式的匹配 用法如下: from Django.urls import re.path(导入re_path ...
- #使用C#winform编写渗透测试工具--子域名挖掘
使用C#winform编写渗透测试工具--子域名挖掘 这篇文章主要介绍使用C#winform编写渗透测试工具--子域名挖掘.在渗透测试中,子域名的收集十分重要,通常一个网站的主站的防御能力特别强,而他 ...
- Apache OfBiz 反序列化命令执行漏洞(CVE-2020-9496)
影响版本 - Apache Ofbiz:< 17.12.04 访问 https://192.168.49.2:8443/webtools/control/xmlrpc 抓包 进行数据包修改 pa ...
- 创建一个计算器的函数calc含有两个数字,调用函数的函数传递一个函数,分别是实现加减乘除
function calc(num){ var n1=8; var n2=2; num(n1,n2); } //加 functiong jia(a,b){ console.log( a+b ); } ...