数据库面试题

每天叫醒你的不是闹钟,而是梦想

01

先来了解一下SQL的分类

数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:database,table,column.关键字:create,alter,drop等

数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新.关键字:inserst,delete,updata等

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录.关键字:select,from,where等.

数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户,关键字:grant等

02

删除表中所有记录使用delete和truntruncate的区别

删除方式

delete 是一条一条删除,不清空auto_increment记录数

truncat 直接将表删除,重新建表,auto_increment将置为0,从新开始

事务方面

delete 删除的数据,如果在一个事务中可以找回

trancate 删除的数据找不回来

02

MySQL,Oracle如何通过字段查询到表

mysql

oracle

03

两个表的交集部分如何查询

隐式内连接:select  * from A,B where 条件

显示内连接:select * from A inner join B on 条件

左外连接:select * from A left join B on 条件

右外连接:select * from A right join B on 条件

04

数据库优化方法

1.适当的字段属性

       一般来说,数据库中的表越小,执行的查询也就会越快.所以,在创建表的时候,我们可以将表中字段宽度设置得尽可能小,以获得更好的性能.

 2.适当的索引

      索引基本上是一个数据结构,有助于加快整个数据库检索过程,但是过多的索引反而会造成不好的结果;一般来说,索引应该建立在那些将用于JOIN,WHERE判断和ORDER BY排序的字段上.

3.使用连接(JOIN)来代替子查询

      相关子查询基本上取决于父查询或外部查询,这种搜索是逐行完成的,这意味着它会降低整个过程的速度.通常如果WHERE来自于从外部查询的命令,应用子查询运行每一行,由父查询返回,从而减慢整个进程并降低数据库效率的话,更好的调整数据库的方式是INNER JOIN命令.

4.使用NOT NULL

      如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引,索引统计和值比较都更复杂.可为NULL的列会使用更多的存储空间,在MySQL里也需要特殊处理

  

05

数据库三范式是什么

第一范式:列不可再分

第二范式:行可以唯一区分,主键约束

第三范式:表的非主属性不能依赖与其他表的非主属性外键约束 

且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立在第一第二范式上.

点击蓝字关注我们

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值