where条件筛选记录

select id,username,age from uesr where id=5;

alter table user add userDesc varchar(100);
update user set userDesc="This is a test" where id<=5; select id,username,age,userDesc from user where userDesc<=>null; -- <=>检测null
--is [not] null 检测null
select id,username,age,userDesc from user where userDesc is null; --[not] between ... and 选定范围
select id,username,age,sex from user where age between 18 and 20; --[not] in(值...) 指定集合
select id,username,age,sex from user where id in(1,3,5,7,9); --and / or
select id,username,age,sex from user where sex="男" and age>=20;
select id,username,age,sex from user where salary between 20000 and 100000 and sex="男";
select id,username,age,sex from user where id=1 or username="queen"; --[not] like 匹配字符
select id,username,age,sex from user where username like "queen";
--模糊查询 通配符 %任意长度的字符串 _任意一个字符
select id,username,age,sex from user where username like '%三%'; --查询username中有三的用户
select id,username,age,sex from user where username like "___"; --三个_匹配三个字符
select id,username,age,sex from user where username like "张_%"; --查询以张开头的最少两个字符大小
--默认忽略大小写

group by 对记录进行分组

--把值相同放到一个组中,最终查询出的结果只会显示组中一条记录
select id,username,age,sex from user group by sex;
--分组配合group_concat()查看组中某个字段的详细信息
select id,group_concat(username),age,sex from user group by sex;
--显示
+----+----------------------------------------------+-----+-----+
| id | group_concat(username) | age | sex |
+----+----------------------------------------------+-----+-----+
| 1 | king,张三,张子枫,刘德华,吴亦凡,张阿文,经过历 | 23 | 男 |
| 2 | queen,imooc,子怡,王菲 | 27 | 女 |
+----+----------------------------------------------+-----+-----+ --配合聚合函数使用 count() sum() max() min() avg()
select count(*) as total_users from user; --得到总记录数,null也统计,别名total_users
select count(userDesc) from user; --null不统计
--按照sex分组,得到用户名详情,并且分别统计组中的总人数
select group_concat(username) as usersDetail,sex,addr,count(*) as totalUsers from user group by sex;
--显示
+----------------------------------------------+-----+------+------------+
| usersDetail | sex | addr | totalUsers |
+----------------------------------------------+-----+------+------------+
| king,张三,张子枫,刘德华,吴亦凡,张阿文,经过历 | 男 | 上海 | 7 |
| queen,imooc,子怡,王菲 | 女 | 上海 | 4 |
+----------------------------------------------+-----+------+------------+ --按照addr分组,得到用户名的详情,总人数,得到组中年龄的总和,年龄的最大值、最小值、平均值
select addr,
group_concat(username) as usersDetail,
count(*) as totalUsers,
sum(age) as ageSum,
min(age) as ageMin,
avg(age) as ageAvg
from user
group by addr;
--显示
+------+-------------------------------+------------+--------+--------+---------+
| addr | usersDetail | totalUsers | ageSum | ageMin | ageAvg |
+------+-------------------------------+------------+--------+--------+---------+
| 上海 | king,queen,张三,张子枫,吴亦凡 | 5 | 161 | 23 | 32.2000 |
| 北京 | imooc,子怡 | 2 | 56 | 25 | 28.0000 |
| 南京 | 刘德华 | 1 | 14 | 14 | 14.0000 |
| 广州 | 王菲 | 1 | 62 | 62 | 62.0000 |
| 湖南 | 经过历 | 1 | 25 | 25 | 25.0000 |
| 西安 | 张阿文 | 1 | 14 | 14 | 14.0000 |
+------+-------------------------------+------------+--------+--------+---------+ --配合with rollup 会在记录末尾添加一条记录,是上面所有记录的总和
select group_concat(username) as usersDetail,
count(*) as totalUsers
from user
group by sex
with rollup; --按照字段位置来分组(addr)
select addr,
group_concat(username) as usersDetail,
count(*) as totalUsers
from user
group by 1; --查询age>=30的用户并且按照sex分组
select age,
group_concat(username) as usersDetail,
count(*) as totalUsers
from user
where age>=30
group by sex; --having子句对分组结果进行二次筛选
select addr,
group_concat(username) as usersDetail,
count(*) as totalUsers
from user
group by addr
having count(*)>=3;
--having totalUsers>=3; 也可以通过别名的形式二次筛选
--having后面可以加通过聚合函数操作的列(如:sum(),max())或者select查询到的列
--having进行分组条件的指定时,一定要保证分组条件要么为聚合函数,要么条件中的字段必须出现在当前的select语句中

order by 实现排序效果

order by 字段名称 asc|desc  --升序|降序

--测试
select id,username,age
from user
order by id desc;
--order by age; --按照age升序 select id,username,age
from user
order by age asc,id asc; --按照多个字段排序,先age,相同部分id select id,username,age
from user
where age>=30
order by age desc; --有条件的字段排序 select rand(); --产生(0-1)随机数 --实现随机记录
select id,username,age
from user
order by rand(); --每次产生的结果都不同

limit限制结果集的显示条数

