MariaDB select
1.环境部署:
syntax语法错误
查询基本使用(条件,排序,聚合函数,分组,分页)
--创建学生表
create table students (
id int unsigned not null auto_increment primary key,
name varchar(20) default '',
age tinyint unsigned default 0,
high decimal(5,2),
gender enum('男', '女', '中性', '保密') default '保密',
cls_id int unsigned default 0,
is_delete bit default 0
);
--创建班级表
create table classes(
id int unsigned auto_increment primary key not null,
name varchar(20) not null
);
--往students表里插入数据
insert into students values
(0,'小明',18,180.00,1,1,0),
(0,'小月月',19,180.00,1,2,0),
(0,'彭于晏',28,185.00,1,1,0),
(0,'刘德华',58,175.00,1,2,0),
(0,'黄蓉',108,160.00,2,1,0),
(0,'凤姐',44,150.00,4,2,1),
(0,'王祖贤',52,170.00,2,1,1),
(0,'周杰伦儿',34,null,1,1,0),
(0,'程坤',44,181.00,1,2,0),
(0,'和珅',55,166.00,1,2,0),
(0,'刘亦菲',29,162.00,2,3,0),
(0,'金星',45,180.00,3,4,0),
(0,'静香',18,170.00,2,4,0),
(0,'郭靖',22,167.00,1,5,0),
(0,'周杰',33,178.00,1,1,0),
(0,'钱小豪',56,178.00,1,1,0),
(0,'谢霆锋',38,175.00,1,1,0),
(0,'陈冠希',38,175.00,1,1,0);
2.查询所有列
select * from 表名
一定条件查询(where)
select * from where id=5;
查询制定列
select id,name from students;
使用as给字段起别名
select id,name as '姓名', age, high, gender from students;
通过表名字段查询
select students.name from students; #多个表中有相同字段,通过表名字查询
给表起别名查询
select s.id,s.name,s.age from students as s;
消除重复行
distinct
select distinct age from students;
条件查询
比较运算符
查询年纪大于18岁的信息
select * from students where age > 18;
18岁到28岁之间(and,&&)
select * from students where age >= 18 and age =< 28;
select * from students where age between 18 and 28;
在18岁以上或者身高180以上的人(or,||)
select * from students where age > 18 or high > 180;
找出18岁和28岁的人
select * from students where age=18 or age=28;
模糊查询
like
% 替代1个或者多个甚至是没有
查询姓名中有‘小’的所有名字
select * from students where name like '%小%';
查询两个字人的名字 _表示一个字符
select * from students where name like '__';
查询至少有3个字的名字
select * from students where name like '%___';
范围查询
in (1,3,8)表示在一个非连续的范围内,在1,3,8范围中
查询 年纪为18和34的人
select * from students where age in (18, 34);
查询 年龄在17岁到34岁之间的信息
select * from students where age between 17 and 34;
查询 年纪不在18到34岁的信息
select * from students where age not between 17 and 34;
空判断
判断is null
查询身高为空的信息
select * from students where high is null;
判断非空is not null
select * from students where high is not null;
排序
order by 字段默认为从小到大
asc从小到大排列,即升序
desc从大到小排序,即降序
查询年纪在18到34岁之间的男性,按照年纪从小到大
select * from students where gender=1 and age between 18 and 34 order by age;
查询年纪在18到34岁之间的女性,身高从高到矮
select * from students where gender=2 and age between 18 and 34 order by high desc;
order by 多字段
将students表中数据按照年龄从大到小排列,年龄相同的情况下按照身高从大到小排列
select * from students order by age desc,high desc;
查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序
select * from students where (age between 18 and 34) and gender=2 order by high desc,age asc; #如果条件多可以用()来区分
查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,如果年龄也相等那么按照id从小到大排序;
select * from students where gender=1 and age between 18 and 34 order by high desc,age asc,id asc;
聚合函数
总数
count(*) #()里可以添加字段,但是如果该字段为空,统计总数就会不准,因此用(*)
查询男性有多少人
select count(*) from students where gender=1;
最大值
max
查询最大的年纪
select max(age) from students;
查询女性的最高身高
select max(high) from students where gender=2;
最小值
min
select min(high) from students;
求和
sum
计算所有人的年龄总和
select sum(age) from students;
计算所有男人的年龄总和
select sum(age) from students where gender=1;
平均值
avg
计算平均年纪
计算平均年纪 sum(age)/count(*)
select sum(age)/count(*) from students;
select avg(age) from students;
保留2位小数round(,2)
select round(avg(age),2) from students;
分组
group by
按照性别分组,查询所有的性别
select gender from students group by gender;
计算每组性别的人数
select gender, count(*) from students group by gender;
查询男性组中的姓名 group_concat
select gender,group_concat(name) from students where gender=1 group by gender;
having
查询每个性别平均年纪超过30岁的性别,以及姓名
select gender, group_concat(name) from students group by gender having avg(age) > 30;
查询每种性别中的人数多于4个的组的信息
select gender,group_concat(name) from students group by gender having count(*)>4;
查询每种性别中的名字,身高,年龄 #查询多个内容之间要加分隔符(自定义),否则输出的字段是连在一起的,容易混淆。
select gender,group_concat(name,'|',high,'|',age) from students group by gender ;
分页
limit m,n m:从m+1行开始展示 n:显示的行数
显示5页
select * from students limit 5;
分页显示,每页显示2条数据
select * from students limit 0, 2;
按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据
select * from students where gender=2 order by high desc limit 0,2;
MariaDB select的更多相关文章
- centOS7中Mariadb数据库安装与基本管理
一.Mariadb数据库安装 1. 直接yum源安装 yum -y install mariadb mariadb-serversystemctl start mariadb /启动Mariadb服务 ...
- MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)
注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...
- MySQL/MariaDB数据库的存储过程
MySQL/MariaDB数据库的存储过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.存储过程概述 1>.存储过程优势 存储过程把经常使用的SQL语句或业务逻辑封装起 ...
- MySQL/MariaDB数据库的视图(VIEW)
MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...
- Centos7安装使用Mysql(mariadb)
安装 shell> yum install mariadb-server -y 配置 # 修改文件 /etc/my.cnf [mysqld]datadir=/mydata/data/mysqlc ...
- SQL中的CASE的用法
CASE在SQL语句中,很有点类似java等高级编程语言中的switch这样子的多分枝语句,但是有点不同的是,case后面接的是when,另外,when的后续分枝有点类似if后面接else.这个是我的 ...
- CentOS 7 Tomcat服务的安装与配置
3422人阅读 http://blog.51cto.com/13525470/2073657 一.Linux下的Java运行环境 Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由S ...
- mysql实现oracle存储过程默认参数
我们都知道oracle存储过程支持为参数设置默认值,这样即使存储过程升级,原来的调用也可以不受影响.但是mysql不支持,mariadb也没有支持(截止10.4也是如此).但是这一限制会导致升级麻烦重 ...
- 最全的ORACLE-SQL笔记
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unloc ...
随机推荐
- java 集合数组排序
//数组排序Integer arr[] = {3,4,2};Arrays.sort(arr);//默认升序Arrays.sort(arr,Comparator.reverseOrder());//传一 ...
- 多线程(二)Object类方法、线程的操作sleep(),join(),interrupt(),yield()
四.Object类简介 Object类是所有类的超类,之所以放在线程部分是因为其方法很多是和线程有关的.比如以下三个: wait()方法.wait(long timeout)和wait(long ti ...
- 集合(一)Collection、List、ArrayList和Vector
一.Collection 集合存放在java.util包中,可以看作是集成好的数据结构,供你调用,十分方便,集合经常拿来和数组对比,其实我觉得没啥可比性,不过还是简单来看看它们的区别: 1.数组长度固 ...
- linux ngxtop安装安装及使用
写在前面: ngxtop是Nginx日志实时分析利器 1.下载 下载地址:https://github.com/lebinh/ngxtop 下载zip文件到本地 登录linux服务器,定位到安装目录 ...
- TO B是什么?TO C呢?
总是听别人说 to B. to C 的 所以了解一下这个概念: 一.基本概念 1. TO B,B指的是== business==,中文即商业,企业: 2. TO C,C指的是customer, ...
- autofs 自动挂载.
autofs 自动挂载. 操作环境:redhat 6 一.autofs 说明 自动挂载器是一个监视目录的守护进程,并在目标子目录被引用时,自动执行预定义的挂载 自动挂载器由autofs服务脚本管理 自 ...
- js面试之--判断一个对象是不是数组类型,一共几种方法???
- ASE高级软件工程 第一次结对作业
黄金点游戏Bot Bot8前来报道 1.问题定义 a) 问题描述 N个玩家,每人写一个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0 ...
- Aragorn's Story
A - Aragorn's Story 直接套 线段树+树剖 板子 代码: // Created by CAD on 2019/8/12. #include <bits/stdc++.h> ...
- [EOJ Monthly2019.11][T4]安全带
以下是题干 D. 安全带 单点时限: 1.0 sec 内存限制: 256 MB (前面题干是一堆废话,我把它删了) 简单来说:初始给出一个 n 个点顺次连接而成的环,点有点权,边权是两个端点的点权乘积 ...