一、MySQL数据库
有两种引擎:
使用引擎代码
1.innorDB,支持事务,可以使用锁(行锁和表锁),但是运行速度较慢。


begin; select * from userinfo for update; #表锁,整张表都不能访问 select * from userinfo where id=1 for update; #行锁,只有id=1这行数据上锁,其他行可以被访问 commit; #解锁


cursor.execute("select * from userinfo for update")


#django中不能上锁,但可以使用事务 with trancation.automic(): models.User.objects.all().for_update()
2.mysaim,不支持事务,只可以使用表锁,运行速度较快。
二、数据库授权
三、表结构设计
四、SQL语句(增删改查、常用)
五、需要了解的东西 http://www.cnblogs.com/wupeiqi/articles/5713323.html
1、视图:将一条sql语句起一个别名,调用这个别名即可查询这条语句。
视图存在数据库中。


#创建 create view v1 as select * from userinfo where id > 3; #删除 drop view v1; #查询 select * from v1;
2、触发器:在对某张表增删改的前后自定义操作
3、函数:对取到的数据再加工。
4、存储过程:
六、索引
作用:加速查找、约束
种类:
主键:加速查找、唯一、不为空
普通索引:加速查找
唯一索引:加速查找、唯一、可为空(只能有一个为空)
联合索引:加速查找
联合唯一索引:加速查找、唯一(两列或多列数据不重复)
PS:联合索引遵循最左前缀原则
名词:
覆盖索引:去索引文件中查找数据
索引合并:使用多个单列索引查找数据