SQL笔记

SQL数据库笔记

一.数据库设计

  1. 是否建索引
    广义:主键,外键,唯一约束unique,索引(key/index)
    狭义:索引提升查询速度,降低增删改的速度,
    使用场景:经常出现在where条件后的字段,经常过滤依据的字段,字段的值多样性不能单一越多越好(多样性指的是字段值的可能性越多越好)

  2. 数据库引擎的选择
    决定数据库的保存方式和解析mysql语句后执行的方式,可以对不同的表设置不同的引擎
    InnoDB:默认引擎,支持事务,外键
    MYISAM:不支持事务,查询快,

  3. 外键
    不创建外键仍然能够完成数据库的增删改查
    外键的作用:维护数据的完整性:delete,update
    项目初期:可以创建外键,由数据库帮助完成数据完整性的约束
    项目后期:一般会移除外键
    不影响其他表,影响查询速度

二.ORM

  1. 理解orm
    (1) 帮助我们生成创建表的sql语句,是应用程序和数据的桥梁。
    (2) 作用:
    ① 省去自己拼写SQL,保证SQL语法的正确性
    ② 一次编写可以适配多个数据库
    ③ 防止注入攻击
    ④ 在数据库表明或字段名发生变化时,只需要修改模型类的映射,无需修改数据库操作的代码

  2. 数据库如何使用
    (1) 不借助orm,直接自己编写sql语句操作数据库
    (2) 借助orm,由orm同时完成表结构的创建和表数据的增删改查操作,意思是先创建模型类,对模型类进行迁移,同步到数据库中完成表的创建,后续通过模型类进行数据的增删改查 (makemigration migrate)
    (3) 直接自己编写定义表(包括创建和修改)的sql语句,然后补充模型类做映射,再借助模型类完成数据的增删改查
    3.SQLAlchemy
    独立的开源python的orm框架
    Flask-SQLAlchemy是SQLAlchemy在flask中使用为了方便设计的扩展,是对SQLAlchemy的封装
    sqlalchemy的session是用来记录数据库操作的中间层存储,提供了事务的支持

三. 数据库理论
1.复制集与分布式
复制集 数据相同分布式集群
分片
主>充当数据保存的主力,增加修改删除发生的机器
从>起到数据备份的作用,不用来当做数据处理的主力,不在这样的机器上进行增删改,数据从主力机器中复制而来.
2.MySQL
● 读写分离对事物的影响:
● 分库分表:垂直分库,垂直分表水平分库,水平分表
项目前期起步阶段不考虑分库分表,演进到数量巨大时(千万条数据就可以考虑),
面临的问题:事务支持;多库结果集合并(group by, order by);跨库join .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值