--创建学生表

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
);

--往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);  

简单查询:

-- 查询所有列
  --select * from 表名

select * from students;

--一定条件查询(where)

select * from where id=5;

-- 查询制定列

select id_name from students;

-- 使用as给字段起别名

select id_name as '别名(alias)'
select name as '姓名', age as '年龄', high, gender from students;

-- 通过表名字段查询
  select 库名/表字段/* from students;

select * from students;
select students.* from students;
eg: mysql
> select test.students.* from test.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 >= 18 || 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 '_ _';(_代表一个字符)

 

 -- 查询至少有2个字的名字

select * from students where name like '%_ _%';

范围查询

-- in (1,3,8)表示在一个非连续的范围内

  -- 查询 年纪为18和34的人

select * from students where age in (18, 34);
select * from students where age=18 or age=34;

  

-- 查询 年纪不包含18和34的人(取反)

select * from students where age not 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 字段(eg:name、age、id)
-- asc 从小到大排列,即升序(不写默认为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 多字段
  -- 查询年纪在18到34岁的女性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序

select * from students where age between 18 and 34 and gender=2 order by high desc;

  -- 按照年纪、身高排序(如果年纪相同的情况下按照身高从小到大排序)

select * from students where order by age,high asc;

  -- 查询年纪在18到34岁的男性,身高从高到矮排序,如果身高相同的情况下按照年纪从小到大排序,

    如果年龄也相等那么按照id从小到大排序;

select * from students where age between 18 and 34 and gender=1 order by high desc, age, id desc;

聚合函数

-- 总数
-- count
  -- 查询有多少人

select count(name/age/high) from students;

  (统计当前字段,如果要统计的数据为null(空),会出现统计错误,所以一般用*)

 

 -- 查询有多少人(并且显示中文)

select count(*) as '总人数' from students; 

 

 -- 查询男性有多少人

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;

-- 平均值avg
  -- 计算平均年纪
  -- 计算平均年纪 sum(age)/count(*)

select sum(age)/count(*) from students;
select avg(age) from students;

 

 -- 保留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(函数,和group by配合使用)
  -- 查询性别组中的男女平均年龄及姓名

select gender,group_concat(name),avg(age) from students group by gender;

  

-- having
  -- 查询每个性别平均年纪超过30岁的性别,以及姓名 having avg(age) > 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;

  

分页

  -- 显示5页

select * from students limit 5;

 

 -- 查询年纪最大的人名(先按照年纪排序,再分页)

select * from students order by age desc limit 1;

  

 

 -- 分页显示,每页显示2条数据

select * from students limit 0,2;

  

 

 -- 按照身高从高到矮排序,查找出所有女性,并且分页显示,每页显示2条数据

select * from students where gender=2 order by high desc limit 0,2;

数据库的查——select的基本使用的更多相关文章

  1. Oracle 数据库(oracle Database)Select 多表关联查询方式

    Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...

  2. NumberFormatException: Invalid int类型不匹配异常——使用SQL数据库查询语句select * from blacknumber order by _id desc limit ?,20;出现

    异常:类型不匹配 05-06 08:12:38.151: E/AndroidRuntime(14904): java.lang.NumberFormatException: Invalid int: ...

  3. .NET Core随笔把数据库数据查出来转JSON并输出

    直接创建WEB项目即可: public class Startup { //startup.cs是站点启动时具体做了哪些事情,主要是开启了一个mvc服务. public Startup(IConfig ...

  4. [功能集锦] 003 - 一键生成mysql数据字典/数据库速查表

    写在前面: 因为工作时候经常遇到半路接手项目的情况,由于年代久远,数据库字典这块经常缺失.故写此篇,以便复用,也希望对大家有点帮助. 随笔内容不高级,如有不妥,不吝指正. ps:有另一篇详细随笔可以参 ...

  5. django models进行数据库增删查改

    在cmd 上运行 python manage.py shell   引入models的定义 from app.models import  myclass   ##先打这一行    ------这些是 ...

  6. YII数据库增删查改操作

    初学YII, 整理了一些YII数据库的相关操作,  共同学习,共同进步. 一.查询数据集合 //1.该方法是根据一个条件查询一个集合 $admin=Admin::model()->findAll ...

  7. SQL Server跨数据库 增删查改

    比如你在库A ,想查询库B的表.可以用 数据库名.架构名.表名的方式查询 select * from 数据库B.dbo.表1 也可以在存储过程中这样使用. 需要注意的是,如果使用这样的查询方式,你必须 ...

  8. MySQL数据库学习02: SELECT语句

    声明:本篇文章大多数内容出自<MySQL必知必会>,仅供学习参考,勿作他用! 第4章 检索数据 4.1 SELECT语句 SELECT子句用于检索数据库中的表数据.它几乎是MySQL中最常 ...

  9. 基于SQL和PYTHON的数据库数据查询select语句

    #xiaodeng#python3#基于SQL和PYTHON的数据库数据查询语句import pymysql #1.基本用法cur.execute("select * from biao&q ...

随机推荐

  1. 解决node fs.writeFile 生成csv 文件乱码问题

    解决node fs.writeFile 生成csv 文件乱码问题: fs.writeFile('xxx.csv', '\ufeff' + 要传入的数据, {encoding: 'utf8'}); \u ...

  2. jquery改变表单某个输入框的值时,另一个或几个输入框的值同步变化,这里演示的是改变数量时价格同步变化

    效果如下,当我输入数量时,下面的价格同步变化 代码如下: 上图圈起来的事件是当input 框里面的值改变时触发的事件. 补图

  3. Docker学习(六)-Kubernetes - Spring Boot 应用

    接上一篇 https://www.cnblogs.com/woxpp/p/11872155.html 新建 k8s-demo.yaml apiVersion: apps/v1beta2 kind: D ...

  4. 基于Vue + axios + WebApi + NPOI导出Excel文件

    一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...

  5. Nginx的相关问题

    1.什么是Nginx的虚拟主机? 答:虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务 ...

  6. 1. mvc 树形控件tree + 表格jqgrid 显示界面

    1.界面显示效果 2.资源下载 地址 1. jstree  https://www.jstree.com/   2.表格jqgrid  https://blog.mn886.net/jqGrid/  ...

  7. WEBAPI 设置上传文件大小

    参考资料:https://stackoverflow.com/questions/33399267/cors-error-when-uploading-larger-files    https:// ...

  8. java socket通信:聊天器(1)

    目的:实现多个客户之间的通信 首先,这个聊天器的框架是这样的: 对于服务器端:建立socket,连接到服务器,并且开始监听. import java.io.*; import java.util.Ar ...

  9. JavaScript BOM Cookie 的用法

    JavaScript Cookie Cookie是计算机上存储在小文本文件中的数据.当Web服务器将网页发送到浏览器时,连接将关闭,服务器将忘记用户的所有内容.发明Cookie是为了解决“如何记住用户 ...

  10. delphi FillChar的用法(转)

    delphi FillChar的用法(转) (2012-12-24 15:12:06) 转载▼ 标签: it 分类: delphi7 FillChar的用法(delphi) Fillchar是Turb ...