先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
连接上。
- 计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句
内创建的。
-
从客户机(如应用程序)的角度来看,计算字段的数据是以与其他列的数据相同的方式返回的,并没有任何区别。
-
为什么要用计算字段?
有时候数据本身存储在数据库,但是需要以某种形式展示的时候,需要组合数据一起使用、对数据进行格式化输出的时候,就需要计算字段了。
- 在客户机还是服务器进行转换?
能在数据库完成的就在数据库查询时完成。
可在SQL语句内完成的许多转换
和格式化工作都可以直接在客户机应用程序内完成。但一
般来说,在数据库服务器上完成这些操作比在客户机中完
成要快得多,因为DBMS是设计来快速有效地完成这种处
理的。
拼接(concatenate) 将值联结到一起构成单个值。
- 函数
concat(field1,field2,,...)
concat
函数可以将多个字段拼接起来,字符串字面量需要加单引号。
如:
SELECT concat(‘ID:’, id , ’ , Name:’ , trim(name)) FROM test;
输出:(注意,只输出了一列)
±--------------------------------------------+
| Concat(‘ID:’, id , ’ , Name:’ , trim(name)) |
±--------------------------------------------+
| ID:101 , Name:tiger |
| ID:102 , Name:Tiger |
| ID:103 , Name:lion |
±--------------------------------------------+
=
-
trim
函数,可以去除两边的空格。 -
别名
上述的计算字段得到的只是一个值,但是客户机不能引用它,这个时候就要用到别名(alias) 。别名使用AS
来赋予。
别名,也称为导出列。
SELECT concat(‘ID:’, id , ’ , Name:’ , trim(name)) AS info, idtest FROM test;
输出:
±--------------------±-------+
| info | idtest |
±--------------------±-------+
| ID:101 , Name:tiger | 1 |
| ID:102 , Name:Tiger | 2 |
| ID:103 , Name:lion | 3 |
±--------------------±-------+
注意上述的info
字段不是真正的列数据,但是对于客户机而言,它和真实的列,并没有什么分别。
计算字段的另一常见用途是对检索出的数据进行算术计算。
SELECT prod_id,
num,
price,
num*price AS total_price,
FROM products;
MySQL算术操作符
-
+
-
-
-
*
-
/
- 一个小技巧
SELECT提供了测试和试验函数与计算的一个
很好的办法。虽然SELECT通常用来从表中检索数据,但可以
省略FROM子句以便简单地访问和处理表达式。例如,SELECT
3*2;将返回6,SELECT Trim(‘abc’);将返回abc,而SELECT
Now()利用Now()函数返回当前日期和时间。通过这些例子,
可以明白如何根据需要使用SELECT进行试验。
=============================================================================
函数,一般是在数据上执行的,它给数据的转换和处理提供了方便。
- 一个小技巧,使用
help
如果,不知道一个函数怎么使用,用help就可以知道。
比如:
mysql> help abs
Name: ‘ABS’
Description:
Syntax:
ABS(X)
Returns the absolute value of X.
URL: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html
Examples:
mysql> SELECT ABS(2);
-> 2
mysql> SELECT ABS(-32);
-> 32
需要注意的一点是 在MySQL中,字符串的索引从1开始。
-
Left(str,len)
返回串左边的字符; -
Right(str,len)
返回串右边的字符; -
Length()
返回串的长度; -
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len)
返回字子串; -
Lower(str)
将串小写输出。 -
Upper(str)
将串大写输出。 -
LTrim(str)
去除串左边的空格 -
RTrim(str)
去除串右边的空格 -
Trim(str)
去除串两边的空格。 -
Locate(LOCATE(substr,str), LOCATE(substr,str,pos))
相当于c++的find函数
DATE
日期类型,格式:YYYY-MM-DD
TIME
时间格式,格式:hh:mm:ss[.fraction]
DATETIME
时间+日期:格式:YYYY-MM-DD hh:mm:ss[.fraction]
如何用日期进行过滤?
下面1-8个函数都是可以返回日期的一个部分。
-
Date(date_time)
-
Time(date_time)
-
Year(date_time)
-
Month(date_time)
-
Day(date_time)
-
Hour(date_time)
-
Minute(date_time)
-
Second(date_time)
-
DayOfWeek(date)
返回日期的对应的星期几 -
DateDiff(date1,date2)
返回(date1 - date2 ) -
Date_Formate()
返回一个格式化的日期或时间串 -
CurDate()
返回当前日期 -
CurTime()
返回当前时间 -
Now()
返回当前日期和时间
关于11的用法:
Examples:
mysql> SELECT DATE_FORMAT(‘2009-10-04 22:23:00’, ‘%W %M %Y’);
-> ‘Sunday October 2009’
mysql> SELECT DATE_FORMAT(‘2007-10-04 22:23:00’, ‘%H:%i:%s’);
-> ‘22:23:00’
mysql> SELECT DATE_FORMAT(‘1900-10-04 22:23:00’,
-> ‘%D %y %a %d %m %b %j’);
-> ‘4th 00 Thu 04 10 Oct 277’
mysql> SELECT DATE_FORMAT(‘1997-10-04 22:23:00’,
-> ‘%H %k %I %r %T %S %w’);
-> ‘22 22 10 10:23:00 PM 22:23:00 00 6’
mysql> SELECT DATE_FORMAT(‘1999-01-01’, ‘%X %V’);
-> ‘1998 52’
mysql> SELECT DATE_FORMAT(‘2006-06-00’, ‘%d’);
-> ‘00’
实例:
-
返回2008年的8月份8号的记录:
-
返回2008年的8月份的记录:
SELECT * FROM record WHERE dt = ‘2008-08-08’;
SELECT * FROM record WHERE Year(dt) = 2008 AND Month(dt) = 8;
似乎最常用的就是abs()
了
=========================================================================
当仅仅需要一组数据的汇总(如,总和、最大值、最小值、平均数)时,用到就要聚集函数了。
运行在行组上,计算和返回单个值的函数。
-
AVG()
返回某列的平均值 -
COUNT()
返回某列的行数 -
MAX()
返回某列的最大值 -
MIN()
返回某列的最小值 -
SUM()
返回某列值之和
列作为参数。
忽略NULL行。
SELECT AVG(price) AS average_price FROM prod;
SELECT SUM(price) FROM AS total_price prod;
SELECT MAX(price) FROM prod WHERE prodID;
SELECT MIN(price) FROM prod WHERE price>100;
有两种用法:
-
Count(*)
对表中行的数目进行统计,不管表列中的是NULL还是非NULL; -
Count(col)
col列值为NULL会被忽略。 -
在列名前加上
DISTINCT
,即可进行去重。
常用于日期列和数值列。
- 在多个列上进行计算
利用标准运算符函数。
SELECT SUM(item_price*item_quantity) AS total_price
FROM orderitems;
WHERE item_id = 2024;
SUM会忽略值为NULL的行。
- 聚集不同值DISTINCT
使用聚集函数的函数,还可以使用DISTINCT
关键字,进行去重。
默认是ALL
参数,一般不加。
select SUM(DISTINCT price) FROM prod;
一条SELECT语句,可以使用多个聚集函数。
SELECT COUNT(*) AS num_items,
MIN(price) AS price_min,
MAX(price) AS price_max
FROM products;
MySQL支持一系列聚集函数,可以用多种
方法使用它们以返回所需的结果。这些函数是高效设计的,它们返回结
果一般比你在自己的客户机应用程序中计算要快得多。
=========================================================================
这个表下面会一直举例用到。
SQL建表语句:
DROP TABLE IF EXISTS products
;
CREATE TABLE products
(
prod_id
int NOT NULL AUTO_INCREMENT,
price
int DEFAULT NULL,
name
varchar(45) DEFAULT NULL,
seller
int DEFAULT NULL,
date
date DEFAULT NULL,
PRIMARY KEY (prod_id
)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
LOCK TABLES products
WRITE;
INSERT INTO products
VALUES (1,9,‘牙刷’,101,‘2010-01-20’),(2,1000,‘吹风机’,101,‘2010-02-21’),(3,20,‘毛巾’,101,‘2010-01-20’),(4,50,‘脸盆’,202,‘2010-01-20’),(5,15,‘杯子’,202,‘2018-02-21’),(6,3,‘纸巾’,202,‘2018-02-21’),(7,100,‘电动牙刷’,103,‘2017-02-21’);
UNLOCK TABLES;
±--------±------±-------------±-------±-----------+
| prod_id | price | name | seller | date |
±--------±------±-------------±-------±-----------+
| 1 | 9 | 牙刷 | 101 | 2010-01-20 |
| 2 | 1000 | 吹风机 | 101 | 2010-02-21 |
| 3 | 20 | 毛巾 | 101 | 2010-01-20 |
| 4 | 50 | 脸盆 | 202 | 2010-01-20 |
| 5 | 15 | 杯子 | 202 | 2018-02-21 |
| 6 | 3 | 纸巾 | 202 | 2018-02-21 |
| 7 | 100 | 电动牙刷 | 103 | 2017-02-21 |
±--------±------±-------------±-------±-----------+
本章将介绍如何分组数据,以便能汇总表内容的子集。这涉及两个新SELECT语句子句,分别是GROUP BY子句和HAVING子句。
分组是和聚集在一起的概念。
之前的聚集函数要么是整个表的进行统计,要么是对匹配WHERE的行的数据进行统计。
分享
这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!
Spring Cloud实战
Spring Boot实战
面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
起的概念。
之前的聚集函数要么是整个表的进行统计,要么是对匹配WHERE的行的数据进行统计。
分享
这次面试我也做了一些总结,确实还有很多要学的东西。相关面试题也做了整理,可以分享给大家,了解一下面试真题,想进大厂的或者想跳槽的小伙伴不妨好好利用时间来学习。学习的脚步一定不能停止!
[外链图片转存中…(img-KTCzXpu2-1713657899615)]
Spring Cloud实战
[外链图片转存中…(img-lMVUYxIx-1713657899616)]
Spring Boot实战
[外链图片转存中…(img-5iwWxHDg-1713657899616)]
面试题整理(性能优化+微服务+并发编程+开源框架+分布式)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-eqIGo0iY-1713657899617)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!