工欲善其事必先利其器——MySQL数据库(2),查询操作
- 一般查询
- 查询所有字段
select * from 表名;
- 查询指定字段
select 列1,列2,... from 表名;
- 使用 as 给字段起别名
select 字段 as 别名 ... from 表名;
- 使用 as 给表起别名
select 别名.字段 .... from 表名 as 别名;在当前的sql 语句中 临时的给students 起了一个别名叫做s错误: select students.name, students.gender, students.age from students as s;select s.name, s.gender, s.age from students as s; # 临时的给students 起了一个别名叫做s
- sql语句完全的形式
只有正在使用当前数据库, 并且查找的数据表就在当前数据库中,才可以省略数据库名
数据表名什么时候不可以省略: 当一个sql语句中出现了多个数据表, 并且查询的字段在多个表中并且字段名相同, 此时表名不能够省略
例如查询 classes 表和 students 表中的name:错误: select name,name from classes,students;select students.name,classes.name from classes,students;
- 消除重复行
distinct 字段, 修饰所有需要查询的字段select distinct 字段 from 表名;
- 条件查询
- 比较运算符
">" : 查询年龄大于 18 的信息 select * from 表名 where age > 18; "<" ">=" "<=" "=":注意 SQL 中等于就是 "=",不是 "==" "!=" 或 "<>"
- 逻辑运算符
"and":18 岁以上的女性 select * from 表名 where age > 18 and gender = "女"; "or":18 岁以上或者为女性 select * from 表名 where age > 18 or gender = "女"; "not":年龄不是 18 岁的信息 select * from students where age != 18; select * from students where not age = 18;
- 模糊查询
"like" % 表示任意字符可有可无 查询姓名中有'黄'的名字 select * from students where name like "%黄%"; _ 表示任意一个字符 查询有2个字的名字 select * from students where name like "__"; "rlike":正则 查询以黄开始的姓名 select * from students where name rlike "^黄.*";
- 范围查询
"in":表示在一个非连续的范围内 查询年龄为 18 和 34 的学生 select * from students where age = 18 or age = 34; select * from students where age in (18,18,34); "not in":表示不再连续的范围内 查询年龄不是 18 和 34 的学生 select * from students where age not in (18,34); "between ... and ...":表示在一个连续的范围内,两边都会包含,是闭区间. 查询年龄在 18 到 34 之间的信息 select * from students where age between 18 and 34; "not between ... and ...":表示不再一个连续的范围内 ``` - 空判断 null, 不能使用比较运算符 ``` select * from 表名 where 字段 is NULL; select * from 表名 where 字段 is not NULL; 注意不能使用 not is
- 排序
order by 字段 asc(升序)|desc(降序) 默认就是升序排序 asc 可以省略
- 降序 desc
查询年龄在18到34岁之间的女性,身高从高到矮排序select * from students where age between 18 and 34 and gender = 2 order by height desc;order by 多个字段 order by age asc, height desc查询年龄在18到34岁之间的女性,身高从高到矮排序, 如果身高相同的情况下按照年龄从小到大排序select * from students where age between 18 and 34 and gender = 2 order by height desc, age desc;
- 聚合函数
count(*) 以行单位来进行统计个数 count(*) 效率更高, 效率略差:count(height)--> 获取对应的行--> 获取该行对应字段是否为NULL select count(*) from students; # 以行为统计单位 select count(height) from students; # 以不为空的height字段对应的值作为统计单位 ``` - 最大值 ``` max() ``` - 最小值 ``` min() ``` - 求和 ``` sum() ``` - 平均值 ``` avg() ``` - 四舍五入 ``` round() 计算所有人的平均年龄,保留2位小数 select round(avg(age),2) from students;
- 分组
分组的目的就是为了更加精细的做聚合统计操作group by 字段1,字段2查看有哪几种性别select distinct gender from students;select gender from students group by gender; # 将分组之后的标签查询出来查询分组数据中的人的姓名select gender, group_concat(name) from students group by gender;查询同种性别中的姓名和身高select gender,group_concat(name,":",height) from students group by gender;查询平均年龄超过30岁的性别,以及姓名 select gender,group_concat(name) from students group by gender having avg(age) > 30;having 和 where 的区别where: 对源数据做条件筛选having: 是对分组之后的数据做进一步的筛选操作, 有having就一定有group by, 有 group by 不一定有having
- 分页
limit start, countstart: 表示从哪里开始查询, start 默认值为0, 可以省略, 跳过多少条数据count: 查询多少条第1页select * from students limit 0,4;第2页select * from students limit 4,4;第3页select * from students limit 8,4;每页显示5个,显示第3页的信息, 按照年龄从小到大排序 start = (pagenum - 1) * count错误: select * from students limit 10,5 order by age asc;正确: select * from students order by age asc limit 10,5;
- 连接查询
-- 连接查询 将两个表中的数据按照设置的连接条件进行筛选, 符合连接条件的数据才能够被筛选出来table1 inner join table2 on 设置内连接条件 --> 内连接查询select * from students inner join classes on students.cls_id = classes.id;-- 按照分组的方式显示班级的学生select classes.name,group_concat(students.name) from students inner join classes on students.cls_id = classes.id group by classes.name;select c.name,group_concat(s.name) from students as s inner join classes as c on s.cls_id = c.id group by c.name;-- 外连接查询: left join + right joinleft join 左外连接查询-- 查询每位学生对应的班级信息,不满足连接条件的数据会以NULL填充select * from students left join classes on students.cls_id = classes.id;
工欲善其事必先利其器——MySQL数据库(2),查询操作相关推荐
- MySQL数据库的查询操作
目录 一.数据查询语句的基本格式 二.单表查询 查询表中的若干列 查询指定列 查询经过计算的值 选择表中的若干元组 去重 条件查询 order by 子句 聚集函数 group by 子句 三.连接查 ...
- 对MySql数据库插入数据操作
#!/user/bin/env python # _*_ coding:utf-8 _*_ import MySQLdb conn= MySQLdb.connect(host='localhost', ...
- MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】
MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...
- java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码
jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...
- Linux下Mysql数据库的基础操作
Linux下Mysql数据库的基础操作 一.Mysql数据介绍 二.数据库相关术语介绍 1.数据库相关名词 2.相关术语介绍 三.Mysql数据库的管理 1.创建数据库用户 2.查询用户状态 3.修改 ...
- mysql数据库代码_【代码总结】MYSQL数据库的常见操作
============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与关闭 -h:指定所连接的服 ...
- 第二百七十九节,MySQL数据库-pymysql模块操作数据库
MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数 使用方式: 模块名称.conne ...
- mysql数据库限流方案_用于对MySQL数据库的并发操作进行控制的方法及装置的制造方法_3...
的数据库操作特点,预先设置的所述第一限流类型可以不同于本实施例中的设置,同样可以实现本申请的技术方案,也在本申请的保护范围之内. [0103]步骤102-3:判断MySQL数据库的threads_ru ...
- 初识MySQL数据库(MySQL数据库的基础操作)
初识MySQL数据库 前言 1.查询所有数据库 2.创建数据库 2.1指令1: 2.2指令2: 3.3指令3: 3.删除数据库 3.1指令1: 3.2指令2: 在这里插入图片描述 4.切换数据库 总结 ...
- Java数据库开发与应用之MySQL数据库、JDBC操作数据库、C3P0数据库连接池,Java反射等
MySQL数据库,JDBC接口,MyBatis框架等,掌握的数据的存放和管理. Java数据库开发基础,介绍MySQL数据库.JDBC操作数据库.C3P0数据库连接池,Java反射等内容,进行油画商城 ...
最新文章
- grs matlab公式,[转载]matlab中Max的用法(转)
- Java中的对象序列化操作
- mysql 交集_MySQL 查询结果取交集的实现方法
- HDU-2062 Subset sequence 递推
- 在linux中建立一个vim的目录,Linux学习笔记一(目录结构、Vim编辑器、用户管理)...
- 各种免费在线工具收集
- hdf5文件-环境配置/使用读写
- C语言阶梯电费函数,用阶梯电价计算逻辑学习销售人员阶梯提成计算函数
- 搭建一套直播平台需要多少钱
- utc时间 单位换算_UTC转换本地时间
- 两次维权ZB系交易所,我和ZB的魔幻往事
- 使用BMFont工具来精简字体库
- 第二章 聚合数据模型
- android 4.2.2进度条,进度条(ProgressBar)——Mars Android开发视频之第一季第十七集(重)...
- kaggle数据集下载步骤
- 生产制造业订单管理软件如何做好订单变更管理?
- ESD器件的主要性能参数
- python 魔法阵
- 电脑计算机网络都打不开怎么办,电脑打不开网页怎么办?如何解决电脑网页打不开问题...
- 鉴定一下软件测试热门词汇