结语
小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。
我们选择的这个行业就一直要持续的学习,又很吃青春饭。
虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。
送给每一位想学习Java小伙伴,用来提升自己。
本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!
20.默认的系统数据库有哪些?
21.默认创建一个数据库,会生成哪些文件?
22.创建数据库时,能不能把数据文件和日志文件分开?
23.什么是索引覆盖(Index Covering)查询?
24.存储过程和触发器的区别?
25.存储过程和函数的区别?
26.聚集索引和非聚集索引区别
27.索引的优缺点,什么时候使用索引,什么时候不能使用索引?
28.数据库的优化
29.数据库的主从复制
30.数据库连接池的作用
31.分库分表,主从复制,读写分离
32.数据库三范式
33.数据库中join的inner join, outer join, cross join
34.死锁怎么解决
35.mysql数据库中常用的聚合函数有哪些?
1.触发器的作用?
触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
2.什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个“execute 存储过程名 参数”命令来调用存储过程。
3.索引的作用?和它的优点缺点是什么?。
索引就一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
4.主键和索引的区别?
1.主键时为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引;
2.数据表中只允许有一个主键,但是可以有多个索引;
3.使用主键数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率;
4.索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描;
5.唯一索引则标识该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引。
5.什么是内存泄漏?
一般我们所说的内存泄漏指的是堆内存的泄漏。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后由于某种原因程序未释放或无法释放,造成系统内存的浪费。导致程序运行速度减慢甚至系统崩溃等严重后果。
6.维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?
我是这样做的,尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
7.什么是事务?
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组,如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。为了确保要么执行,要么不执行,就可以使用事务。要将一组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
8.什么是锁?
在所有的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
9.什么叫视图?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是由一个表或者多个表的行或列的子集。它使得我们获取数据更容易,相比多表查询。
10.视图创建和使用语法?
1.首先判断是否存在
if exists (select * from sysobjects where name = ‘视图名’)
drop view View_EdsProd
Go
2. 创建视图
create view View_EdsProd as select * from Tab_EdsProd where Mid>1(条件) go
3. 使用视图
select *from View_EdsProd
11.游标是什么?
游标是SQL 的一种数据访问机制。可以将游标简单的看成是查询的结果集的一个指针,可以根据需要在结果集上面来回滚动,浏览需要的数据。
12.NULL是什么意思?
NULL(空)这个值表示UNKNOWN(未知):它不表示“”(空字符串)。不能把任何值与一个 UNKNOWN值进行比较,都会生产一个NULL值。您必须使用IS NULL操作符。
13.什么是主键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的。
14.什么是外键?
外键是一个用来建立两个表格之间关系的约束。这种关系一般都涉及一个表格里的主键字段与另外一个表格(可能是同一个表格)里的一系列相连的字段。那么这些相连的字段就是外键。
15.您如何确保一个带有名为Fld1字段的TableB表格里只具有Fld1字段里的那些值,而这些值同时在名为TableA的表格的Fld1字段里?
第一个答案是使用外键限制。外键限制用来维护引用的完整性。它被用来确保表格里的字段只允许有已经在另一表格里的某个字段里定义了的值。通常是另外一个表格的主键。
另外一种答案是触发器。触发器可以被用来保证以另外一种方式实现与限制相同的作用,但是它非常难设置与维护,而且性能一般都很糟糕。
16.概述存储过程及其优缺点。
存储过程是一个预编译的sql语句 ,编译后可多次使用
优势:响应时间上来说有优势,可以给我们带来运行效率提高的好处,且使用存储过程的系统更加稳定
缺点:维护性较差,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难
17.什么是相关子查询?如何使用这些查询?
相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会请求外部查询的值,从而形成一个类似于循环的状况。
18.什么是SQL注入式攻击?
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。比如:攻击者在用户名字和密码输入框中输入"‘或’1’='1"之类的内容。最后得到的SQL命令可能变成:SELECT * from Users WHERE login = ‘’ or ‘1’=‘1’ AND password = ‘’ or ‘1’=‘1’。这时,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。
19.如何防范SQL注入式攻击?
只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。
⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:
第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。
第二:删除用户输入内容中的所有连字符。
第三:对于用来执行查询的数据库帐户,限制其权限。
⑵ 用存储过程来执行所有的查询。
⑶ 限制表单或查询字符串输入的长度。
⑷ 检查用户输入的合法性,确信输入的内容只包含合法的数据。
⑸ 将用户登录名称、密码等数据加密保存。
⑹ 检查提取数据的查询所返回的记录数量。
20.默认的系统数据库有哪些?
1)master数据库(主);2)tempdb数据库(临时);3)model 数据库(模板);4)msdb数据库(计划任务);
21.默认创建一个数据库,会生成哪些文件?
1)主文件(.mdf),2)日志文件(.ldf),无次要文件(.ndf)。
22.创建数据库时,能不能把数据文件和日志文件分开?
可以分开,起到优化作用。把数据文件放到高速读写区,把日志文件放到低速读写区。
23.什么是索引覆盖(Index Covering)查询?
索引覆盖(Index Covering)查询是指数据可以只通过索引获取,而不用接触表。
24.存储过程和触发器的区别?
触发器与存储过程的主要区别在于触发器的运行方式。存储过程必须有用户、应用程序或者触发器来显示的调用并执行,而触发器是当特定时间出现的时候,自动执行或者激活的,与连接用数据库中的用户、或者应用程序无关
25.存储过程和函数的区别?
存储过程是用户定义的一系列SQL语句的集合,而函数通常是数据库已定义的方法,具体区别如下:
1.对于存储过程来说可以返回参数,而函数只能返回值或者表对象.
2.函数必须有返回值,存储过程可有可无
3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用.
26.聚集索引和非聚集索引区别
聚集索引,数据按索引顺序存储,中子结点存储真实的物理数据
非聚集索引,存储指向真正数据行的指针
27.索引的优缺点,什么时候使用索引,什么时候不能使用索引?
索引最大的好处是提高查询速度,
缺点是更新数据时效率低,因为要同时更新索引
对数据进行频繁查询进建立索引,如果要频繁更改数据不建议使用索引。
28.数据库的优化
1.创建适当的索引
2.对sql语句优化
3、使用exists或not exists代替in或not in
4、使用存储过程
5、用union替换or(适用于索引列)
6、where代替having,having 检索完所有记录,才进行过滤
7、使用select top或set rowcount来限制操作的行
8、避免嵌套查询
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
wcount来限制操作的行
8、避免嵌套查询
最后
码字不易,觉得有帮助的可以帮忙点个赞,让更多有需要的人看到
又是一年求职季,在这里,我为各位准备了一套Java程序员精选高频面试笔试真题,来帮助大家攻下BAT的offer,题目范围从初级的Java基础到高级的分布式架构等等一系列的面试题和答案,用于给大家作为参考
以下是部分内容截图
[外链图片转存中…(img-UFt5hlwL-1715669522772)]