MySQL全面瓦解6:查询的基本操作
概述
提到查询,就回到我们第四篇的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:查询的基本操作的更多相关文章
- Mariadb/MySQL数据库单表查询基本操作及DML语句
Mariadb/MySQL数据库单表查询基本操作及DML语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一数据库及表相关概述 1>.数据库操作 创建数据库: CREATE ...
- Mysql查询优化从入门到跑路(三)查询的基本操作
查询的基本操作 1.选择操作 对应的是限制条件,操作对象是二维表的行. 优化方式:选择操作下推 目的:尽量减少连接操作前的元租数,使得中间临时关系尽量少(元祖数少,连接得到的元组数就少 ...
- MySQL在Django框架下的基本操作(MySQL在Linux下配置)
[原]本文根据实际操作主要介绍了Django框架下MySQL的一些常用操作,核心内容如下: ------------------------------------------------------ ...
- MySQL如何执行关联查询
MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛.总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中, ...
- MySQL全面瓦解13:系统函数相关
概述 提到MySQL的系统函数,我们前面有使用过聚合函数,其实只是其中一小部分.MySQL提供很多功能强大.方便易用的函数,使用这些函数,可以极大地提高用户对于数据库的管理效率,并更加灵活地满足不同用 ...
- MySQL全面瓦解23:MySQL索引实现和使用
MySQL索引实现 上一篇我们详细了解了B+树的实现原理(传送门).我们知道,MySQL内部索引是由不同的引擎实现的,主要包含InnoDB和MyISAM这两种,并且这两种引擎中的索引都是使用b+树的结 ...
- MySQL全面瓦解24:构建高性能索引(策略篇)
学习如果构建高性能的索引之前,我们先来了解下之前的知识,以下两篇是基础原理,了解之后,对面后续索引构建的原则和优化方法会有更清晰的理解: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦 ...
- MySQL全面瓦解25:构建高性能索引(案例分析篇)
回顾一下上面几篇索引相关的文章: MySQL全面瓦解22:索引的介绍和原理分析 MySQL全面瓦解23:MySQL索引实现和使用 MySQL全面瓦解24:构建高性能索引(策略篇) 索引的十大原则 1. ...
- Mysql多表表关联查询 inner Join left join right join
Mysql多表表关联查询 inner Join left join right join
- mysql多表联合查询
转自:http://www.cnblogs.com/Toolo/p/3634563.html 多表连接,小分三种(笛卡尔积.内连接.外连接),多分五种 (笛卡尔积.内连接.左连接.右连接.全连接(my ...
随机推荐
- 正睿十一A班模拟赛day1
估分:25+0+60=85 实际:25+0+60=85 T1: 就只会25的暴力 分治,到一个区间[l,r],cnt[i]表示i这个颜色在区间内的出现次数,从两头同时扫描,扫描到第一个cnt[i]小于 ...
- Java (四)APACHE Commons IO 复制文件
上一篇:Java (三)APACHE Commons IO 常规操作 例1:复制文件 1 import java.io.File; 2 import java.io.IOException; 3 4 ...
- P4915 帕秋莉的魔导书(动态开点线段树)
题目背景 帕秋莉有一个巨大的图书馆,里面有数以万计的书,其中大部分为魔导书. 题目描述 魔导书是一种需要钥匙才能看得懂的书,然而只有和书写者同等或更高熟练度的人才能看得见钥匙.因此,每本魔导书都有它自 ...
- 在Linux下如何根据域名自签发OpenSSL证书与常用证书转换
在Linux下如何根据域名自签发各种SSL证书,这里我们以Apache.Tomcat.Nginx为例. openssl自签发泛域名(通配符)证书 首先要有openssl工具,如果没有那么使用如下命令安 ...
- linux c 多线程开发
在开发多线程程序时,当创建的线程数量特别多的时候,就会遇到线程数量的瓶颈. 多线程设置 设置内核参数 kernel.threads-max kernel.threads-max 是 linux 系统允 ...
- id+is+深浅co'p'y
day06 一.id.is 关键字:id #唯一的,如果id相同,说明2个变量指向同一个地址,就是变量一==变量二 注意:id相同值一定相同,值相同但是id不一定相同(不同代码块的值相同,他们就像太阳 ...
- JDK1.8源码安装
JDK1.8源码安装 一.先卸载openjdk #查找已安装的版本,若是没有结果,就表示没安装rpm -qa|grep jdkrpm -qa|grep java#有的话卸载 --nodeps卸载相关依 ...
- 用网桥和veth实现容器的桥接模式
原理图如下 具体命令先不写了,有时间再写,主要还是用的上一篇说的知识.
- Termux基础教程(一):技能部署
Termux基础教程 by CUCI Termux 是一个 Android 下一个高级的终端模拟器,开源且不需要 root,支持 apt 管理软件包,十分方便安装软件包,完美支持 Python. PH ...
- kubernetes:用label让pod在指定的node上运行(kubernetes1.18.3)
一,为什么要为node指定label? 通常scheduler会把pod调度到所有可用的Node,有的情况下我们希望能把 Pod 部署到指定的 Node, 例如: 有的Node上配备了速度更快的SSD ...