limit 值 --显示结果集的前几条记录
limit offset,row_count --从offset开始,显示row_count条记录 --测试
--方式一
select id,username,age,sex from user
limit 5; --方式二
select id,username,age,sex from user
limit 1,5; --offset从0开始,用这种方式实现分页
--显示
+----+----------+-----+-----+
| id | username | age | sex |
+----+----------+-----+-----+
| 2 | queen | 27 | 女 |
| 3 | imooc | 31 | 女 |
| 4 | 张三 | 38 | 男 |
| 5 | 张子枫 | 38 | 男 |
| 6 | 子怡 | 25 | 女 |
+----+----------+-----+-----+ --1.更新user表中的前三条记录,将age加5
update user set age=age+5 limit 3;
--2.将user表中id字段降序排列,更新前三条记录,将age减10
update user set age=age-10 order by id desc limit 3;
--3.删除user表中的前三条记录
delete from user limit 3;
--4.删除user表中id字段降序排列的前三条记录
delete from user order by id desc limit 3;
--update或者delete时limit只支持一个参数形式

单表查询完整select语句的形式

select addr,
group_concat(username) as usersDetail,
count(*) as toTalUsers,
sum(age) as sum_age,
max(age) as max_age,
min(age) as min_age,
avg(age) as avg_age
from user
where id>=2
group by addr
having sum_age>=25
order by sum_age
limit 2;

MySQL基础之数据管理【2】的更多相关文章

  1. MySQL基础之数据管理【4】

    外键约束的使用(只有InnoDB存储引擎支持外键) create table news_cate( id tinyint unsigned auto_increment key comment '编号 ...

  2. MySQL基础之数据管理【3】

    MySQL中的多表联查 --查询emp的id username age depName create table emp( id int unsigned auto_increment key, us ...

  3. MySQL基础之数据管理【5】

    子查询的使用 select 字段名称 from tbl_name where col_name=(select col_name from tbl_name); --内层语句查询的结果可以作为外层语句 ...

  4. MySQL基础之数据管理【1】

    添加记录 insert [into] tbl_name[(col_name,...)] {value|values}(values...); --不指定字段名称时需要按照建表时的字段顺序给每一个字段赋 ...

  5. MySQL基础----py全栈

    目录 MySQL基础----py全栈 一.引言 1.什么是数据? 2.什么是数据库(DB)? 3.什么是数据库管理系统(DBMS)? 4.什么是数据库系统? 5.数据库管理系统由来 6.什么是数据模型 ...

  6. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  7. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  8. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  9. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

随机推荐

  1. Flask 教程 第五章:用户登录

    本文翻译自The Flask Mega-Tutorial Part V: User Logins 这是Flask Mega-Tutorial系列的第五部分,我将告诉你如何创建一个用户登录子系统. 你在 ...

  2. System.InvalidOperationException:This.NpgsqlTransaction has completed;it is no longer usable. at Npgsql.NpgsqlTransaction.CheckCompleted() in ...

    关于报此异常,原因是事务不能循环提交,一个方法中事务只能提交一次. System.InvalidOperationException:This.NpgsqlTransaction has comple ...

  3. tableView代理方法执行顺序

    tableView代理方法执行顺序,随着iOS系统版本的不断升级,执行顺序也有所变化 1.iOS7.1中先依次调一遍heightForRow方法再依次调一遍cellForRow方法,在调cellFor ...

  4. jeesite3环境部署时初始化数据库注意问题

    ---恢复内容开始--- 首先要修改jeesite.properties下数据库连接方式,注意选择自己的数据库 其次在pom.xml文件中修改对应的数据库连接方式 最后运行db文件夹下的init-db ...

  5. 36-Docker 的两类存储资源

    我们从本章开始讨论 Docker 存储. Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层. Data Volume. 我们会详细讨论它们的原理和 ...

  6. linux里如何配置本地yum源和外网yum源

    一:本地和外网源配置方法 二:外网YUM源的地址 一: ① 本地源配置方法:以光盘里rpm举例(这里使用虚拟机演示) 1.挂载一个iso的镜像 把光盘挂载到一个目录里,然后进入/etc/yum.rep ...

  7. Linux:VIM编辑器的使用

    打开vim编辑器 命令格式: vim 文件路径 vim编辑器的工作模式 进入编辑器后 默认为命令模式 进入输入模式 a 在光标后插入 o 换行插入 i 在光标前插入 返回命令模式 esc 键 进入末行 ...

  8. 2019年最新50道java基础部分面试题(二)

    前11题请看上一篇文章 12.静态变量和实例变量的区别?  在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加. 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对 ...

  9. python进阶之内存模型

    每一个编程语言的背后都有自己独特的内存模型支持,比如最经典的C语言,一个int类型占8字节.那么在python中不区分数据类型,定义一个变量其在内存在占用多少字节呢?python中数据的运算其内存是如 ...

  10. Java字符串面试问答

    字符串是使用最广泛的Java的类之一.在这里,我列出了一些重要的Java的字符串面试问答. 这将有助于您全面了解String并解决面试中与String有关的任何问题. Java基础面试问题 Java中 ...