概述

提到查询,就回到我们第四篇的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. Geography's sum up

    1.世界气候: 热带草原气候,热带雨林气候,热带沙漠气候,热带草原气候 温带季风气候,温带大陆性气候,亚热带季风和湿润性气候,温带海洋性气候 寒带气候,高原山地气候. 2.亚洲气候: 1.大陆性气候分 ...

  2. 阅读源码,从ArrayList开始

    前言 为啥要阅读源码?一句话,为了写出更好的程序. 一方面,只有了解了代码的执行过程,我们才能更好的使用别人提供的工具和框架,写出高效的程序.另一方面,一些经典的代码背后蕴藏的思想和技巧很值得学习,通 ...

  3. 2017-01-26--编译Linux内核2.6.30版本报错解决

    错误一: LD .tmp_vmlinux1 init/built-in.o: In function `run_init_process': /home/ox/tq2440/opt/EmbedSky/ ...

  4. C和C++区别——前置自增与后置自增

    一.先看下面两段完全一样的代码块 /* test.cpp */ int main() { int a = 5; ++a = 7; printf("%d\n", a); return ...

  5. 【面试题】java一般

    1.取最大最小值 public static int maxOrMinTest(List<Integer> list){ Integer[] integers = list.toArray ...

  6. linux wget指定下载目录和重命名

    当我们在使用wget命令下载文件时,通常会需要将文件下载到指定的目录,这时就可以使用 -P 参数来指定目录,如果指定的目录不存在,则会自动创建. 示例: p.p1 { margin: 0; font: ...

  7. Python之数据类型总结

    1.字符串 2.数字 3.列表 4.元组 5.字典 可变 or 不可变 1:可变:列表.字典 2:不可变:字符串,数字,元组 访问顺序 1.直接访问:数字 2.顺序访问:字符串,列表,元组 3.映射访 ...

  8. jdk可视化工具系列——检视阅读

    jdk可视化工具系列--检视阅读 参考 java虚拟机系列 RednaxelaFX知乎问答 RednaxelaFX博客 JConsole--Java监视与管理控制台 jconsole介绍 JConso ...

  9. frida- registernatives获取so层动态注册函数

    frida获取so层动态注册函数 谢谢大佬的无私奉献https://github.com/lasting-yang/frida_hook_libart 一.js模板一 function hook_Re ...

  10. altium designer使用小技巧,记录

    1.在自建库文件中添加component File--open----schlib或pcblib---Tools---new component---绘制---保存. 2.编辑component 左边 ...