概述

提到查询,就回到我们第四篇的SQL语言分类了,DQL(Data QueryLanguage),也就是数据查询语言,实际就是从数据库中获取数据的一种命令方式。我们给数据库发送一个查询语句的命令,数据库按需返回相应的数据。

查询基本语法

select column_name1,column_name2,... from tname;

SQL 中不区分大小写,select语句中不区分大小写,SELECT和select、FROM和from效果一样。

查询的结果放在一个表格中,表格的第1行称为列头,第2行开始是数据,类属于一个二维数组。

查询单个字段

配置字段名称,格式如下:

1 select column_name1 from tname;
 1 mysql> use test;
2 Database changed
3
4 mysql> select name from user3;
5 +-------+
6 | name |
7 +-------+
8 | brand |
9 | sol |
10 +-------+
11 2 rows in set

查询多个字段

多个字段使用逗号隔开,语法格式如下

1 select column_name1,column_name2,... from tname;
 1 mysql> use test;
2 Database changed
3
4 mysql> select id,age,name from user3;
5 +----+-----+-------+
6 | id | age | name |
7 +----+-----+-------+
8 | 1 | 20 | brand |
9 | 2 | 22 | sol |
10 +----+-----+-------+
11 2 rows in set

查询所有字段

使用*号通配符来表示,语法格式如下

1 select * from tname;
 1 mysql> use test;
2 Database changed
3
4 mysql> select * from user3;
5 +----+-----+-------+
6 | id | age | name |
7 +----+-----+-------+
8 | 1 | 20 | brand |
9 | 2 | 22 | sol |
10 +----+-----+-------+
11 2 rows in set

常量的查询

对于常量值的查询,可以不来源于表,格式如下

1 select const1,const2,const3;
1 mysql> select 100,'brand',1.5;
2 +-----+-------+-----+
3 | 100 | brand | 1.5 |
4 +-----+-------+-----+
5 | 100 | brand | 1.5 |
6 +-----+-------+-----+
7 1 row in set

表达式的查询

sql的加减乘除等等表达式的查询,格式如下:

1 select expression1,expression2,...;
1 mysql> select 1+2,1-2,1*7,17/2,17%2,(2+3)*5,8>5,7=4;
2 +-----+-----+-----+------+------+---------+-----+-----+
3 | 1+2 | 1-2 | 1*7 | 17/2 | 17%2 | (2+3)*5 | 8>5 | 7=4 |
4 +-----+-----+-----+------+------+---------+-----+-----+
5 | 3 | -1 | 7 | 8.5 | 1 | 25 | 1 | 0 |
6 +-----+-----+-----+------+------+---------+-----+-----+
7 1 row in set

函数的查询

可以在查询中加上各种类型的系统函数或者用户自定义函数,来简化一些较复杂的查询过程。格式如下:

1 select func1,func2,func3,...;
1 mysql> select abs(-6),round(5.7),length('brand'),now();
2 +---------+------------+-----------------+---------------------+
3 | abs(-6) | round(5.7) | length('brand') | now() |
4 +---------+------------+-----------------+---------------------+
5 | 6 | 6 | 5 | 2020-11-06 21:07:41 |
6 +---------+------------+-----------------+---------------------+
7 1 row in set

表和字段的查询

查询列名都会以列的定义名称显示,这样显示的时候查看不方便,还容易暴露数据库的信息给业务,为了增强脚本可阅读性,我们经常使用字段别名。

设置表的别名更主要的还是在于书写查询语句时候的便利,并避免多表查询时的字段混淆。格式如下:

1 select talias.column_name1 col1,talias.column_name2 col2 from  tname [as] talias;
 1 mysql> use test;
2 Database changed
3
4 mysql> select u.id as 主键,u.age as 年龄,u.name as 名称 from user3 u;
5 +------+------+-------+
6 | 主键 | 年龄 | 名称 |
7 +------+------+-------+
8 | 1 | 20 | brand |
9 | 2 | 22 | sol |
10 +------+------+-------+
11 2 rows in set

混合查询

查询具体表的字段是可以跟表达式,常量等混合在一起的,这样才能应付复杂的业务。

1 mysql> select '中国2020人口普查' as 标题,u.id as 主键,u.age as 年龄,u.name as 名称,now() as 查询时间,2020*rand() as 随机数 from user3 u;
2 +------------------+------+------+-------+---------------------+--------------------+
3 | 标题 | 主键 | 年龄 | 名称 | 查询时间 | 随机数 |
4 +------------------+------+------+-------+---------------------+--------------------+
5 | 中国2020人口普查 | 1 | 20 | brand | 2020-11-06 21:23:39 | 1236.3585094328582 |
6 | 中国2020人口普查 | 2 | 22 | sol | 2020-11-06 21:23:39 | 344.21752367561453 |
7 +------------------+------+------+-------+---------------------+--------------------+
8 2 rows in set

总结

1、本片只是查询的基础篇,后续会引出 查询的过滤条件、排序、分页、分组、正则匹配过滤,以及复杂查询的性能优化等等。

