我看到了那天的夕阳,美得如此骄艳,我便决定,追寻夕阳,拼尽余生。

上一章简单介绍了 MySQL的系统信息函数和加密解密函数(十四),如果没有看过,请观看上一章

一. Select 查询命令

讲完了MySQL函数, 终于就到了MySQL的查询了。 查询用的是 select 命令。

查询时,有多种形式, 有简单查询,有条件查询,有分组查询,有子查询,有连接查询等多种形式。

查询时, 常见的select 命令如下:

select distinct *|字段列表集合

from 表1,表2 ...

where 表达式列表

group by 分组字段列表

having 分组字段筛选表达式

order by 排序字段列表

limit offset,count

下面,会分别讲解 select语句的。

在讲解之前, 重新创建数据库 yuejl.

创建演示所需要的表, 表user 和表 dept.

一.一 创建并使用数据库yuejl

创建数据库,编码为gbk:

create database yuejl character set gbk;

使用数据库:

use yuejl;

一.二 创建表 dept 并插入数据

创建 表 dept

create table dept(

id int(11) primary key auto_increment,

name varchar(20),

description varchar(100)

);

2 .插入数据

insert into dept(name,description) values ('信息部','这是信息部'),('开发部','这是开发部'),

('人事部','这是人事部');

一.三 创建表 user 并插入数据

创建表

create table user(

id int(11) primary key auto_increment,

name varchar(20),

sex varchar(3),

birthday date,

age int(3),

deptId int(11),

constraint fk_user_deptId foreign key(deptId) references dept(id)

);

2 .分别插入几条数据

insert into user(name,sex,birthday,age,deptId) values ('两个蝴蝶飞','男','1995-10-01',24,1);

insert into user(name,sex,birthday,age,deptId) values ('老蝴蝶','男','1995-10-01',24,2);

insert into user(name,sex,birthday,age,deptId) values ('精灵妹','女','1996-10-26',23,1);

insert into user(name,sex,birthday,age,deptId) values ('精小妹','女','1994-10-26',23,3);

insert into user(name,sex,birthday,age,deptId) values ('岳泽霖','男','1994-2-7',25,1);

接下来,就正式进入到查询 select了。

二. 查询字段

有三种形式:

查询单个字段

查询多个字段

查询全部字段

会分别进行介绍。

二.一 查询单个字段

1 .所用命令:

select 单个列名 from 表名。

2 . 举例: 只查询一下,user表中的姓名。 查询时,只显示姓名。

select name from user;

便只显示出 name的 列值集合。

二.二 查询多个字段

1 . 所用命令:

select 列名1,列名2... from 表名

不需要按照列定义时的顺序来。

2 . 举例 如只查询一下,姓名,性别,和年龄

select name,sex,age from user;

展示的顺序,就是用户定义 select 时,列属性列表的顺序。

二.三 查询全部字段

查询全部字段,有两种形式, 一种是像查询多个字段一样,将列名一个个写出来, 另外一个是用 * 来进行表示全部的字段。

二.三.一 写出全部列名

1 . 所用命令:

select 列名1,列名2...列名n from 表名;

不需要按照列定义时的顺序来。

2 .举例, 查询全部的信息

select id,name,birthday,age,sex,deptId from user;

二.三.二 用 * 来省略全部的列名字段

1 .所用命令

select * from 表名;

2 . 举例 查询全部的信息

select * from user;

列展示的顺序,就是创建表时,列的创建顺序。

在实际的开发中,不建议使用 *的方式来全部展示, 而是用 写出全部列名的形式, 这样展示的顺序便不需要与列创建时的顺序一致了,当改变表的列顺序时,也不会影响程序。 另外,在从数据库中查询出来数据时,也不一定要全部展示, 只展示出数据相应的列名数据即可。

但用 * 时,比较快捷,不需要记住 列名,方便查询,常用于生活学习中。

三. 查询时 as 别名的用法

在实际生活中,常常会用到很多表一起查询,表名比较长,写起来很复杂, 而且各个表之间的列名有很多都是相同的,如 id,name 等属性,想要很清楚的表示出 哪个列名属于哪个表,或者想换一个更清晰的中文名称进行展示, 可以像生活中那样,给各个表,各个字段起一个别名。

别名,可以用在表上面,也可以用在列上面。 用as 关键字, 但as 一般都省略。

select 列名1 [as] 新列名1, 列名2 [as] 新列名2... from 表名 as 新表名。

三.一 表别名

如给 user 表起一个别名,叫做 a

