四、数据库基础(1)

数据库

数据库学习,先去看《SQL必知必会》这本书,有了关系型数据库的概念后,就可以开始上手操作了。

初期建议MySQL,反正关系型数据的语句都差不多,最多个别语法有区别,但是在后期工作中都是用ORM。

除非是做数据库优化的,否则基本用不到原生语法。

当然,《MySQL必知必会》看一遍,手写SQL语句也不是难题。

数据库的事务

事务是一个操作序列,这些操作要么全执行要么全不执行。

常见的ACID四个属性,讲的是原子性、一致性、隔离性、持久性。

原子性是不可分割的意思,即一个事务是不可分割的,要么都执行,要么都不执行。

一致性,是说明数据具有一致的状态,比如事务处理前大家共有200元钱,操作结束后也应该是200元。

隔离性,针对并发操作,其操作是相互隔离的,不会影响到其它事务。

持久性,无论数据对错,只要成功修改了,那么就是永久的,镜子破了再粘回去也不是原来的那块镜子了。

数据库的索引

索引本身是一种数据结构,就是哈希表,索引的优点是查询速度快,缺点是一旦有新建/修改操作,就会重新索引导致速度变慢,并且无法通过索引来获取范围数据,必须是精确获取。

数据库的锁

常见的有乐观锁、悲观锁,像MySQL还有共享锁、排他锁、意向锁、行级锁、表级锁。

数据库的操作

增删改查:
- 查select,也是用的最多的:select [] from [] join [] on [] where [] group by [] having[] order by []
- 增insert into:insert into [] (cols) values (rows)
- 删delete:delete from [] where []
- 改数据update:update [] set [] where []
- 改表定义alter:alter [] add/drop/change/modified []

数据库引擎

  • 针对MySQL,应用广泛的是MyISAM和InnoDB这两个引擎
    • MyISAM支持全文本索引,不支持外键、事务,无法转InnoDB,常规是先建表再建索引
    • InnoDB支持事务,通过主键索引和辅助索引查询数据,其行级锁以索引为节点

非关系型数据库

对于Web开发,主要使用Redis/Memcached这种内存数据库用于缓存处理,而在大数据领域,其它非关系型数据库用的比较多。


ORM

对象映射模型,其实它做的事儿很简单。

  1. 将编程语言中的数据类型映射到数据库支持的类型,将行数据映射为类实例,列数据作为实例属性。
  2. 实现类或实例方法到数据库增删改查操作的映射,通过元类或装饰器等方法实现事务功能。
  3. 数据以实例对象的方式储存。

常见ORM

大型的有SQLAlchemy、DjangoORM、SQLObject

中型的有storm

小型的有peewee,关于peewee之前写了一篇介绍

转载于:https://www.cnblogs.com/ikct2017/p/9449977.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值