python⾯试题之MySQL数据库
5.1.1 NoSQL 和 SQL 数据库的⽐较?
1、使⽤成本上,nosql使⽤简单,易搭建,⼤部分是开源的;sql通常需要安装部署,开源的⽐较少,价格昂贵
2、存储形式上,nosql具有丰富的存储形式,如键值对形式、⽂档形式、图结构形式等,可以存储各种类型的数据;sql采⽤关系型数据模型,它是⾏列结构,采⽤⼆维表结构的形式存储数据
3、从查询速度上来看,nosql的数据在缓存中,因此查询速度快;sql数据是存在硬盘中的,查询数据相对较慢
4、是否⽀持ACID特性,nosql不⽀持,sql⽀持
5、是否⽀持sql语句查询,nosql不⽀持,sql⽀持
6、扩展性,nosql易扩展,sql不易扩展
5.1.2 了解 MySQL 的事物吗?事物的四⼤特性是什么?
事务是指作为⼀个基本⼯作单元执⾏的⼀系列sql语句的操作,要么全部执⾏完,要么都不执⾏完。事务操作保证了数据的完整性和准确性。
probit和tobit
原⼦性:⼀个事务是⼀个个不可分割的最⼩单位,对数据库的事务操作要么全部完全的执⾏,或完全的不执⾏,不可执⾏⼀部分。
⼀致性:对数据库的操作不提交,所有的修改就不会保存到数据库中。
隔离性:同⼀时间,只允许⼀个事务对数据库进⾏操作,事务与事务之间没有⼲扰
持久性:事务对数据库的操作⼀旦修改提交,数据将永久保存到数据库中。
5.1.3 关系型数据库的三范式是什么?
第⼀范式,表中列数据只能含有原⼦性的数据
第⼆范式,满⾜第⼀范式且没有部分依赖
第三范式,满⾜第⼆范式且没有传递依赖
5.1.4 关系型数据库的核⼼元素是什么?
数据⾏、数据列、数据表、数据库
5.1.5 简单描述⼀下 Python 访问 MySQL 的步骤?
1、导⼊pymysql模块
2、⽤于模块的connect()⽅法创建数据库对象
3、利⽤数据库对象的cursor()⽅法创建Cursor对象mysql查看所有存储过程
4、⽤Cursor对象的execute()⽅法执⾏数据库增删改查操作,查询时可⽤fetchone()和fetchall()查看数据
rla指令
5、⽤数据库对象的commit()⽅法提交数据
6、关闭数据库对象和Cursor对象
5.1.6 写⼀个 Python 连接操作 MySQL 数据库实例?
import pymysql
conn = t(
host="localhost",
port=8001,
database="test",
user="seth",
password="123")
cursor=conn.cursor()
ute("select * from mytable")
for i in range(count):
data = cursor.fetchall()
print(data)
cursor.close()
conn.close()
5.1.7 SQL 语句主要有哪些?分别有什么作⽤?
数据定义语句:create、drop、turncate、alter
数据查询语句:select
数据操作语句:update、delete、insert
数据控制语句:grant、revoke
5.1.8 MySQL 有哪些常⽤的字段约束?
not null:⾮空,保证该字段不为空
default:默认值,保证该字段有默认值
primary key:主键,唯⼀且不为空
foreign key:外键
check:检查约束,检查输⼊的值是否为设定好的值或范围内的值
unique:唯⼀,可以为空
5.1.9 什么是视图?视图有什么作⽤?
keras简介视图⼜称为虚表,是⼀组数据的虚拟表⽰,本质就是⼀条select语句的结果集,视图本⾝没有数据,它只包含映射到基类表的查询语句,所以基类表数据发⽣变化,视图也随之变化。
视图语法⽰例:CREATE VIEW v as select *from my_table;
视图作⽤:
1.简化复杂查询,如果经常进⾏复杂的查询语句,可为该复杂查询语句建⽴视图,之后查询该视图即可
2.限制数据访问,视图本质就是⼀条select语句,所以访问视图时,只能访问到对应的select语句查询的列,对基类其它列的数据起到安全和保密作⽤
5.1.10 什么是索引?索引的优缺点是什么?
索引是为了加快对表中的数据列查询速度的⼀种分散存储结构,通俗的可以理解为⼀本书的⽬录
优点:⼤⼤加快查询速度,⽐普通查询快1000倍
缺点:占⽤物理空间、索引的创建和维护都需要时间
5.1.11 NULL 是什么意思?它和空字符串⼀样吗?
NULL:空对象,没有分配内存空间
空字符串:空对象实例,是⼀个长度为0的字符串,分配内存空间
5.1.12 主键、外键和索引的区别?
主键是⼀条数据的唯⼀标识,不能重复,不能为空,⽤于保证数据的完整性,⼀张表只能有⼀个主键
本表的外键是其它表的主键,外键可以重复,可以为空,⽤于与其它表建⽴联系,⼀张表可以有多个外键
索引不能重复,可以为空,⽤于提⾼查询速度
5.1.13 char 和 varchar 的区别?
1. char定长,如果存储的数据长度⼩于定义的长度,⽤空格补充;varchar变长,如果存储的数据长度⼩于定义的长度,按照实际的数据长度存储。因为char定长所以存取速度⽐varchar快,但占⽤物理空间,varchar反之
2. char能存储的数据容量<varchar
5.1.14 SQL 注⼊是什么?如何避免 SQL 注⼊?
SQL注⼊:利⽤现有程序,将恶意的sql语句注⼊到后台数据库引擎执⾏
如何避免:
1.永远不要相信⽤户的输⼊,对⽤户的输⼊进⾏验证
2.不⽤采⽤动态sql语句,使⽤传参的sql
5.1.15 存储引擎 MyISAM 和 InnoDB 有什么区别?
InnoDB⽀持事务,⽀持外键,是⾏锁,⽀持⾼并发的操作,⽀持缓存索引和真实的数据,对内存要求⾼;MyISAM不⽀持事务,不⽀持外键,是表锁,不⽀持⾼并发的操作,只⽀持缓存索引不缓存真实数据
5.1.16 MySQL 中有哪些锁?
⾏级锁:对⾏加锁,开销⼤,加锁慢
表级锁:对表加锁,开销⼩,加锁快
页级锁:开销和加锁介于⾏锁和表锁之间
共享锁:⼜称读锁,其它事务可以并发读取数据,但任何事务都不能修改数据,除⾮所有的共享锁释放
排他锁:⼜称写锁,如果有⼀个事务对某个数据加了排他锁,那其它事务都不能对该数据该任何锁,有排他锁的事务对数据可读可写
意向锁
5.1.17 三种删除操作 drop、truncate、delete 的区别?
drop:drop table 表名
删除内容和定义,并释放空间。执⾏drop语句,将使此表的结构⼀起删除。
truncate (清空表中的数据):truncate table 表名
删除内容、释放空间但不删除定义(也就是保留表的数据结构)。与drop不同的是,只是清空表数据⽽已。
truncate不能删除⾏数据,虽然只删除数据,但是⽐delete彻底,它只删除表数据。
delete:delete from表名(where 列名=值)
与truncate类似,delete也只删除内容、释放空间但不删除定义;但是delete即可以对⾏数据进⾏删除,也可以对整表数据进⾏删除。
5.1.18 MySQL 中的存储过程是什么?有什么优点?
是⼀种在数据库中存储复杂程序,以便外部程序调⽤的数据库对象。是⼀组为了完成特定功能的sql语句集,⽤户可以通过调⽤存储过程的名字并给定参数来调⽤执⾏
优点:可封装、可进⾏数据校验
缺点:定制于特定的数据库,当换数据库,需要重写存储过程
5.1.19 MySQL 数据库的有哪些种类的索引?
普通索引、唯⼀索引、主键索引、组合索引、⽂本索引
5.1.20 MySQL 的事务隔离级别?
脏读:事务A在事务B修改了数据之后读取了数据,之后事务B回滚,那么事务A读取的数据就是脏数据
不可重复读:事务A多次读取数据,事务B在事务A读取的过程中修改了数据,导致事务A读取的数据不⼀致
幻读:事务A修改数据库中的数据为另⼀种模式,事务B在事务A修改的过程中,插⼊了⼀条原先格式的数据,导致事务A在修改完之后,发现还有⼀条数据没改
5.1.21 MySQL 中的锁如何进⾏优化?
InnoDB⾏锁优化:
1.尽量让所有数据的检索通过索引来完成
2.合理的设计索引,缩⼩⾏锁的锁定范围
3.控制事务⼤⼩
access应用案例教程4.使⽤较低级别的事务控制
减少死锁建议:
1.尽量按照同⼀顺序访问资源embed标签怎么控制自动播放
2.同⼀事务操作尽可能⼀次性锁定所以资源
3.对于⾮常容易发⽣死锁的业务尝试升级锁颗粒度
5.1.22 解释 MySQL 外连接、内连接与⾃连接的区别?
交叉连接:⼜称笛卡尔积,指不使⽤任何条件,将表A的数据和表B的数据⼀⼀匹配
内连接:是有条件的交叉连接,根据条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中
外连接:其结果集中不仅会包含符合条件的⾏,还包含左表、右表或两张表的数据⾏,这三种情况依次称之为左外连接、右外连接、全外连接
5.1.23 如何进⾏ SQL 优化?
5.1.24 什么是 MySQL 主从?主从同步有什么好处?
Mysql主从是指把数据从⼀个数据库服务器的主节点复制到⼀个或多个从节点上。主从同步的好处:
1.⽔平扩展数据库的负载能⼒
2.容错、⾼可⽤
3.数据备份
5.1.25 MySQL 主从与 MongoDB 副本集有什么区别?
5.1.26 MySQL 账户权限怎么分类的?
1.全局层级:权限范围是⼀个指定服务器的所有数据库,权限存储在mysql.user
2.数据库层级:权限范围是⼀个指定的数据库下的所有数据,权限存储在mysql.db
3.表层级:权限范围是⼀张表的所有列,权限存储在mysql.tables_priv
4.列层级:权限范围是⼀张表的⼀个列,权限存储在lumns_priv
5.⼦程序层级:权限范围是⼀个⼦程序,权限存储在mysql.procs_priv
5.1.27 如何使⽤ Python ⾯向对象操作 MySQL 数据库?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。