mariadb(三)查
2024-10-07 12:04:10
-查询基本使用(条件,排序,聚合函数,分组,分页)
1)创建一个表结构然后添加数据
create table baba (id int unsigned not null auto_increment primary key, #设置id为不能空的约束和自增主键
-> name varchar() default '', #varchar(20)的意思为最多20个字符,根据字符个数占据内存大小
-> age tinyint unsigned default , #年纪默认值设为0
-> high decimal(,), #小数类型为5进2
-> gender enum('男', '女', '中性', '保密') default '保密', 设置枚举类型
-> cls_id int unsigned default ,
-> is_delete bit default
-> );
2)添加字段内数据
insert into baba values
(,'小明',,180.00,,,),
(,'小月月',,180.00,,,),
(,'彭于晏',,185.00,,,),
(,'刘德华',,175.00,,,),
(,'黄蓉',,160.00,,,),
(,'凤姐',,150.00,,,),
(,'王祖贤',,170.00,,,),
(,'周杰伦儿',,null,,,),
(,'程坤',,181.00,,,),
(,'和珅',,166.00,,,),
(,'刘亦菲',,162.00,,,),
(,'金星',,180.00,,,),
(,'静香',,170.00,,,),
(,'郭靖',,167.00,,,),
(,'周杰',,178.00,,,),
(,'钱小豪',,178.00,,,),
(,'谢霆锋',,175.00,,,),
(,'陈冠希',,175.00,,,);
4)查看全部字段内容:
select * from baba; #将字段为列标题,内容行输出
+----+--------------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+--------------+------+--------+--------+--------+-----------+
| | 小明 | | 180.00 | 男 | | |
| | 小月月 | | 180.00 | 男 | | |
| | 彭于晏 | | 185.00 | 男 | | |
| | 刘德华 | | 175.00 | 男 | | |
| | 黄蓉 | | 160.00 | 女 | | |
| | 凤姐 | | 150.00 | 保密 | | |
| | 王祖贤 | | 170.00 | 女 | | |
| | 周杰伦儿 | | NULL | 男 | | |
| | 程坤 | | 181.00 | 男 | | |
| | 和珅 | | 166.00 | 男 | | |
| | 刘亦菲 | | 162.00 | 女 | | |
| | 金星 | | 180.00 | 中性 | | |
| | 静香 | | 170.00 | 女 | | |
| | 郭靖 | | 167.00 | 男 | | |
| | 周杰 | | 178.00 | 男 | | |
| | 钱小豪 | | 178.00 | 男 | | |
| | 谢霆锋 | | 175.00 | 男 | | |
| | 陈冠希 | | 175.00 | 男 | | |
5)查看前三行内容
select * from baba where id< ; 用where来限定范围
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 小明 | | 180.00 | 男 | | |
| | 小月月 | | 180.00 | 男 | | |
+----+-----------+------+--------+--------+--------+-----------+
6)查看指定字段:
select name,age from baba; #查看指定的name,age段
+--------------+------+
| name | age |
+--------------+------+
| 小明 | |
| 小月月 | |
| 彭于晏 | |
| 刘德华 | |
| 黄蓉 | |
| 凤姐 | |
| 王祖贤 | |
| 周杰伦儿 | |
| 程坤 | |
| 和珅 | |
| 刘亦菲 | |
| 金星 | |
| 静香 | |
| 郭靖 | |
| 周杰 | |
| 钱小豪 | |
| 谢霆锋 | |
| 陈冠希 | |
7)查看指定字段并设置别名:
)查看指定字段并设置别名:
select name as '姓名' ,age as '年龄‘ from baba; #字段中间用逗号隔开
+--------------+--------+
| 姓名 | 年龄 |
+--------------+--------+
| 小明 | |
| 小月月 | |
| 彭于晏 | |
| 刘德华 | |
| 黄蓉 | |
| 凤姐 | |
| 王祖贤 | |
| 周杰伦儿 | |
| 程坤 | |
| 和珅 | |
| 刘亦菲 | |
| 金星 | |
| 静香 | |
| 郭靖 | |
| 周杰 | |
| 钱小豪 | |
| 谢霆锋 | |
| 陈冠希 | |
8)通过表名字段查询
select baba.name from baba;
9) 给表起别名查询
select mama.name from baba as mama;
10)消除重复行查询(distinct)
select distinct age from baba;
+------+
| age |
+------+
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
条件查询 比较运算符:
*查看所有数据中年纪大于40的数据。
MariaDB [mysql]> select * from baba where age > ;
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 刘德华 | | 175.00 | 男 | | |
| | 黄蓉 | | 160.00 | 女 | | |
| | 凤姐 | | 150.00 | 保密 | | |
| | 王祖贤 | | 170.00 | 女 | | |
| | 程坤 | | 181.00 | 男 | | |
| | 和珅 | | 166.00 | 男 | | |
| | 金星 | | 180.00 | 中性 | | |
| | 钱小豪 | | 178.00 | 男 | | |
12)*查看所有数据中身高在170到180之间的。
MariaDB [mysql]> select * from baba where high> and high < ; #注意不能写成170<high<
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 刘德华 | | 175.00 | 男 | | |
| | 周杰 | | 178.00 | 男 | | |
| | 钱小豪 | | 178.00 | 男 | | |
| | 谢霆锋 | | 175.00 | 男 | | |
| | 陈冠希 | | 175.00 | 男 | | |
13)*查看所有数据中id>15,或者性别为男的数据;
select * from baba where id > or gender=;
+----+--------------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+--------------+------+--------+--------+--------+-----------+
| | 小明 | | 180.00 | 男 | | |
| | 小月月 | | 180.00 | 男 | | |
| | 彭于晏 | | 185.00 | 男 | | |
| | 刘德华 | | 175.00 | 男 | | |
| | 周杰伦儿 | | NULL | 男 | | |
| | 程坤 | | 181.00 | 男 | | |
| | 和珅 | | 166.00 | 男 | | |
| | 郭靖 | | 167.00 | 男 | | |
| | 周杰 | | 178.00 | 男 | | |
| | 钱小豪 | | 178.00 | 男 | | |
| | 谢霆锋 | | 175.00 | 男 | | |
| | 陈冠希 | | 175.00 | 男 | | |
模糊查询(like)
%代表0个或多个
*查询所有数据中与’月‘相关的数据
MariaDB [mysql]> select * from baba where name like '%月%';
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 小月月 | | 180.00 | 男 | | |
*查询两个字的人名
ariaDB [mysql]> select * from baba where name like '__'; '_'为一个字符的为一个字符的占位符
+----+--------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+--------+------+--------+--------+--------+-----------+
| | 小明 | | 180.00 | 男 | | |
| | 黄蓉 | | 160.00 | 女 | | |
| | 凤姐 | | 150.00 | 保密 | | |
| | 程坤 | | 181.00 | 男 | | |
| | 和珅 | | 166.00 | 男 | | |
| | 金星 | | 180.00 | 中性 | | |
| | 静香 | | 170.00 | 女 | | |
| | 郭靖 | | 167.00 | 男 | | |
| | 周杰 | | 178.00 | 男 | | |
*查询三个字以及以上的人名:
MariaDB [mysql]> select * from baba where name like '_ _ _%';
+----+--------------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+--------------+------+--------+--------+--------+-----------+
| | 小月月 | | 180.00 | 男 | | |
| | 彭于晏 | | 185.00 | 男 | | |
| | 刘德华 | | 175.00 | 男 | | |
| | 王祖贤 | | 170.00 | 女 | | |
| | 周杰伦儿 | | NULL | 男 | | |
| | 刘亦菲 | | 162.00 | 女 | | |
| | 钱小豪 | | 178.00 | 男 | | |
| | 谢霆锋 | | 175.00 | 男 | | |
| | 陈冠希 | | 175.00 | 男 | | |
范围查询 in(1,,5,9) 查询非连续范围内的数据
*查询年纪是18和52的数据
MariaDB [mysql]> select * from baba where age= or age=; #注意这里和查询用的是or
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 小明 | | 180.00 | 男 | | |
| | 王祖贤 | | 170.00 | 女 | | |
| | 静香 | | 170.00 | 女 | | |
*查询不在20到50岁的数据
MariaDB [mysql]> select * from baba where age not between and ;
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 小明 | | 180.00 | 男 | | |
| | 小月月 | | 180.00 | 男 | | |
| | 刘德华 | | 175.00 | 男 | | |
| | 黄蓉 | | 160.00 | 女 | | |
| | 王祖贤 | | 170.00 | 女 | | |
| | 和珅 | | 166.00 | 男 | | |
| | 静香 | | 170.00 | 女 | | |
| | 钱小豪 | | 178.00 | 男 | | |
空判断(字符内容是否是null 用is)
MariaDB [mysql]> select * from baba where high is null;
+----+--------------+------+------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+--------------+------+------+--------+--------+-----------+
| | 周杰伦儿 | | NULL | 男 | | |
+----+--------------+------+------+--------+--------+-----------+
排序(order by) asc从小到大,desc从大到小排序
*查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;
MariaDB [mysql]> select * from baba where age between and and gender= order by high desc,age asc,id asc;
+----+--------------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+--------------+------+--------+--------+--------+-----------+
| | 彭于晏 | | 185.00 | 男 | | |
| | 小明 | | 180.00 | 男 | | |
| | 小月月 | | 180.00 | 男 | | |
| | 周杰 | | 178.00 | 男 | | |
| | 郭靖 | | 167.00 | 男 | | |
| | 周杰伦儿 | | NULL | 男 | | |
多个排序方法用逗号可开
聚合函数(count,max,min) where用于限定范围,聚合函数用于比较统计
*查询男性有多少人
MariaDB [mysql]> select count(*) from baba where gender=; #chount统计个数
+---------+
| count(*) |
+----------+
| |
*查询年纪最大的
MariaDB [mysql]> select max(age) from baba; #max(字段),缩小了搜索范围
+----------+
| max(age) |
+----------+
| |
*查询身高最小的
MariaDB [mysql]> select min(high) from baba; #min(字段)
+-----------+
| min(high) |
+-----------+
| 150.00 |
*查看女性中身高最高的
MariaDB [mysql]> select max(high) from baba where gender=;
+-----------+
| max(high) |
+-----------+
| 170.00 |
*计算序号大于1的男性的平均年纪
MariaDB [mysql]> select sum(age)/count(*), from baba where gender= and id >;
MariaDB [mysql]> select sum(age)/count(*), from baba where gender= and id >;
+-------------------+---+
| sum(age)/count(*) | |
+-------------------+---+
| 38.6364 | |
也可以将sum(age)/count(*) 写作avg(age) ,2为保留两位小数
分组(group by)
*查询每组性别中的人数
MariaDB [mysql]> select gender ,count(*) from baba group by gender; #中间逗号隔开;查看以性别分的组,统计每组人数个数
+--------+----------+
| gender | count(*) |
+--------+----------+
| 男 | |
| 女 | |
| 中性 | |
| 保密 | |
*查看男性组的成员姓名 #附带的字段内容用group——concat()来指定
MariaDB [mysql]> select gender ,group_concat(name) from baba where gender= group by gender;
+--------+-------------------------------------------------------------------------------------------------------------+
| gender | group_concat(name) |
+--------+-------------------------------------------------------------------------------------------------------------+
| 男 | 小明,谢霆锋,钱小豪,周杰,郭靖,和珅,程坤,周杰伦儿,刘德华,彭于晏,小月月,陈冠希
*查询男性中的人数多于4个的组的信息(这里就将性别看作成一个组)
MarmariaDB [mysql]> select gender ,group_concat(name,'|',age,'|',high) from baba where gender= group by gender having count(*)>;
| gender | group_concat(name,'|',age,'|',high) #查看附加信息为年纪,姓名,身高,中间用’|‘分开,附加信息跟在组后面用逗号隔开,限定条件放在后面。
| 男 | 小明||180.00,谢霆锋||175.00,钱小豪||178.00,周杰||178.00,郭靖||167.00,
和珅||166.00,程坤||181.00,刘德华||175.00,彭于晏||185.00,小月月||180.00,陈冠希||175.00
分页
*分页显示,每页显示2条数据
MariaDB [mysql]> select * from baba limit n,; #4代表的是数据从n+1行开始显示,2代表的是每页显示两行数据(这建立设置了主键自增的前提下,否则从n开始)
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| n+ | 小明 | | 180.00 | 男 | | |
| n+ | 小月月 | | 180.00 | 男 | | |
*按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据
MariaDB [mysql]> select * from baba where gender= order by high desc limit ; #一个数字默认为(0,2)
+----+-----------+------+--------+--------+--------+-----------+
| id | name | age | high | gender | cls_id | is_delete |
+----+-----------+------+--------+--------+--------+-----------+
| | 静香 | | 171.00 | 女 | | |
| | 王祖贤 | | 170.00 | 女 | | |
最新文章
- iOS的多版本配置(版本分离,多环境配置)
- java selenium (十三) 智能等待页面加载完成
- C++中的静态绑定和动态绑定
- Linux的Cgroup<;实例详解>;
- Unity3D研究院之静态自动检查代码缺陷与隐患
- asp.net mvc放在iis7.5中提示404错误 js异步请求失效解决办法
- Android Weekly Notes Issue #248
- iOS开发之UIPopoverController
- 用css绘制各种图形
- CentOS搭建FTP服务
- POJ - 1177 线段树
- MySQL unknown variable &#39;default-character-set=utf8&#39;的解决
- Python——使用代码平台进行识别验证码
- jupyter notebook connecting to kernel problem
- [数据]matplotlib总结
- profibus 的DPV0 和DPV1
- wxWidgets编程起步
- 【C#/WPF】调节图像的HSL(色相Hue、饱和度Saturation、明亮度Lightness)
- hdu4965矩阵快速幂
- jQuery UI简单的讲解