MySQL的简单查询语句(十五)上

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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;


20191206094529659.png


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


1.创建 表 dept


create table dept(
      id int(11) primary key auto_increment,
      name varchar(20),
      description varchar(100)
    );


2 .插入数据


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


20191206094535858.png


一.三 创建表 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)
  );


20191206094542124.png


  • 分别插入几条数据


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

20191206094547484.png


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


二. 查询字段


  • 有三种形式:


查询单个字段

查询多个字段

查询全部字段

会分别进行介绍。


二.一 查询单个字段


1 .所用命令:


select 单个列名  from 表名。


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


select name from user;


20191206094555956.png


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


二.二 查询多个字段


1 . 所用命令:


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


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


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


select name,sex,age from user;

20191206094602606.png


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


二.三 查询全部字段


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


二.三.一 写出全部列名


1 . 所用命令:


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


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


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


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


20191206094605243.png


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


1 .所用命令


select * from 表名;



2 . 举例 查询全部的信息


select * from user;


20191206094611543.png


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


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


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


三. 查询时 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. 后会自动将列名展示出来。


2019120609462456.png


  • 也可以省略 as


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


  • user 与a 之间,要有空格。


三.二 列别名


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


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


20191206094630532.png


四. 查询时 distinct 去重的用法


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


四.一 distinct 去重单字段


四.一.一 不用distinct 去重时

不用 distinct 去重时, 查询 age.


select age from user;


20191206094638410.png


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


四.一.二 用distinct 去重时


  • 查询 age


select distinct age from user;


20191206094644885.png


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


distinct 达到了去重的目的。


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


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


20191206094648912.png


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


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


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


20191206094658686.png


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


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


  • 会发现,只剩下四条结果。 原来的第一条结果与原来的第二条结果相同,被去重处理
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 关系型数据库 MySQL
提高MySQL查询性能的方法有很多
提高MySQL查询性能的方法有很多
153 7
|
1月前
|
存储 关系型数据库 MySQL
提高MySQL的查询性能
提高MySQL的查询性能
66 4
|
8天前
|
SQL 前端开发 关系型数据库
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
SpringBoot使用mysql查询昨天、今天、过去一周、过去半年、过去一年数据
37 9
|
10天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
33 3
|
15天前
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
14天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
71 1
|
20天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
16天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
36 1
|
14天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
45 0
|
16天前
|
SQL 关系型数据库 MySQL
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
mysql编写sql脚本:要求表没有主键,但是想查询没有相同值的时候才进行插入
29 0