select a.name,a.sex from user as a;

用数据库管理工具时, a. 后会自动将列名展示出来。

也可以省略 as

select a.name,a.sex from user a;

user 与a 之间,要有空格。

三.二 列别名

如将 name,sex 展示时 显示成中文进行展示。

select a.name as '姓名',a.sex as '性别' from user a;

四. 查询时 distinct 去重的用法

distinct 去重, 可以将查询的结果进行去重。 如果所有的结果都一样,才会将结果当成相同的结果。

四.一 distinct 去重单字段

四.一.一 不用distinct 去重时

不用 distinct 去重时, 查询 age.

select age from user;

发现, age 为 24,24,23,23,25 五个值, 有重复值。

四.一.二 用distinct 去重时

查询 age

select distinct age from user;

发现,只剩下 24,23,25 三个值了。 没有重复值。

distinct 达到了去重的目的。

四.二 用distinct 去重多个字段时

上面只是单独的去重 age一个字段,现在去重 birthday和sex 两个字段。 当这两个字段的值都一样时,才会去重。

四.二.一 不用 distinct 进行去重时

select u.sex,u.birthday from user u;

可以发现,第一条数据和第二条数据 的 性别和生日都是一样, 而第三条数据和第四条数据 只是性别一样,生日是不一样的。

四.二.二 用distinct 进行去重时

select distinct u.sex,u.birthday from user u;

会发现,只剩下四条结果。 原来的第一条结果与原来的第二条结果相同,被去重处理了。

五. 聚合函数

MySQL中的聚集函数有五个

函数名

解释

count()

求行数

sum()

求和值

avg()

求平均值

max()

求最大值

min()

求最小值

其中, sum(),avg(),max(),min() 括号里面跟的是列名, 表示求这个列如 age列的 总和,平均值,最大值,最小值。

这个列,是数字类型。

count() 函数可以计算出共有多少条记录。

五.一 sum(),avg() 等聚合函数的使用

如 查询出 age 的总和,平均数,最大值,最小值。

select sum(age) as '总和',avg(age) as '平均数',max(age) as '最大值',

min(age) as '最小值' from user;

但聚合函数,是不能与非分组字段连用的,包括它本身列。

如:

select u.age,sum(age) from user u;

这样是错误的。 是不能连用的。

In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column ‘yuejl.u.age’; this is incompatible with sql_mode=only_full_group_by

但可以分组时,进行不同的使用。 关于分组的使用,后面会讲解。

select u.age,sum(u.age) from user u

group by u.age;

五.二 count() 聚合函数

count() 统计行数, 在开发中非常常见, 如统计数目和分页查询。

有两个常见的方式:

count(*) 统计表中总的行数,不管某列是否有数值或者为空值。

count(列名) 统计指定列下的行数,计算时将忽略 空值,只计算有数值的。

往 user 表中再插入两条 name 为空的数据。

insert into user(name,sex,birthday,age,deptId) values (null,'女','2004-10-26',23,3);

insert into user(name,sex,birthday,age,deptId) values (null,'男','2004-2-7',25,1);

五.二.一 使用 count(*) 进行查询

select count(*) from user u;

原先的5条,加上新插入的2条,共7条。

五.二.二 使用 count(name) 进行查询

select count(name) from user u;

共有 五条记录, 不包括 最后两条 name为null的两条数据。

五.二.三 使用 count(sex) 进行查询

目前的数据,所有的记录 都存在sex, 即sex 均不为空。 这个时候,查询一下 sex

select count(sex) from user u;

共有7条数据。

count(sex) 与 count(*) 的结果相同, 因为 sex 属性值中没有为空值的数据。

五.二.四 使用 count(1) 进行查询

在实际开发和学习中,也常常会用 count(1) 的情况。

select count(1) from user u;

共有7条数据,与 count(*) 的结果一样。

不考虑内部引擎的实现, count(1) 与count(*) 是相同的。

建议使用 count(*) 进行查询总的数目。

六. 用函数处理列,查询关于列的其他信息

有时候,查询时,并不是只查询列的信息,像直接展示id,name,sex的信息, 而是查询相关联的信息, 如查询name的长度,sex前面加上 ‘性别:’ ,或者用条件函数 进行选择等。 即, 在查询展示时,可以用MySQL的函数对查询列进行处理。

如:

1 .用字符串函数进行拼接 性别,在展示性别前加上 ‘性别是:’

select sex,concat('性别是:',sex) from user u;

2 . 用条件函数 对name 进行判断,如果为null,就展示 暂无姓名,有姓名的话,就展示正常的姓名。

