1. 数据库面试

基本知识

四种语言

DDL Data Definition Language

  • CREATE ALTER COMMENT RENAME
  • DROP TRUNCATE
    DML(Data Manipulation Language)
  • SELECT INSERT UPDATE DELETE EXPLAIN PLAN
  • MERGE CALL LOCK TABLE
    DCL(Data Control Language)数据库控制语言 授权,角色控制等
  • grant
  • revoke
    TCL(Transaction Control Language)事务控制语言
  • SAVEPOINT 设置保存点
  • ROLLBACK 回滚
  • SET TRANSACTION

数据库概念和范式

  • 实体(对应一个表):
    • 属性(对应一列):
      • 码:一个或多个构成候选码。
        • 主码(主键)
        • 候选码
        • 外码(外键): 和其他的表join。
      • 主属性和非主属性。
    • 元组:一种取值(对应一行)
      范式
  • 为啥有范式。范式越高,数据的冗余度越小
  • 分类:
    • 1NF: 属性不可分 (1NF是对属性的原子性约束,要求属性具有原子性,不可再分解)每一个属性只表示一个概念。

    • 2NF: 符合1NF,并且非主属性完全依赖于码。(2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性,更通俗说有主键ID)
      学生 课程 老师 老师职称 教材 教室 上课时间
      小明 一年级语文(上) 大宝 副教授 《小学语文1》 101 14:30
      注意:
      教材只和课程有关
      (学生 课程)是码
      一个表中应当只含有一种数据。
      (学生,课程)是个码,课程却决定了教材,这就叫做不完全依赖,或者说部分依赖。出现这样的情况,就不满足第二范式!有什么不好吗 有冗余。

    • 3NF: 符合2NF,并且,消除传递依赖
      (3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余)
      老师职称只和老师有关。

    • BNF: 符合3NF,并且,主属性不依赖于主属性。

关键字

删除 drop、delete与truncate

  • drop:不要一张表。
  • truncate:保留表而删除所有数据
  • delete: +where 删除部分数据。 可以回滚,速度最慢

选择插入更新删除

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

explain
查看该SQL语句有没有使用上了索引,有没有做全表扫描

权限控制 grant revoke。

having和where

  • Where 是一个约束声明 Having是一个过滤声明
  • 在查询过程中Where> 聚合语句(sum,min,max,avg,count) > having子句优先执行。

join 分类:

  • outer
    • left:左表全有
    • right:右表全有
    • full
  • inner:指定相等
  • natural:默认相等
  • cross:笛卡尔

并发控制

什么是事务?

  • 事务(Transaction)是并发控制的基本单位。它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。
  • 为什么事务? 是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。
  • 特性 ACID
    • Atomic(原子性):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
    • Consistency(一致性):只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
    • Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
    • Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。

并发控制

  • 为什么?确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。
  • 乐观并发控制(乐观锁) :假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
  • 悲观并发控制(悲观锁):假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作

索引 + 存储过程 + 视图

索引

索引是什么?B树。有什么作用以及优缺点?

  • 为什么? 加快检索
  • 优缺点?
    • 索引加快数据库的检索速度
    • 索引降低了插入、删除、修改等任务的速度(需要维护)
    • 索引需要占物理和数据空间
      B+树。
  • 原理


    脑补b树结构
  • 索引页和数据页:一条索引记录中包含的基本信息包括:键值(即你定义索引时指定的所有字段的值)+逻辑指针(指向数据页或者另一索引页)。
  • 分类:
    • 聚集索引,表数据按照索引的顺序来存储的。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。
    • 非聚集索引,表数据存储顺序与索引顺序无关

创建

  • CREATE INDEX index_name
    ON table_name (column_name)
  • explain

什么是存储过程?有哪些优缺点?

  • 为什么?预编译的SQL语句块集合。根据名称和参数调用返回结果。
  • 好处:效率高。直接就在数据库服务器运行。代替大量sql。
  • 缺点:业务逻辑被封装到存储过程。调试测试。 没有缓存。
  • 用法:create produce fname as go exec fname

什么是视图?以及视图的使用场景有哪些?

  • 视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
    建立虚表:
  • 只暴露部分字段给访问者。
  • 把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异
    创建:
  • create view 视图名 as select 语句
  • drop view 视图名

sql 注入问题。

  • 把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
  • 预防
    • 输入输出检查。
    • PreparedStatement类是java的一个类。JDBC:执行SQL语句的Java API

扩展

需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。
关于数据库的扩展主要包括:

  • 业务拆分 一个数据库按业务变成多个数据库
  • 主从复制 实现读写分离
  • 数据库分库与分表:表分开,库分开。

SQL语句

select 相关

基本款
select t1.XX, t2.XX count (distinct t2.XXX ) as c // 定义返回表单的形式
from Table1 t1 join Table2 t2 on t1.a=t2.b //查询的位置
where t1.a>0 // 数据满足的条件
group by t1.a // 分组使用
having Max()>0 //分组聚合的结果满足条件
order by //排序
limit 2,1 //第二行,一条数据

select可嵌套子查询

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容