MSSQL数据库初级到高级的学习资料整理
章节 1
四个基本概念
1.数据库系统(Database System,简称DBS):指在计算机系统中引入数据库后的系统;
2.数据(Data):数据库中存储的基本对象
3.数据库的定义 :数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合
4.数据库管理系统(简称DBMS):位于用户与操作系统之间的一层数据管理软件(系统软件)。
用途:科学地组织和存储数据;高效地获取和维护数据
主要功能: 数据定义功能; 数据操纵功能; 数据库的运行管理; 数据库的建立和维护功能(实用程序)
数据库系统的构成
数据库
数据库管理系统(及其开发工具)
应用系统
数据库管理员(DBA)和用户
数据管理技术的发展过程
人工管理阶段
文件系统阶段
数据库系统阶段
数据库系统管理数据的特点如下
(1) 数据共享性高、冗余少;(2) 数据结构化;(3) 数据独立性高;(4) 由DBMS进行统一的数据控制功能
数据模型
用来抽象、表示和处理现实世界中的数据和信息的工具。通俗地讲数据模型就是现实世界数据的模拟。
数据模型三要素。
数据结构:是所研究的对象类型的集合,它是刻画一个数据模型性质最重要的方面;数据结构是对系统静态特性的描述
数据操作:对数据库中数据允许执行的操作及有关的操作规则;对数据库中数据的操作主要有查询和更改(包括插入、修改、删除);数据操作是对系统动态特性的描述
数据的约束条件:数据及其联系应该满足的条件限制
E-R图
实体:矩形框表示
属性:椭圆形(或圆角矩形)表示
联系:菱形表示
组织层数据模型
层次模型
网状模型
关系模型(用“二维表”来表示数据之间的联系)
基本概念:
关系(Relation) :一个关系对应通常说的一张表
元组(记录): 表中的一行
属性(字段) : 表中的一列,给每一个属性名称即属性名
分量 :元组中的一个属性值,分量为最小单位,不可分
主码(Key):表中的某个属性组,它可以唯一确定一个元组。
域(Domain):属性的取值范围。
关系模式 :对关系的描述。一般表示为: 关系名(属性1,属性2,…,属性n)
关系模型的数据完整性约束
实体完整性
参照完整性
用户定义的完整性
DBS三级模式结构:外模式、概念模式、内模式(一个数据库只有一个内模式)
章节 2
在进行数据库的操作时,会出现以下几方面的问题:
1.数据冗余;2. 插入异常;3. 删除异常;4. 更新异常
好的关系模式应避免以上问题
函数依赖
设有关系模式R(A1,A2,…,An),X和Y均为{A1,A2,…,An}的子集
如果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖。
如果X→Y,则称X为决定因子。
如果Y函数不依赖于X,则记作X Y。
如果X→Y,并且Y→X,则记作X ↔Y。
范式
从外到里依此增加
模式分解的准则:
模式分解具有无损连接性;模式分解能够保持函数依赖
规范化理论主要是研究关系中各属性之间的依赖关系,根据依赖关系的不同,我们介绍了不包含子属性的第一范式,到消除了属性间的部分依赖关系的第二范式,
再到消除了属性间的传递依赖关系的第三范式,最后到每个决定因子都必须是候选码的BCNF。
范式的每一次升级都是通过模式分解实现的,在进行模式分解时应注意保持分解后的关系能够具有无损连接性并能保持原有的函数依赖关系。
对于一般的数据库应用来说,设计到第三范式就足够了。因为规范化程度越高,分解得越细,表的个数越多,则在检索操作时会因连接而降低检索效率。
例:S-D-L(Sno,Dept,Loc)有函数依赖:
Sno → Dept, Dept → Loc
不是第三范式的。至少可以有三种分解方案,分别为:
方案1:S-L(Sno,Loc),D-L(Dept,Loc),将S-D-L分解投影得到S-L和D-L关系
方案2:S-D(Sno,Dept),S-L(Sno,Loc)
方案3:S-D(Sno,Dept),D-L(Dept,Loc)
章节 3
Sql功能 |
命令动词 |
数据定义 |
CREATE DROP ALTER |
数据查询 |
SELECT |
数据操纵 |
INSERT UPDATE DELETE |
数据控制 |
GRANT REVOKE |
SQL的数据类型:数值型;字符串型;日期时间类型;货币类型
数据定义功能
建立表CREATE TABLE
例1.为SC表添加“修课类别”列,此列的定义为:XKLB char(4)
ALTER TABLE SC ADD XKLB char(4) NULL
例2.将新添加的XKLB的类型改为char(6)。
ALTER TABLE SC ALTER COLUMN XKLB char(6)
例3.删除Course表的Period列
ALTER TABLE Course DROP COLUMN Period
索引:聚簇索引、非聚簇索引:
复合索引是将两个字段或多个字段组合起来建立的索引,而单独的字段允许有重复的值。
建立索引
格式: create [unique] [clustered] index 索引名 on 表名
(<列名1>[asc | desc] [,…])
unique:用于指定为表创建唯一索引,即不允许存在索引值相同的两行。
clustered:用于指定创建的索引为聚簇索引。默认是非聚簇索引。
asc升序,desc降序,默认为asc
例1:为学生表建立按学号升序索引
create index student_sno on student(sno)
例2:为选课表按学号升序和课程号降序建唯一索引
create unique index SCI on sc(sno,cno desc)
例3: 为学生表按系升序建立聚簇索引。
create clustered index TI on student (sdept)
删除索引
语句基本格式:drop index <表名.索引名>
例4 :删除表SC的索引SCI。
drop index
注:索引名前一定要加:表名
SELECT <目标列名序列>
FROM <数据源>
[WHERE <检索条件表达式>]
[GROUP BY <分组依据列>]
[HAVING <组提取条件>] [ORDER BY<排序依据列>]
[ORDER BY <排序依据列>]
-- 需要哪些列
-- 来自于哪些表
-- 根据什么条件查询
-- 对查询结果进行分组
-- 指定组的选择条件
-- 对查询结果进行排序
简单查询 (单表查询)
例1. 查询全体学生的学号与姓名
SELECT Sno,Sname FROM Student
比较大小
例8.查询所有年龄在20岁以下的学生的姓名及年龄。
SELECT Sname, Sage FROM Student WHERE Sage < 20
或:SELECT Sname, Sage FROM Student WHERE NOT Sage >= 20
确定范围
BETWEEN…AND和NOT BETWEEN…AND
确定集合(IN)
IN是一个逻辑运算符,可以用来查找属性值属于指定集合的元组
使用IN的格式为:列名 [ NOT ] IN (常量1, 常量2, … 常量n)
IN的含义为:当列中的值与IN中的某个常量值相等时,则结果为True,表明此记录为符合查询条件的记录;
NOT IN的含义正好相反:当列中的值与某个常量值相同时,则结果为False,表明此记录为不符合查询条件的记录;
例12.查询信息系、数学系和计算机系学生的姓名和性别。
SELECT Sname, Ssex FROM Student
WHERE Sdept IN ('信息系', '数学系', '计算机系')
此句等价于:SELECT Sname, Ssex FROM Student
WHERE Sdept = ‘信息系’ OR Sdept = ‘数学系’ OR Sdept = ‘计算机系’
字符匹配
LIKE用于查找指定列名与匹配串常量匹配的元组(模糊查询)
匹配串是一种特殊的字符串,它不仅包含普通字符,还可以包括通配符。
通配符用于表示任意的字符或字符串。
_:匹配任意一个字符;
%:匹配0个或多个字符;
[ ]:匹配[ ]中的任意一个字符;
[^ ]:不匹配[ ]中的任意一个字符。
LIKE运算符的一般形式为: 列名 [NOT ] LIKE <匹配串>
在LIKE运算符前边也可以使用NOT运算符,表示对结果取反。
例14.查询姓‘张’的学生的详细信息。
SELECT * FROM Student WHERE Sname LIKE ‘张%’
例15.查询学生表中姓‘张’、姓‘李’和姓‘刘’的学生的情况。
SELECT * FROM Student WHERE Sname LIKE ‘[张李刘]%’
例16.查询名字中第2个字为‘小’或‘大’字的学生的姓名和学号。
SELECT Sname, Sno FROM Student WHERE Sname LIKE '_[小大]%'
例17.查询所有不姓“刘”的学生。
SELECT Sname FROM Student WHERE Sname NOT LIKE '刘%'
例18.从学生表中查询学号的最后一位不是2、3、5的学生情况。
SELECT * FROM Student WHERE Sno LIKE '%[^235]'
涉及空值的查询
判断取值为空的语句格式为:列名 IS NULL
判断取值不为空的语句格式为:列名 IS NOT NULL
例19.查询无考试成绩的学生的学号和相应的课程号。
SELECT Sno, Cno FROM SC WHERE Grade IS NULL
不可写为 WHERE Grade = null
多重条件查询
在WHERE子句中可以使用逻辑运算符AND和OR来组成多条件查询
用AND连接的条件表示必须全部满足所有的条件的结果才为True
用OR连接的条件表示只要满足其中一个条件结果即为True
对查询结果进行排序
排序子句的格式为:ORDER BY <列名> [ASC | DESC ] [ ,… n ]
ASC表示对列进行升序排序,DESC表示对列进行降序排序。默认为升序排序。
使用计算函数汇总数据
例26. 计算9512101号学生的考试总成绩之和
SELECT SUM(Grade) FROM SC WHERE Sno = '9512101'
对查询结果进行分组计算
一般形式为:GROUP BY <分组依据列> [,… n ] [HAVING <组提取条件>]
例28.统计每门课程的选课人数,列出课程号和人数。
SELECT Cno as 课程号, COUNT(Sno) as 选课人数
FROM SC GROUP BY Cno
多表连接查询
1.内连接
内连接的格式为:SELECT <属性或表达式列表>
FROM 表1 [ INNER ] JOIN 表2 ON <连接条件>
例32.查询每个学生及其修课的情况
SELECT * FROM Student INNER JOIN SC ON =
外连接
外连接是只限制一张表中的数据必须满足连接条件,而另一张表中数据可以不满足连接条件。
ANSI方式的外连接的语法格式为:
FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON <连接条件>
例39.查询学生的修课情况,包括修了课程的学生和没有修课的学生。
SELECT , Sname,
Cno, Grade FROM Student
LEFT OUTER JOIN SC
ON =
也可以用右外连接实现:
SELECT , Sname,
Cno, Grade FROM SC
RIGHT OUTER JOIN Student
ON =
使用子查询进行基于集合的测试
例40.查询与“刘晨”在同一个系学习的学生。
SELECT Sno, Sname, Sdept FROM Student
WHERE Sdept IN
(SELECT Sdept FROM Student
WHERE Sname = '刘晨')
使用子查询进行基于集合的测试
例41.查询成绩为大于90分的学生的学号、姓名。
SELECT Sno, Sname FROM Student
WHERE Sno IN ( SELECT Sno FROM SC WHERE Grade > 90 )
使用子查询进行比较测试
通过比较运算符(=、<>、<、>、<=、<=),将一个表达式的值与子查询返回的值进行比较。
例43.查询修了‘c02’课程且成绩高于此课程的平均成绩的学生的学号和成绩。
SELECT Sno , Grade FROM SC
WHERE Cno = 'c02' and Grade > (
SELECT AVG(Grade) from SC
WHERE Cno = 'c02')
使用子查询进行存在性测试
例44.查询选修了‘c01’号课程的学生姓名。
SELECT Sname FROM Student
WHERE EXISTS
(SELECT * FROM SC
WHERE Sno = AND Cno = ‘c01')
数据更改功能
插入数据
INSERT语句的格式为:INSERT [INTO] <表名> [(<列名表>)] VALUES (值列表)
例1.将新生记录(9521105,陈冬,男,信息系,18岁)插入到Student表中。
INSERT INTO Student VALUES (‘9521105’, ‘陈冬’, '男', 18, '信息系')
更新数据(UPDATE)
UPDATE语句的语法格式为:UPDATE <表名> SET <列名=表达式> [,… n] [WHERE <更新条件>]
例2.将‘9512101’学生的年龄改为21岁。
UPDATE Student SET Sage = 21 WHERE Sno = '9512101'
删除数据(DELETE)
DELETE语句的语法格式为:DELETE [ FROM ] <表名> [WHERE <删除条件>]
例3.删除计算机系不及格学生的修课记录
用子查询实现:
DELETE FROM SC
WHERE Grade < 60 AND Sno IN
(SELECT Sno FROM Stude
WHERE Sdept = ‘计算机系’ )
用多表连接实现:
DELETE FROM SC
FROM SC JOIN Student ON =
WHERE Sdept = ‘计算机系’AND Grade < 60
定义视图
CREATE VIEW <视图名> [(视图列名表)] AS 子查询语句
例1.建立信息系学生的视图。
CREATE VIEW IS_Student
AS
SELECT Sno, Sname, Sage
FROM Student WHERE Sdept = '信息系'
例4.定义一个反映学生出生年份的视图
CREATE VIEW BT_S(Sno, Sname, Sbirth)
AS
SELECT Sno, Sname, 2006-Sage
FROM Student
删除视图
DROP VIEW <视图名>
视图可简化查询语句
例:将信息系学生的视图中学号为*******的学生姓名改为“刘呈”
UPDATE IS_Student SET Sname=‘刘呈’
WHERE Sno =‘9512102’
例:在信息系学生的视图中找出年龄小于20岁的学生
SELECT Sno, Sage
FROM IS_Student WHERE Sage <20
章节 4
数据库设计的基本步骤
需求分析阶段(信息要求、处理要求、安全性与完整性要求)——概念结构设计阶段——逻辑结构设计阶段——物理结构设计阶段——数据库实施阶段——数据库运行和维护阶段
DBMS常用存取方法:索引方法,目前主要是B+树索引方法
聚簇(Cluster)方法
HASH方法
章节 5
DBMS对数据库的安全保护功能是通过四方面实现的,即安全性控制、完整性控制、并发性控制和数据库恢复。
完整性控制
数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。
关系模型的完整性包括实体完整性,参照完整性和用户定义完整性。
对于违反实体完整性和用户定义完整性规则的操作一般都是采用拒绝执行的方式进行处理。
完整性约束条件的作用对象可以是表、元组和列。
并发控制
数据库的并发操作导致的数据库不一致性主要有以下四种:
丢失修改(Lost Update):当两个事务T和T读入同一数据做修改,并发执行时, T把T或T把T的修改结果覆盖掉。
污读(Dirty Read):事务T更新了数据R,事务T读取了更新后的数据R,事务T由于某种原因被撤消,修改无效,数据R恢复原值。事务T得到的数据与数据库的内容不一致,这种情况称为“污读”。
不可重读(Unrepeatable Read):事务T读取了数据后,事务T更新了T读取的数据,当事务T再读取数据以进行相同操作时,得到的两次值不一致,这种情况称为“不可重读”
产生“幽灵”数据:指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T1再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。
并发控制的主要方式是封锁机制,即加锁(Locking)。
排它锁(Exclusive Lock,又称写锁,简称为X锁)-----事务T对数据对象A加了X锁,则允许T读取和修改A,但不允许其它事务再对A加任何类型的锁, 直到T释放了A上的锁。
共享锁(Share Lock,又称读锁,,简称为S锁)-----事务T对数据对象A加了S锁,则事务T可以读A,但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放了A上的S锁。
三个封锁协议的主要区别在于
X锁(对写数据) |
S锁(对只读数据) |
不丢失修改(写) |
不读脏数据(读) |
可重复读(读) |
|
一级 |
事务全程加锁 |
不加 |
√ |
||
二级 |
事务全程加锁 |
事务开始加,读完放 |
√ |
√ |
|
三级 |
事务全程加锁 |
事务全程加锁 |
√ |
√ |
√ |
预防死锁
两种方法:一次封锁法、顺序封锁法
数据库的恢复
数据库运行故障:事务故障(可以利用日志文件撤消此事务对数据库已进行的修改)
系统故障
介质故障(重装数据库,然后利用备份或镜像设备恢复数据库。)
章节 6
使用Transact-SQL语言创建数据库
CREATE DATABASE 数据库名
[ON
[ <文件格式> [ , … n ] ]
]
[ LOG ON { <文件格式> [ , … n ] } ]
例2:创建一个数据库,数据库名称为:“人事信息数据库”,此数据库包含一个数据文件和一个事务日志文件。数据文件只有主数据文件,其逻辑文件名为“人事信息数据库”,其物理文件名为“人事信息数据库.mdf”,存放位置在默认目录下,其初始大小为10MB,最大大小为30MB,自动增长时的递增量为5MB。事务日志文件的逻辑文件名为“人事信息日志”,物理文件名为“人事信息日志.ldf”,也存放在默认目录下,初始大小为3MB,最大大小为12MB,自动增长时的递增量为2MB。
CREATE DATABASE 人事信息数据库
ON
( NAME =人事信息数据库,
FILENAME = 'C:\program files\Microsoft SQL Server\Mssql\Data\人事信息数据库.mdf ',
SIZE = 10,
MAXSIZE = 30,
FILEGROWTH = 5 )
LOG ON
( NAME =人事信息日志,
FILENAME = 'C:\program files\Microsoft SQL Server\Mssql\Data\人事信息日志.ldf ',
SIZE = 3,
MAXSIZE = 12,
FILEGROWTH = 2 )
使用Transact-SQL语句删除数据库
语法格式为:DROP DATABASE 数据库名 [ , … n ]
例:用SQL语句删除Test1和Test2数据库:
DROP DATABASE Test1, Test2
使用Transact-SQL语句修改数据库(ALTER DATABASE)
创建触发器(CREATE TRIGGER)
使用SQL语句管理权限
(1)授权语句GRANT
例1:为用户user1授予Student表的查询权。
GRANT SELECT ON Student TO user1
例2:为用户user1授予SC表的查询权和插入权。
GRANT SELECT,INSERT ON SC TO user1
例3:授予user1和user2具有创建数据库表和视图的权限。
GRANT CREATE TABLE, CREATE VIEW TO user1, user2
(2) 拒绝权限语句DENY
例1:拒绝用户user1对Student表的修改权。
DENY UPDATE ON Student TO user1
例2:拒绝user1创建视图的权限。
DENY CREATE VIEW TO user1
(3) 收回权限语句REVOKE
例1:收回用户user1授予Student表的查询权。
REVOKE SELECT ON Student FROM user1
例2:收回授予user1创建数据库表的权限。
REVOKE CREATE TABLE FROM user1
使用Transact-SQL的备份语句进行备份
(1)备份数据库日志的语句格式为:
BACKUP LOG 数据库名 TO { < 备份设备名 > } | { DISK | TAPE } = {‘物理备份文件名’} [ WITH[ { INIT | NOINIT } ][ { [ , ] NO_LOG | TRUNCATE_ONLY | NO_TRUNCATE } ]]
例1.对学生管理数据库进行完全备份,并备份到MyBK_1备份设备上(假设此备份设备已创建好)。
BACKUP DATABASE 学生管理数据库 TO MyBK_1
例2.对学生管理数据库进行完全备份,并覆盖掉备份设备上已有的内容
BACKUP DATABASE 学生管理数据库 TO MyBK_1 WITH INIT
例3.对学生管理数据库进行事务日志备份,并备份到MyBKLog1备份设备上。
BACKUP LOG 学生管理数据库 TO MyBKLog1
DIFFERENTIAL:表示进行差异备份;
INIT:表示本次备份数据库将重写备份设备,即覆盖掉本设备上以前进行的所有备份;
NOINIT:表示本次备份数据库将追加到备份设备上,即不覆盖掉本设备上以前进行的所有备份;
(2)备份数据库的语句格式为:
BACKUP DATABASE 数据库名 TO { < 备份设备名 > } | { DISK | TAPE } = {‘物理备份文件名’} [ WITH [ DIFFERENTIAL ][ [ , ] { INIT | NOINIT } ]]
使用Transact-SQL语句实现恢复
MSSQL数据库初级到高级的学习资料整理相关推荐
- 信息学竞赛学习资料整理
信息学竞赛学习资料整理 一.总结 一句话总结:可以在网上获取各种免费视频资源,网上超多,也可以买书,也可以去刷题网站多做题 1.信息学竞赛书籍推荐? 信息学竞赛一本通 算法导论 组合数学 <CC ...
- 深度学习资料整理(软件资源)
近这两年里deep learning技术在图像识别和跟踪等方面有很大的突破,是一大研究热点,里面涉及的数学理论和应用技术很值得深入研究,这系列博客总结了深度学习的博客,原理等资料,供大家学习讨论. 一 ...
- iOS 学习资料整理(中文版)
这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的 ...
- JAVA学习资料整理
今天偶然间发现之前一个群里发过的一篇关于JAVA学习资料的东西.本着服务大众的精神,搬来了博客园: <JAVA编程思想>第四版(英文原版) 下载地址:http://115.com/file ...
- iOS 学习资料整理
这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的 ...
- 程序员优秀学习资料整理(不断更新中)
如果你发现自己陷入各种新技术.工具包围中,而纠结于该选择哪些学习,读读这篇文章,技术的执念. 综合资源 资源链接汇集 awesome - 各种主流语言的优秀项目汇集 :+1: lists - 资源集合 ...
- lt;转gt;iOSnbsp;学习资料整理
阅读目录 视频教程(英文) 视频教程(中文) 书籍 博客 文章 相关网站 社区 工具/插件 GitHub Top 50 简介 邮件订阅 文档 指南 Awesome 系列 知乎上的讨论 Quora 上的 ...
- 人工智能、机器学习、深度学习从入门到进阶学习资料整理
最近整理了下在这里分享给大家,欢迎大家点赞收藏. 学习社区 神力AI(MANA):国内最大的AI代码平台. Learn AI:一个AI学习交流中心. AI研习社:一个专注于AI开发者和学术青年求知求职 ...
- 初学java 学习资料整理
前言 学习java已经有四天时间了,目前学习完了包括基础语法.面向对象.异常处理等java基础,但是在熟练程度以及工具使用方面都还需要继续加强.java的生态果然明显更好,高质量的学习资料也确实不少. ...
- 人工智能、机器学习、深度学习学习资料整理(开发必备)
最近整理了下AI方面的学习资料,包含了学习社区.入门教程.汲取学习.深度学习.自然语言处理.计算机视觉.数据分析.面试和书籍等方面的知识.在这里分享给大家,欢迎大家点赞收藏. 学习社区 神力AI(MA ...
最新文章
- 【Qt】在QtCreator中编译log4cplus
- Android深入浅出系列之Android工具的使用—模拟器(一)
- 智能车声标定位相关算法优化
- PowerDesigner如何将物理模型转为对象模型,将对象模型转生成Java类
- 英特尔物联网产业的布局中,优势和劣势都在哪?
- 年底清理垃圾了,整理了一整套python学习资料无偿送给大家
- 使用FFMPEG类库分离出多媒体文件中的音频码流
- Linux中共享库(so)的几个名称及相关用法
- 制作Camtasia 2020击键标记动画——保存及应用
- Python 过滤a文件中每一行内容,保存到b文件中
- Logstash5.X 日志搜集处理框架 安装配置
- java Thread.yield()用法详解
- 软件架构设计师-ER图-关系模型转换
- mysql中 怎么插入反斜杠_MySQL中如何插入反斜杠,反斜杠被吃掉,反斜杠转义(转)...
- 163邮箱每天可以无限制的发邮件么?
- JS 中 Object 的 keys 是无序的吗?
- js实现刷新页面的方法
- 特征工程与自动特征工程
- RocketMQ编译版安装及安装中遇到的问题 windows版
- html去图片平铺效果,HTML图片怎么平铺
热门文章
- java怎么改运行图标,java修改进程图标
- dms系统与mysql_Mysql的两种存储引擎以及区别
- 关闭git命令窗快捷键_git常用命令与AndroidStudio常用快捷键
- java json 打印出来_如何使用Java漂亮地打印现有的JSON数据?
- 请问投稿中要求上传的author_SCI投稿状态解析
- (6)Spring框架----Bean生命周期分析(详细)
- 洛谷 P4114 Qtree1 树链剖分
- WPF 引用 ttf文件
- 反射认识_03_改变成员变量Fields
- HDU 3047 Zjnu Stadium 带权并查集