1、数据库三范式
1NF 属性不可分
2NF 非主键属性,完全依赖于主键属性
3NF 非主键属性无传递依赖

2、默认创建一个数据库,会生成哪些文件?
1)主文件(.mdf) 2)日志文件(.ldf) 3)无次要文件(.ndf)

3、创建数据库时,能不能把数据文件和日志文件分开?
可以分开,起到优化作用,把数据文件放到高速读写区,把日志文件放到低速读写区。

4、默认的系统数据库有哪些?
1)master数据库(主) 2)tempdb数据库(临时) 3)model数据库(模板) 4)msdb数据库(计划任务)

5、你能向我简要叙述一下SQL Server中使用的一些数据库对象吗?
表、索引、视图、存储过程、触发器、用户定义函数、数据库关系图、全文索引

6、维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?
尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便,其次使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据库的完整性和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编写复杂,效率低下。

7、主键和索引的区别?
1.主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊的索引。
2.数据库中只允许有一个主键,但是可以有多个索引。
3.使用主键数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率。
4.索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描。
5.主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引
6.唯一索引则标识该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引

8、什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。缺点是开发调试差、可移植性差、维护困难。

9、触发器的作用?
触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以根据数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。

10、索引的作用?它的优缺点是什么?
索引就是一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。对数据进行频繁查询建议建立索引,如果要频繁更改数据不建议使用索引。

11、什么是事务?
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就会失败,以后操作就会回滚到操作前的状态,或者是上一个节点。为了确保要么执行,要么不执行就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性、一致性、隔离性、持久性。

12、什么是锁?
在所有的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性,与现实中的锁一样,它可以是某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。
分为:行锁、表锁、页锁、悲观锁、乐观锁
行锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度最高。
表锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生所冲突的概率最高,并发度最低。
页锁:开销和加锁时间介于行锁和表锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般。
悲观锁:考虑问题很悲观,每次去拿数据时都认为别人会修改,所以每次拿数据的时候都会上锁。
乐观锁:考虑问题很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁。

13、什么叫视图?
视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增改查操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。

14、游标是什么?
游标是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行。可以对结果集当前行做修改。一般不使用游标,但是需要逐条处理数据的时候,游标显得十分重要。

15、SQL Server里有什么类型的索引?
两种索引:聚集索引和非聚集索引。其中聚集索引表示表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较大。非聚集索引表示数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置,非聚集索引检索效率比聚集索引低,但对数据更新影响较小。

16、索引分类
普通索引:最基本的索引,没有任何限制
唯一索引:与“普通索引”类似,不同的就是:索引列的值必须是唯一,但允许有空值。
主键索引:它是一种特殊的唯一索引,不允许有空值。
全文索引:针对比较大的数据,生成全文索引很耗时间和空间。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循“最左前缀”原则。

17、什么是主键?
主键是表格里的(一个或多个)字段,只用来定义表格里的行;主键里的值总是唯一的.

18、什么是外键?
外键是一个用来建立两个表格之间关系的约束.这种关系一般都涉及一个表格里的主键字段与另一个表格(尽管可能是同一个表格)里的一系列相连的字段.那么这些相连的字段就是外键.

19、存储过程和函数的区别?
存储过程和函数的区别
存储过程是用户自定义的一系列    SQL语句的集合,函数通常是数据库已定义 的方法,它接收参数并返回某种类型的值并不涉及特定用户表。
区别:存储过程可以返回参数 函数只能返回值或表对象
函数必须有返回值 存储过程可有可无
存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一部分来调用。

程序猿 常规SQL面试题相关推荐

  1. 各大IT公司校园招聘程序猿笔试、面试题集锦

    百度一面 1.给定一个字符串比如"abcdef",要求写个函数变成"defabc",位数是可变的. 别人的方法:这个比较简单,我用的是strcpy和memcpy ...

  2. [面试] 各大IT公司校园招聘程序猿笔试、面试题集锦

    百度一面 1.给定一个字符串比如"abcdef",要求写个函数编程"defabc",位数是可变的.这个比较简单,我用的是strcpy和memcpy,然后他问有什 ...

  3. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  4. JAVA程序猿面试题汇总

    (此话题将不断更新,请留意) 第一,谈谈final, finally, finalize的差别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.finally是异常 ...

  5. 《重学 Java 面试题》PDF 出炉了 - 退休的程序猿,肝了30天写出15万字241页的实战编程资料

    一.前言 我膨胀了 ,在编写完上一本PDF<字节码编程>被下载了2000份以后,蠢蠢欲动开始计划第二本.于是从 5月20日那天投身实战型设计模式打磨,通过模拟互联网业务开发实际需求作为学习 ...

  6. sql面试题问答题_SQL面试问答

    sql面试题问答题 SQL interview questions are asked in almost all interviews because database operations are ...

  7. 程序猿的办公桌都长啥样?

    专栏 | 九章算法 网址 | www.jiuzhang.com 一.以干净简单见长的单显 1 @一只在家办公的程序猿 电脑设备 HP 27er 27-in LED Backlit Monitor 电脑 ...

  8. 当周杰伦把QQ音乐干翻的时候,作为程序猿我看到了什么?

    点击蓝字关注我吧 1 别人都会唱了,而我还没付钱! 2019年9月16日晚23点整,周杰伦发布新歌<说好不哭>. 我经过一系列猛如虎的操作: 咦!这啥? 发生错误了?what the fu ...

  9. 算法面试必备-----数据库与SQL面试题

    算法面试必备-----数据库与SQL面试题 算法面试必备-----数据库与SQL面试题 1.数据库理论问题 问题:什么是数据库,数据库管理系统,数据库系统,数据库管理员? 问题:什么是元组,码,候选码 ...

最新文章

  1. 开发者如何构建技术影响力
  2. php参数一个字符串数组,PHP字符串控制台参数到数组
  3. Joomla 2.5 中文语言包安装模板报错
  4. springboot:banner.txt
  5. 查看程序占用内存_电脑内存不足怎么办
  6. 虚存的用法计算机组成原理,5.5虚拟存储器计算机组成原理.pdf
  7. ZZULIOJ 1096: 水仙花数(函数专题)
  8. python列表用法大全
  9. Mysql 日志管理详解
  10. Java之数据库基础理论
  11. 算法第四版学习笔记之初级排序算法
  12. linux设置文件最大权限,linux chmod 数字设置权限(最大权限)
  13. 在python中datetime使用中如何识别上月同期日期
  14. 计算机经典书籍大全(内含下载方式)
  15. 判断当前时间为本月的第几周,本周的第几天
  16. 从云计算到容器到容器云
  17. 《非凡的公主希瑞》(She-Ra Princess of Power)[93集全][数码修复][国英双语][RMVB]
  18. 基于Java实现的新冠肺炎疫情实时动态地图
  19. 漫画软件开发:EasyComic
  20. 使用R语言进行机器学习的原因

热门文章

  1. Androdi TV开发之VerticalGridView
  2. Egg.js 基本使用
  3. 伟大的创造不是计划出来的!来自OpenAI科学家的反直觉建议
  4. 关于react判断是否安装app,没有则去appStore(适配android和ios)
  5. Android窗口 dimiss失效问题 惨痛教训啊
  6. systemVerilog中case语句
  7. Linux Centos7 集群部署nacos2.X
  8. 22-05-05 西安 javaSE(18) 网络编程、TCP\IP、Socket通信
  9. 承认吧星巴克,你就是个卖杯子的
  10. 数据挖掘工程师的要求