2、查询数据的时候,应遵循应需而查,查询需要的字段即可,切勿随意的使用*,数据量大的时候性能差距就明显了。

MySQL全面瓦解6:查询的基本操作的更多相关文章

  1. Mariadb/MySQL数据库单表查询基本操作及DML语句

    Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...

  2. Mysql查询优化从入门到跑路(三)查询的基本操作

    查询的基本操作 1.选择操作 对应的是限制条件,操作对象是二维表的行.     优化方式:选择操作下推     目的:尽量减少连接操作前的元租数,使得中间临时关系尽量少(元祖数少,连接得到的元组数就少 ...

  3. MySQL在Django框架下的基本操作(MySQL在Linux下配置)

    [原]本文根据实际操作主要介绍了Django框架下MySQL的一些常用操作,核心内容如下: ------------------------------------------------------ ...

  4. MySQL如何执行关联查询

    MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛.总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中, ...

  5. MySQL全面瓦解13:系统函数相关

    概述 提到MySQL的系统函数,我们前面有使用过聚合函数,其实只是其中一小部分.MySQL提供很多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,并更加灵活地满足不同用 ...

  6. MySQL全面瓦解23:MySQL索引实现和使用

    MySQL索引实现 上一篇我们详细了解了B+树的实现原理(传送门).我们知道,MySQL内部索引是由不同的引擎实现的,主要包含InnoDB和MyISAM这两种,并且这两种引擎中的索引都是使用b+树的结 ...

  7. MySQL全面瓦解24:构建高性能索引(策略篇)

    学习如果构建高性能的索引之前,我们先来了解下之前的知识,以下两篇是基础原理,了解之后,对面后续索引构建的原则和优化方法会有更清晰的理解: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦 ...

  8. MySQL全面瓦解25:构建高性能索引(案例分析篇)

    回顾一下上面几篇索引相关的文章: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦解23:MySQL索引实现和使用 MySQL全面瓦解24:构建高性能索引(策略篇) 索引的十大原则 1. ...

  9. Mysql多表表关联查询 inner Join left join right join

    Mysql多表表关联查询 inner Join left join right join

  10. mysql多表联合查询

    转自:http://www.cnblogs.com/Toolo/p/3634563.html 多表连接,小分三种(笛卡尔积.内连接.外连接),多分五种 (笛卡尔积.内连接.左连接.右连接.全连接(my ...

随机推荐

  1. [论文理解] Good Semi-supervised Learning That Requires a Bad GAN

    Good Semi-supervised Learning That Requires a Bad GAN 恢复博客更新,最近没那么忙了,记录一下学习. Intro 本文是一篇稍微偏理论的半监督学习的 ...

  2. shell-脚本的建立和执行

    1. shell脚本的建立和执行  1) shell脚本的建立 在linux系统中,shell脚本(bash shell程序)通常是在编辑器(如vi/vim)中编写,由unix/linux命令.bas ...

  3. 同一台电脑同时使用gitHub和gitLab

    工作中我们有时可能会在同一台电脑上使用多个git账号,例如:公司的gitLab账号,个人的gitHub账号.怎样才能在使用gitlab与github时,切换成对应的账号,并且免密?这时我们需要使用ss ...

  4. 多测师讲解selenium_输入性弹框定位_高级讲师肖sir

    #输入性弹框from selenium import webdriverfrom time import sleepdrvier=webdriver.Chrome()url='file:///F:\d ...

  5. C语言实现和 *.ini文件。

    本文之前由于技术不到位,写的比较挫,最近花了大半天时间写了一个高级点的版本. 这里是我写的代码,已经上传到github了.跳转到github 主要是使用了链表保存ini文件的内容,在程序运行最初会初始 ...

  6. selenium等待机制学习笔记

    转载至: https://blog.csdn.net/huilan_same/article/details/52544521 1. 强制等待 第一种也是最简单粗暴的一种办法就是强制等待sleep(x ...

  7. harbor搭建与使用

        前两天测试服务docker化并k8s布署时,出于方便,使用了docker hub.由于我们的代码是要放到镜像里的,通过运行容器,便能获取我们的全部代码,风险很大.所以我们决定进行私有化的镜像部 ...

  8. spring boot:给接口增加签名验证(spring boot 2.3.1)

    一,为什么要给接口做签名验证? 1,app客户端在与服务端通信时,通常都是以接口的形式实现, 这种形式的安全方面有可能出现以下问题: 被非法访问(例如:发短信的接口通常会被利用来垃圾短信) 被重复访问 ...

  9. spring boot:用shardingjdbc实现多数据源的分库分表(shardingsphere 4.1.1/spring boot 2.3.1)

    一,shardingjdbc的用途 1,官方站介绍: Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈, 它由 JDBC.Proxy 和 Sidecar( ...

  10. kubernetes:用kubeadm管理token(kubernetes 1.18.3)

    一,token的用途: 1,token是node节点用来连接master节点的令牌字串, 它和ca证书的hash值是把一台node节点加入到kubernetes集群时要使用的凭证 2, 通过kubea ...