赞
踩
使用语言 MySQL
使用工具 Navicat Premium 16
代码能力快速提升小方法,看完代码自己敲一遍,十分有用
目录
数据查询时数据库操作系统中使用的核心技能,是SQL语言的核心技能。因为Navicat工具中的数据查询结果显示效果更加清晰,所以这里将使用Navicat工具来查看执行结果。
数据查询语句(select语句)的语法格式如下:
*或<字段名列表>表示要查询的字段。若查询表中的所有字段,则使用"*";查询指定字段使用字段名列表,其中字段列表至少包含一个字段名称,若查询多个字段,则字段间使用逗号分隔,最后一个字段后不加逗号。
from后的表名为要查询的数据的来源,可以单个或多个。
where子句为可选项,如果选择该选项,将限定查询的条件, 查询结果必须满足此查询条件(条件也可以添加并且(AND)还有或者(OR))。
执行结果
在select语句中使用select * from语句的执行效率会降低于把'*'号改为字段的效率,因为前者获得的表中所有字段值所占用的资源将大于后者获得的指定字段值所占用的资源。另外,后者的可维护性高于前者。因此,在编写查询语句时,建议采用以下语法格式:
使用as放在对应的字段或者表名后面时,可以为这个前面的字段添加别名;(注:ID列的别名不能出现'ID'两个字);
在程序开发过程中,除了简单的数据查询,还有基于已有数据的统计分析计算等需求。因此,在SQL中将一些常用的数据处理操作封装起来,作为函数提供给程序员使用。这大大提高了程序员的开发效率。
在数据库开发过程中,经常需要对字符串进行各种处理,MySQL提供了丰富的字符串处理函数供程序员使用。MySQL的常用字符串处理函数如下所示:
函数名 | 函数说明 | 示例 |
---|---|---|
concat(str1,str2,...,strn) | 将字符串str1、str2、...strn连接为一个完整字符串 | select concat('MySQL',‘is powerful.’); 返回:MySQL is powerful. |
lower(str) | 将字符串str中的所有字符变为小写 | select lower('MySQL'); 返回:mysql |
upper(str) | 将字符串str中所有字符变为大写 | select upper('mysql'); 返回:MYSQL |
substring(str,num,len) | 返回字符串str的第num个位置开始长度为len的子字符串 | select substring('MySQL is powerful.',10,8); 返回:pwerful |
insert(str,pos,len,newstr) | 将字符串str从pos位置开始,将len个字符长的子串替换为字符串newstr(开始的位置0就代表在那个字母前面,1就代表在后面,字母从1开始算) | select insert('MySQL is powerful.',10,0,'very '); 返回:MySQL is very powerful. |
在实际的业务中,经常会涉及时间日期的处理。MySQL的日期函数如下所示:
函数名 | 函数名 | 示例(部分结果与当前日期有关) |
---|---|---|
curdate() | 获取当前日期 | select curdate(); 返回:2024-04-09 |
curtime() | 获取当前时间 | select curtime(); 返回:21:54:40 |
now() | 获取当前时间 | select now(); 返回:2024-04-09 21:54:40 |
week(date) | 返回参数date为一年中的第几周 | select week(now()); 返回:14 |
year(date) | 返回参数date的年份 | select year(now()); 返回:2024 |
hour(time) | 返回参数date的年份 | select hour(now()); 返回:21 |
minute(time) | 返回参数time的分钟值 | select minute(now()); 返回:54 |
datediff(date1,date2) | 返回参数date1和date2之间相隔的天数 | ![]() 返回:25 |
adddate(date,n) | 计算参数date在n天后的日期 | select adddate(now(),1); 返回:2024-04-10 21:54:40 在原有的日期上,加n天; |
unix_timestamp(date) | 将日期转换为时间戳 | select unix_timestamp('2024-04-10'); 返回:1712678400 企业一般都是使用时间戳来转换为日期; |
总的来说,MySQL中使用时间戳可以简化数据的时间记录和管理,提供高精度的时间信息,并支持各种操作、查询和分析需求。
聚合函数用来对已有数据进行汇总,常见的有求和、平均值、最大值和最小值等。(一定要会!!!)MySQL常用的聚合函数如下:
count() | 返回某字段的行数; 搭配分组可以实现分组统计; |
max() max() | 返回某字段的最大值 返回某字段的最小值 ![]() |
sum() | 返回某字段的和 |
avg() | 返回某字段的平均值 |
在一些场景下,在开发过程中还需要进行数值运算。MySQL中常用的数学函数如下所示:
ceil(x) floor(x) | 返回大于或等于数值x的最小整数(向上转整) 返回小于或等于数值x的最大整数(向下转整) | ![]() 第一个打印26,第二个打印25 |
rand() | 返回0~1的随机数 | select rand(); 返回(这只是其中一种结果):0.15421445512123 |
在MySQL中,指定查询结果返回条数的语法与SQL Server。MySQL没有top关键字,而是使用limit子句实现指定返回查询结果条数的目的。语法格式如下:
位置偏移量表示从结果集的第几条数据开始选取(记录的偏移位置从0开始计数,表示从第1条记录、第2条记录的偏移位置是1,以此类推)。位置偏移量参数为可选参数,省略时,从第1条数据开始选取。
行数指以偏移位置为起点,选取记录的条数。 (这个看不懂可以等会看下面代码的注释)
MySQL的分页查询适用于许多需要处理大量数据并且需要将数据分批显示或处理的场景,可以提高系统性能和用户体验。
运行结果
每个结果打印3条数据,数据没有到3条的话即只打印有的条数或者空;
示例;查询所有年龄比姚维新大的病人:
从升级后的代码可以看出两条查询语句被合并成了一条,即把查询语句嵌套至父查询语句中,成为where条件的一部分,即内层语句是外层语句的子查询。
子查询在where子句中的语法格式如下:
子查询语句必须放在括号中,括号外面的查询被称为父查询。
update、insert、delete中的where子句中也可以使用子查询,使用语法与select语句类似。
这个图片太小了,可以在浏览器按住Ctrl键加鼠标滚轮加大页面来看;
这样就是把子查询中查出来的表作为源表,然后从其中获取数据;
运行结果
子查询信息后如果想在from子句中,子查询结果需要起一个别名(Alias),否则执行时会出错。在SQL中,别名通常会使用在表名或字段上。以给表起别名为例,主要有以下两种方法:
使用as关键字,符合ANSI标准。语法格式如下:
使用空格,这是较为简便的方法。语法格式如下:
当为某张表命名了别名后,在select语句中出现该表的字段需要指定表名时,就必须统一使用该表的别名;否则将产生语法错误。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。