select id,name,if(u.name is null,'暂无姓名',u.name) from user u;

3 . 用数学表达式 处理 age,得到新的数据结果

select id,name,age,age+20 as newAge1,age-20 as newAge2 from user u;

谢谢!!!

mysql数据库的简单查询一般是查询什么,MySQL的简单查询语句(十五)相关推荐

  1. mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查

    mysql数据库binlog日志截断报错,导致mysql主从同步失败故障排查 Got fatal error 1236 from master when reading data from binar ...

  2. php 管理 mysql 数据库 代码_安装并使用phpMyAdmin管理MySQL数据库_php

    学会使用基于web数据库的管理工具phpMyAdmin. 如果使用合适的工具,mysql数据库的管理就会为得相当简单.应用MySQL命令行方式需要对MySQL知识非常熟悉,对SQL语言也是同样的道理. ...

  3. 当远程连接MySQL数据库的时候显示Can't connect to MySQL server (10060

    当远程连接MySQL数据库的时候显示Can't connect to MySQL server (10060),我们从以下几个方面入手,找出错误的原因: 1.网络不通. 检查能不能ping通. 2.防 ...

  4. mysql 取前几分钟和几秒,mysql 数据库取前后几秒 几分钟 几小时 几天的语句

    mysql 数据库取前后几秒 几分钟 几小时 几天的语句 发布时间:2020-09-24 12:48:06 来源:脚本之家 阅读:99 作者:mdxy-dxy 取当前时间: select curren ...

  5. MySQL数据库的内连接,左外连接和右外连接查询

    1.首先谈一谈数据库的连接查询有什么作用? 简单的说就是在实际生活中,当我们查询某些数据的时候,一张表不可能为我们提供足够多的数据,其次在数据库的设计的时候,考虑到表的结构和复杂性,会设计多张分类表, ...

  6. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. mysql数据库从删库到跑路之mysql多表查询

    一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 准备表 company.employee company.department #建表 create table department( i ...

  8. jdbc mysql数据库增删查改_通过JDBC对Mysql数据库进行简单的增删改查

    Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法.J ...

  9. mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...

    如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...

  10. c 对一个mysql数据库进行操作_用C语言操作MySQL数据库

    函数 描述 mysql_affected_rows() 返回上次UPDATE.DELETE或INSERT查询更改/删除/插入的行数. mysql_autocommit() 切换autocommit模式 ...

最新文章

  1. Smarty的配置与高级缓存技术
  2. Struts 学习笔记1 -Struts Framework 概览
  3. TomCat运行struts1的编码问题
  4. 阿里开源首个DL框架,新型XDL帮你搞定大规模稀疏数据
  5. 三字经带拼音a4打印版_人教版八年级下册英语6单元重点单词带音标打印版
  6. 【今日CV 计算机视觉论文速览 第146期】Mon, 22 Jul 2019
  7. 微信小程序底部弹框 showActionSheet
  8. kpi绩效考核流程图_KPI绩效考核法
  9. 输出毫秒_使用AMETEK直流电源实现波形变化的输出
  10. TensorFlow 1.9.0正式版来了!新手指南全新改版,支持梯度提升树估计器
  11. sqlite数据库语句和mysql的语句_【玩转SQLite系列】(一)初识SQLite,重拾sql语句
  12. cannot open shared object file
  13. 如何在word中的框中打钩、打叉
  14. jsf的verbatim标签
  15. 折腾了好久 ORA-00904: : 无效的标识符
  16. 奇异问题之解决思路(一) npm run dev或npm run buil报错,单独运行scripts又正常?
  17. java 抽象类和接口——抽象类
  18. HDU 5183 Negative and Positive (NP) (set + 读入外挂 乱搞)
  19. 高效能创业者的七项习惯
  20. 遥感数据集Million-AID介绍及数据预处理

热门文章

  1. 怎么在WPS计算机,电脑怎么把wps热点删了?电脑永久删除wps热点的方法
  2. (一) C语言的字符
  3. php花瓣,php 网络爬虫,爬一下花瓣的图片
  4. NPS净推荐值 客户忠诚度指标
  5. 道格拉斯简化_简化组织变革:困惑的指南
  6. php 图片裁剪后保存,php – 如何保存裁剪的图像
  7. 原型设计工具Axure
  8. win10--ubuntu 16.04桌面共享
  9. Android调用第三方app(Scheme隐式以及显示调用)
  10. 【STM32】STM32F4 GPIO八种模式及工作原理详解