python数据库的题库_数据库和缓存--【python】面试题汇总

1.列举常见的关系型数据库和非关系型数据库都有哪些

关系型数据库:

oracle,mysql

非关系型数据库:

MongoDB,redis

关系型数据库的特性:

1.关系型数据库,是指采用了关系模型来组织数据的数据库

2.关系型数据库的最大特点就是事务的一致性

3.关系模型指的就是二维表格模型

关系型数据库的优点:

1.容易理解

2.便用方便

通用的sql语言使得操作关系型数据库非常方便

3.易于维护

丰富的完整性大大降低了数据冗余和数据不一致的概率

4.支持sql

可用于复杂的查询

关系型数据库的缺点:

1.读写性能比较差

2.固定的表结构

3.高并发读写需求

4.海量数据的高效读写

非关系型数据库:

1.使用键值对存储数据

2.分布式

3.一般不支持ACID特性

4.非关系型数据库严格上不是一种数据库,而是一种数据结构化存储方法的几个

优点:

无需经过sql层的解析,读写性能很高

基于键值对,数据没有耦合性,容易扩展

缺点:

不提供sql

无事务处理

2.Mysql常见数据库引擎及比较

Myisam:

默认的插件式存储引擎。

InnoDB:

用于事务处理应用程序,具有众多特性,包括ACID事务支持

Memory:

将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可以提供极快的访问

3.简述数据三大范式

第一范式:原子性

字段不可再分,否则将不是关系型数据库

第二范式:唯一性

一个表只能说明一个事物

第三范式:每列都与主键有直接关系,不存在传递依赖

非主键字段不能相互依赖

4.什么是事务,mysql如何支持事务

只有存储引擎为INNODB的MYSQL数据库才支持事务

事务处理可以用来维护数据库的完整性,保证成批的sql语句要么全部执行要么全部不执行

ACID事务的四个特点:

A:原子性

要么全部完成,要么全部不完成

C:一致性

在事务开始之前和事务结束之后,数据库的完整性没有被破坏

I:隔离性

数据库允许多个并发事务同时对其数据进行读写和修改的能力

D:持久性

事务处理结束后,对数据库的修改是永久的

Mysql事务处理主要有两种方法:

1.用BEGIN,ROLLBACK,COMMIT来实现

BRGIN开始一个事务

ROLLBACK事务回滚

COMMIT事务确认

2.直接用SET来改变MYSQL的自动提交模式

SET AUTOCOMMIT=0 禁止自动提交

SET AUTOCOMMIT=1 开启自动提交

事务做持久化是为了应对数据库奔溃的情况

5.简述数据库设计中一对多和多对多的应用场景

一对多:

一个球队拥有多名球员,而一名球员只应对应一个球队,球队和球员的关系就是一对多的关系

多对多:一们课程有若干个学生选修,一个学生可以同时选修多们课程

6.如何基于数据库实现商城商品计数器

创建一个商城表--包含(id,商品名,每一个商品对应的数量)

create table product

(id primary key auto_increment,

pname varchar(64),

pcount int);

7.常用sql

1.创建数据库

create database mydata2.选择

select* fromtable1 where 范围3.插入

insert into table1(field1,field2) values(value1,value2)4.删除

deletefromtable1 where 范围5.更新

update table1 set field1=value1 where 范围6.查找

select* from table1 where field1 like '%value1%'

7.排序

select* fromtable1 order by field1,field2 desc8.总数

select count as totalcountfromtable19.求和

select sum(field1) as sumvaluefromtable110.平均

select avg(field1) as avgvaluefromtable111.外联

select a.a,a.b,a.c,b.c,b.d,b.ffrom a left join b on a.a=b.c

8.简述触发器,函数,视图,存储过程

触发器是一个特殊的存储过程,它是mysql在insert,update,delete的时候自动执行的代码块

create trigger trigger_name

after/bofore insert/update/delete on 表名

for each row

begin

sql语句:

end

触发器针对每一行

视图是一个虚拟表,其本质是根据sql语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集,并可以将其当作表来使用

存储过程

一组可以编程的函数,是为了完成特定功能的sql语句集,经编译创建并保存在数据库中,用户可以通过指定存储过程的名字并给定参数来调用执行

优点:

将重复性很高的一些操作,封装到一个存储过程中,简化了对这些sql的调用

批量处理:sql+循环,减少流量

统一接口,确保数据安全

9.mysql索引种类

普通索引

唯一索引

索引列的值必须唯一,但允许有空值

主键索引

一种特殊的唯一索引,一个表只能有一个主键,不允许有空值

组合索引

全文索引

索引大大提高查询速度,降低更新表的速度

索引需要花时间进行优化

10.索引在什么情况下遵循最左前缀规则

比如我们想在a,b,c三个字段上建立一个联合索引,这里我们就需要选择优先级

11.主键和外键的区别

主键是能缺点一条记录的唯一标识

外键用于另一张表的关联

12.mysql常见的函数

聚集函数

agv,count,max,min,sum

处理字符串的函数

字母大小写转换去空,替换

处理数值的函数

绝对值,向上取整,四舍五入

13.列举创建索引但是无法命中索引的8种情况

1.条件中有or

2.多列索引,不是使用的第一个

3.like查询以%开头

4.列类型是字符串,但是没有用引号引起来

5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

14.如何开启慢日志查询

slow_query_log # 是否开启慢日志查询,默认off

slow_query_log_file #慢日志文件存储位置

log_queries_not_using_indexes #是否把没有使用到索引的sql记录到日志中,默认off

long_query_time #超过多少秒的查询才会记录到日志中,单位是秒

15.数据库导入导出命令(结构+数据)

导出某个数据库

mysqldump -u root -p data > test.sql

16.数据库优化方案

数据结构,sql,索引是低成本方案

硬件是高成本方案

17.char和varchar的区别

char定义的列长度固定,范围是0~255

varchar定义的列长度是可变长度

18.简述mysql的执行计划

select_type

type

ref

extra

19.在对name做了唯一索引的前提下,简述以下区别:

select * from tb where name = ‘Oldboy-Wupeiqi’

select * from tb where name = ‘Oldboy-Wupeiqi’ limit 1

20.什么是索引合并

把几个索引的范围扫描合并成一个索引

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值