先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
dbcc shrinkdatabase(数据库名字,可用空间占比)
收缩指定文件:
dbcc shrinkfile(文件名,收缩后目标大小)
- 管理数据库文件
删除数据文件:
alter database 数据库名
remove file 文件名
创建文件组:
alter database 数据库名
add filegroup 新文件组名
修改文件组为默认文件组:
alter database 数据库名
modify filegroup A default --将文件组A设置为默认文件组
移动数据库文件:
alter database 数据库名
modify file ( name = 文件名字,
filename = ’ ');
- 删除数据库
删除单个数据库:
drop database 数据库名
删除多个数据库:
drop database 数据库A,数据库B…
- 分离和附加数据库
分离数据库:
execute sp_detach_db ’ 数据库名’,'true/false ’ --第二个参数为跳过还是运行“更新统计信息”
附加数据库:
create database 数据库名
on( filename = ’ ')
for attach
=================================================================
记于2021.4.6
SQL语言的特点
-
一体化
-
高度非过程化
-
简洁
-
使用方式多样
SQL语言功能概述
-
数据查询: select
-
数据定义: create、drop、alter
-
数据操纵: insert、update、delete
-
数据控制: grant、revoke、deny
系统提供数据类型
| 数据类型 | 存储空间 | 说明 |
| — | — | — |
| bigint | 8字节 | |
| int | 4字节 | |
| smallint | 2字节 | |
| tinyint | 1字节 | 0-255的整数 |
| bit | 1字节 | |
| numeric(p,s)----decimal(p,s) | 最多17字节 | 带固定精度和小数位数的数字类型 |
| float[(n)] | 4或8字节 | n在1-24之间使用24,占4字节、n在25-53之间使用53.占8字节 |
| real | 4字节 | 浮点型数 |
| char(n) | n个字节 | 固定长度,长度范围1-8000 |
| varchar | 字符数+2字节 | 可变长度,长度范围1-8000 |
| text | 每个字符1个字节 | |
| nchar(n) | 2n字节 | 固定长度的统一编码字符串类型,n表示字符串的最大长度,取值范围为1~4000 |
| nvarchar(n) | 2*字符数+2字节额外开销 | 可变长度的统一编码字符串类型,n表示字符串的最大长度,取值范围为1-4000 |
| ntext | 每个字符2个字节 | |
| binary(n) | n字节 | 固定长度的二进制数据,n的取值范围为1~8000 |
| | | |
| varbinary (n) | 字符数+2字节 | 可变长度的二进制数据,n的取值范围为1~8000 |
| image | 每个字符1个字节 | 可变长度的二进制数据,最多为231-1 (2,147,483,647)个十六进制数字 |
| date | 3字节 | 默认格式为:YYYY-MM-DD |
| time[(n)] | 3-5字节 | 定义一天中的某个时间,该时间基于24小时制 |
| datetime | 8字节 | 定义一个采用24小时制并带有秒的小数部分的日期和时间,默认格式为:YYYY-MM-DD hh:mm:ss.nnn |
| smalldatetime | 4字节 | 定义一个采用24小时制并且秒始终为零(:00)的日期和时间,范围为到。默认格式为:YYYY-MM-DD hh:mm:00。精确到1分钟 |
| datetime2 | 6-8字节 | 可将该类型看成是datetime类型的扩展,其数据范围更大,默认的小数精度更高,并具有可选的用户定义的精度 |
| datetimeoffset | 8-10字节 | 定义一个与采用 24 小时制并与可识别时区的一日内时间相组合的日期,该数据类型使用户存储的日期和时间(24小时制)是时区一致的。语法格式为:datetimeoffset [(n)],n为秒的精度,最大为7。默认格式为:YYYY-MM-DD hh:mm:ss[.nnnnnnn] [{+ |
| money | 8字节 | |
| smallmoney | 4字节 | |
注意点:
-
如果一个表中有8个或8个以下的bit列,则这些列用1字节存储
-
为了节省数据库空间,尽可能使用包含所有可能值的最小数据类型,例如,年龄用tinyint就够了
-
如果列数据项的大小一致,则使用char,如果列数据项的大小差异很大,则使用varchar
用户定义数据类型
create type 数据类型架构名 from char(8) not null
–定义一个cahr(8)数据类型且不允许空值
T-SQL基础知识
语句批:
-
一组SQL语句集合
-
作为一个执行单元
-
结束标记:GO
脚本:
- 存储在文件中的SQL语句集合
注释:
-
单行注释符:–
-
多行注释符:/* */
变量
变量是被赋予一定值的语言元素。
局部变量: 必须先声明才能使用。
@变量名:用户使用
全局变量:
@@变量名:系统提供且预先声明的变量,系统用于记录信息,用户一般只能查看不能修改
变量赋值:
SET { @local_variable = expression }
| { @local_variable
{ += | -= | *= | /= | %= | &=
| ^= | |= } expression }
SELECT @local_variable = expression
例子:
–计算两个变量的和值,然后显示其结果
DECLARE @x int = 10
DECLARE @y int = 20
DECLARE @z int
SET @z = @x + @y
Print @z
流程控制语句
=================================================================
记于2021.6.7
架构
定义架构
架构(schema,也称为模式)是数据库下的一个逻辑命名空间,可以存放表、视图等数据库对象,它是一个数据库对象的容器。
一个数据库可包含一个或多个架构,由特定的授权用户所拥有。在同一个数据库中,架构名必须唯一。
架构对象的类型包括:基本表、视图、触发器等。
CREATE SCHEMA schema_name_clause [ <schema_element> [ …n ] ]
<schema_name_clause> ::= {
schema_name
| AUTHORIZATION owner_name
| schema_name AUTHORIZATION owner_name }
<schema_element> ::= {
table_definition | view_definition | grant_statement
revoke_statement | deny_statement }
实例:
–为用户“U1”定义一个架构,架构名为“Salse”
create schema Salse authorization U1
–创建由U1拥有、包含Test表的架构Common,同时授予U2对Test表有SELECT权,
–授予U3不能对Test表有删除权限
create schema Common authorization U1
create table Test (
C1 int primary key,
C2 char(4) )
grant select TO U2
deny delete TO U3;
在架构之间传输对象
在架构之间传输对象就是更改对象所属的架构。
alter schema 移入的架构名 transfer 被移出架构的名字
实例:
–将Test表从Common架构传输到Special架构中。
altrer schema Special transfer Commer.Test
删除架构
drop schema 架构名
实例:
–删除Special架构,假设该架构中包含Test表
drop table Special.Test; --删除架构中的对象
drop schema Special; --删除架构
基本表
创建基本表
普通表:
有计算列的表:
create table comptable (
low int,
high int,
myavg as(low+high)/2
)
创建临时表
临时表是存储在内存中的表,临时表根据其使用范围可以分为两种:本地临时表和全局临时表。
本地临时表:在表名前加“#”
全局临时表:在表名前加“##”
修改基本表
在定义完表之后,如果需要修改表结构,比如添加列、删除列或修改列定义,可以使用alter table语句实现。
删除表
drop table 表名
分区表
分区表是把数据按某种标准划分成区域存储在不同的文件组中,使用分区可以快速而有效地管理和访问数据子集,从而使大型表或索引更易于管理。
合理的使用分区会在很大程度上提高数据库的性能。
以下情况时适合分区:
-
表中数据量大;
-
该表包含(或将包含)以多种不同方式使用的大量数据。
-
数据是分段的,比如数据以年为分隔。
-
对表的常规维护操作只针对表的一个数据子集。
分区表的特点:
-
分区表是从物理上将一个大表分成几个小表,但从逻辑上来看,还是一个大表。
-
对用户而言,所面对的依然是一个大表,他们不需要考虑操作的年份对应的小表,用户只要将记录插入到大表——逻辑表中就可以了,数据库管理系统会自动将数据放置到它对应的那个物理小表中。
创建分区函数
左侧分区:
–在 int 列上创建左侧分区函数。下列分区函数将表分为四个分区
create partition function myrangepf1(int)
as range left for values(1,100,1000);
右侧分区:
–在 int 列上创建右侧分区函数。下列分区函数将表分为四个分区
create partition function myrangepf2(int)
as range right for values(1,100,1000);
创建分区方案
–先创建一个分区函数,该函数将表分为四个分区。
–然后创建一个分区方案,在其中指定拥有这四个分区中每一个分区的文件组
create partition function myrangepf1(int)
as range left for values(1,100,1000);
go
最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
cn/20210407160545105.png)
–在 int 列上创建右侧分区函数。下列分区函数将表分为四个分区
create partition function myrangepf2(int)
as range right for values(1,100,1000);
创建分区方案
–先创建一个分区函数,该函数将表分为四个分区。
–然后创建一个分区方案,在其中指定拥有这四个分区中每一个分区的文件组
create partition function myrangepf1(int)
as range left for values(1,100,1000);
go
[外链图片转存中…(img-KUKVeKhI-1713428091393)]
最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
[外链图片转存中…(img-jC5w361o-1713428091394)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-KkIeGKW5-1713428091394)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!