mysql数据库的十种查询方式及多表查询
--mysql数据库的十种查询方式
-- (1)查询时起别名
SELECT id AS '编号',NAME AS '姓名',age AS '年龄'
FROM student;
-- (2)查询时添加常量列
SELECT id AS '编号',NAME AS '姓名',age AS '年龄',
'软件工程' AS '班级' FROM student;
-- (3)查询时合并列
-- 注意:只能合并数值列
SELECT id,NAME,age,math,english,
(math+english) AS '总成绩' FROM student;
-- (4)查询时去除重复
SELECT DISTINCT(address) FROM student;
-- 另一种方式
SELECT DISTINCT address FROM student;
-- (5)条件查询
-- 1.逻辑条件(and与 or或)
-- 1.1查询id=1且age=18的学生信息
SELECT * FROM student WHERE id=1 AND age=18;
-- 1.2查询age=18或age=20的学生
SELECT * FROM student WHERE age=18 OR age=20;
-- 1.3查询(id=1且age=18)或者(age=20)的学生
SELECT * FROM student WHERE id=1 AND age=18 OR age = 20;
-- 2.比较条件(> < >= <= = <>(不等于))
-- 2.1查询年龄>=19的学生
SELECT * FROM student WHERE age >= 19;
-- 2.2查询年龄大于等于18且id不为2的学生
SELECT * FROM student WHERE age>=18 AND id<>2;
-- 2.3查询id大于1或者age小于等于19的学生
SELECT * FROM student WHERE id> 1 OR age <=19;
-- 2.4查询姓名不为''空字符串的学生
-- 注意:<>''将空字符串和null都去除了
SELECT * FROM student WHERE NAME <> '';
-- 3.判空条件(is not null不为空,is null为空)
-- 3.1查询姓名为null的学生
SELECT * FROM student WHERE NAME IS NULL;
-- 3.2查询姓名不为null的学生
-- 注意:''空字符串和null是不同的
SELECT * FROM student WHERE NAME IS NOT NULL;
-- 4.模糊查询(like)
-- %表示占位符或统配符,代表任意字符串或什么都不写
-- _表示占位符,代表任意单个字符
-- 4.1查询姓张的学生
SELECT * FROM student WHERE NAME LIKE '张%';
-- 4.2查询姓名中包含'三'的学生
SELECT * FROM student WHERE NAME LIKE '%三%';
-- 4.3查询名字中包含三的学生,且名字为3个字
SELECT * FROM student WHERE NAME LIKE '_三_';
-- (6)聚合函数
-- max()最大值 min()最小值 AVG()平均值
-- round()保留几位小数 count()统计记录数
-- 1.求出数学成绩的最高分
SELECT MAX(math) FROM student;
-- 2.查询数学成绩最高分的学生信息
-- 使用子查询(in),表示在某个范围
SELECT * FROM student WHERE math IN
(SELECT MAX(math) FROM student);
-- 3.求出英语成绩的最低分
SELECT MIN(english) FROM student;
-- 4.求数学成绩的平均成绩
SELECT AVG(math) FROM student;
-- 5.保留2位小数(四舍五入)
SELECT ROUND(math,2) FROM student;
-- 6.统计姓名字段有多少条记录
-- 注意:不包含null数据
SELECT COUNT(NAME) FROM student;
-- 7.查询student里共有多少条记录(数据)
-- *通配符,表示查询所有字段
SELECT COUNT(*) FROM student;
-- (7)查询后排序(order by)
-- 注意:order by必须写在where条件的后面
-- asc升序:按照字典序a-z从小到大排序
-- desc降序:按照字典序从大到小排序
-- 1.对英语成绩降序排序
SELECT * FROM student ORDER BY english DESC;
-- 2.对英语成绩降序排序,对数学成绩升序排序
-- 注意:先按照英语成绩降序排序,
-- 当英语成绩相同时按数学成绩升序排序
SELECT * FROM student ORDER BY english DESC,math ASC;
-- 3.对数学成绩进行排序
-- 没有写排序方式,默认按升序排序
-- 默认升序可以省略不写
SELECT *FROM student ORDER BY english,math;
-- (8)分页查询(limit m,n)
-- limit m,n m表示从哪个下标开始,选取n条数据
-- 这里n表示每页显示的条数
-- 对student表里的6条数据分页,每页显示2条,共3页
-- 第一页: 0~1
SELECT * FROM student LIMIT 0,2;
-- limit (1-1)*2,2 limit 0,2
-- 第二页: 2~3
SELECT * FROM student LIMIT 2,2;
-- limit (2-1)*2,2 limit 2,2
-- 第三页: 4~5
SELECT * FROM student LIMIT 4,2;
-- limit (3-1)*2,2 limit 4,2
-- 需求:假如表里有1000条数据,每页显示20条
-- 请问第34页显示的那些数据?
-- 推理分页公式:limit (第几页-1)*n,n
-- limit (34-1)*20,20
-- (9)分组查询(group by)
-- 1.需求:查询每个地区的学生有多少人
-- 显示结果:地区 人数
SELECT address AS '地区',COUNT(*) AS '人数'
FROM student GROUP BY address;
-- (10)分组查询后筛选(having)
-- 2.需求:查询地区人数>=2人的地区
SELECT address AS '地区',COUNT(*) AS '人数'
FROM student GROUP BY address HAVING COUNT(*)>2;
-- 多表查询
-- 创建学生表
-- 任务:查询学生姓名和所在的班级名称
-- (1)交叉查询(错误)
-- 交叉查询的结果为笛卡尔积(6*3=18)错误
-- 交叉查询会将每种情况都列举出来(错误)
SELECT s.name,c.name FROM student s,class c;
-- (2)内连接查询(最常用)
-- 只有符合连接条件的数据才会显示出来
-- 多表查询的3要素
-- a.要查哪些字段 b.要查哪些表 c.连接条件
SELECT s.name,c.name FROM student s
INNER JOIN class c ON s.classid=c.id;
-- 简写=
SELECT s.name,c.name FROM student s,class c
WHERE s.classid = c.id;
-- (3)左外连接查询(常用)
-- 左表(student表):左表里的数据全部显示出来
-- 右表(class表):右表只有符合连接条件的数据才会显示
SELECT s.name,c.name FROM student s
LEFT OUTER JOIN class c ON s.classid = c.id;
-- (4)右外连接查询(次常用)
-- 右外连接查询看成是左外连接查询倒过来
-- 左表(class表):左表只有符合连接条件的数据才会显示
-- 右表(student表):右表里的数据全部显示出来
SELECT s.name,c.name FROM class c
RIGHT OUTER JOIN student s ON c.id=s.classid;
-- (5)自连接查询
-- 任务:查询员工名字和其上司姓名
CREATE TABLE employee(
id INT PRIMARY KEY,
NAME VARCHAR(10),
bossid INT
);
-- 插入数据
INSERT INTO employee VALUES (1,'张三',2);
INSERT INTO employee VALUES (2,'李四',3);
INSERT INTO employee VALUES (3,'王五',4);
INSERT INTO employee VALUES (4,'陈六',5);
INSERT INTO employee VALUES (5,'老王',NULL);
SELECT * FROM employee;
-- 任务:查询员工名字和其上司姓名
-- 自连接查询的原理:使用左外连接查询,
-- 只是左表和右表是同一张表
SELECT e1.name,e2.name FROM employee e1
LEFT OUTER JOIN employee e2 ON e1.bossid = e2.id;
mysql数据库的十种查询方式及多表查询的更多相关文章
- Django Mysql数据库-基于双下划线的跨表查询
一.基于双下划线的跨表查询 Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系.要做跨关系查询,就使用两个下划线来链接模型(mode ...
- MySQL数据库的创建和操作以及多表查询
创建数据库: CREATE DATABASE 数据库名称; 查看所有的数据库: SHOW DATABASES; 操作指定数据库: USE 数据库名称; 查看当前所操作的数据库: SELECT DATA ...
- ref:详解MYSQL数据库密码的加密方式及破解方法
ref:https://blog.csdn.net/paul123456789io/article/details/53081921 MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中 ...
- MySQL数据库查询操作进阶——多表查询
多表查询 在大部分情况下,我们用到的表都是彼此相关联的,所以我们会有相当大的需求用到跨表的查询,这个时候我们就需要将相关联的表连起来做多表查询. 多表查询分为连表查询和子查询,连表查询即将相关联的表连 ...
- mysql数据库,当数据类型是float时,查询居然查询不出数据来
mysql数据库,当数据类型是float时,查询居然查询不出数据来,类似如下: 以后mysql数据库不用float类型,而double类型可以查得出来.
- Hibernate_day04--课程安排_Hibernate查询方式_对象导航查询_OID查询
Hibernate_day04 上节内容 今天内容 Hibernate查询方式 对象导航查询 OID查询 HQL查询 查询所有 条件查询 排序查询 分页查询 投影查询 聚集函数使用 QBC查询 查询所 ...
- 【MySQL】MySQL进阶(外键约束、多表查询、视图、备份与恢复)
约束 外键约束 外键约束概念 让表和表之间产生关系,从而保证数据的准确性! 建表时添加外键约束 为什么要有外键约束 -- 创建db2数据库 CREATE DATABASE db2; -- 使用db2数 ...
- MySQL简单查询详解-单表查询
MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...
- Mybatis_resultMap的关联方式实现多表查询(一对多)
a)在 ClazzMapper.xml 中定义多表连接查询 SQL 语句, 一次性查到需要的所有数据, 包括对应学生的信息. b)通过<resultMap>定义映射关系, 并通过<c ...
随机推荐
- Shell—脚本编程进阶
shell脚本进阶之条件语句 条件选择if语句 https://www.runoob.com/?s=shell&page=1 https://www.cnblogs.com/flylinux/ ...
- [洛谷P1169][题解][ZJOI2007]棋盘制作
我不是题目的说 这道题运用了一种很巧妙的DP方式:悬线法 如图,蓝色为悬线,黄色为向两边延伸的长度 那么显然,最大子矩形的宽一定是这些黄线中最小的(证明从略) 所以我们可以维护三个数组: Up[i][ ...
- mysql的repeat()函数
用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数 mysql> select repeat('ab',2); +----------------+ | repeat('ab',2 ...
- ASP.NET MVC教程一:ASP.NET MVC简介
一.MVC模式简介 MVC模式是一种流行的Web应用架构技术,它被命名为模型-视图-控制器(Model-View-Controller).在分离应用程序内部的关注点方面,MVC是一种强大而简洁的方式, ...
- 对vue-cli各个目录的理解 和 在 vue 中使用json-server
看了几章书,看到了vue模板,看不下去哦,就找了一个B站的vue视频来看,下面进行总结. 学习一个语言,框架,CRUD..先学会. 重点就是最为常用的几个语句.学得不多,感慨挺多.. 前提:下载好vu ...
- Android 媒体格式
音频格式和编解码器 格式/编解码器 编码器 解码器 细节 支持的文件类型/容器格式 AAC LC • • 支持单声道/立体声/ 5.0 / 5.1内容,标准采样率为8至48 kHz. •3GPP(.3 ...
- Windows 7下安装hexo
安装hexo 随便在某个地方新建一个文件夹,然后在文件夹空白处按住Shift+鼠标右键,然后点击在此处打开命令行窗口,在cmd里面输入: npm install hexo-cli -g 安装好之后界面 ...
- 使用 vs code 创建 Django 项目
操作流程: 1.前期准备工作 2.vs code配置Python环境 3.新建 Django 项目 4.vs code 配置 Debug Django 环境 5.浏览器查看效果 1.前期准备工作 安装 ...
- 以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取【原创】
以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取 Author:张昺华 Email:920052390@qq.com Time:2019年3月23日星期六 此文也在我的个人公众号 ...
- 【论文阅读】Second-order Attention Network for Single Image Super-Resolution
概要 近年来,深度卷积神经网络(CNNs)在单一图像超分辨率(SISR)中进行了广泛的探索,并获得了卓越的性能.但是,大多数现有的基于CNN的SISR方法主要聚焦于更宽或更深的体系结构设计上,而忽略了 ...