Python-数据库(编程)

Posted JerryZao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-数据库(编程)相关的知识,希望对你有一定的参考价值。

1、数据库概念

  数据库:按照数据结构来组织,存储,管理数据的仓库

  按照数据模型分类:网状数据库,层次数据库,关系型数据库。

  层次数据库:

    以树形结构表示实体及其之间的联系,关系只能支持一对多。(IBM 的 IMS)

2、去IOE

  IT架构中,去掉IBM 的小型机,Oracle数据库, EMC存储设备,取而代之使用自己在开源软件基础上开发的系统。

  去IOE 转而使用廉价的架构,稳定性一定下降,需要较高的运维水平解决。

3、NoSQL

  NoSQL是对非SQL,非传统关系型数据库的统称。

  NoSQL:非关系型,非分布式,不提供ACID 的数据库设计模式。

  目前常用的数据库:

    

    redis:内存数据库,键值存储,v 可以是任何类型
    memcached:一般用来session同步,k-v的v只能是string
    MongoDB:文档数据库,非内存的

    处理大数据:
      cassandra:列存储数据库,不限制列数,可以根据具体情况增加列数
      HBase:列数据库

    搜索引擎:
      Elasticsearch: 倒排索引(反过来查),索引库
      Solr:大数据上使用

    HIve:大数据中的,类似于数据仓库,已经开始属于NoSQL领域
      支持SQL,所以可以认为是关系型

    SQL:大数据领域的唯一语言
    非传统的 关系型数据库,统称为NoSQL

4、MySQL

  MySQL 是一种关系型数据库管理软件,支持网络访问,默认服务端口 3306

  MySQL 通信使用mysql协议

  SQL语句:

    SQL是结构化查询语言,Structured Query Language 1987被ISO 组织标准化

    所谓主流的关系型数据库都支持SQL, NoSQL也有很大一部分支持SQL

    SQL语句分为
      DDL 数据定义语言:复制数据库定义,数据库对象定义,由CREATE,ALTER与DROP三个语法组成

      DML 数据操作语言,负责对数据库对象的操作,CRUD增删改查

      DCL 数据控制语言:负责数据库权限访问控制,由GRANT 和REVOKE 两个指令组成

      TCL 事务控制语言:负责处理ACID 事务,支持commit, rollback指令

    SQL语句 不区分大小写

    SQL语句末尾应该使用分号结束

5、约束:

  primary key :主键,一般表中的一个字段或者多个字段设置为主键,或者联合主键,主键的列不能包含空值null,主键一般是整形,长整形,且自动增长,一般表中都有主键

  unique key :唯一键,可以为空,但是不为空的不可重复。

  约束 Constraint

    定义了主键,就有主键约束

    定义了唯一键约束,就有唯一键约束

    外键约束:

      外键:在表B 中的列,关联表A 中的主键 ,表B中的列就是外键

      A表称为主表,B表称为从表

      插入规则:

        不要定义

        如果在表B中插入一条数据,B的外键列插入了一个值,这个值必须是表A中存在的主键值

        更新规则:

        定义外键约束时指定该规则

        删除规则:

        定义外键约束时指定该规则:

        外键约束的操作:(这四个值,定义在从表中,如果主表修改,从表如果设置了,就会影响主表,让不让主表删,删了,影响不影响从表)

        CASCADE:从父表删除或更新会自动删除或更新字表中匹配的行。

        SET NULL :从父表删除或更新行,会设置子表中的外键列为NULL,但必须保证子表列没有指定NOT NULL,

        RESTRIC:如果从父表删除主键,如果子表引用了,则拒绝对父表的删除或更新操作

        NO ACTION:标准SQL的关键字,在MySQL中与RESTRIC相同,拒绝对父表的删除或更新操作。

        外键约束,是为了保证数据完整性,一致性,杜绝数据冗余,数据讹误

6、视图:    

  视图,也称为虚表,查询语句生成的,可以通过视图进程CRUD操作

  视图的作用:

    简化操作,将复杂查询SQL语句定义为视图,可以简化查询

    数据安全,视图可以只显示真实表的部分列,或计算后的结果,从而隐藏真实表的数据 

7、数据类型:

  

  

  LENGTH函数返回字节数,

  char 可以将字符串变成等长,这样每个偏移量是一样的,空间换时间,效率极高varchar变长。

  

8、关系操作:

  关系:在关系数据库中,关系就是二维表

  关系操作就是对表的操作

  选择:又称为限制,是从关系中选择出满足给定条件的元组

  投影:在关系投影就是从选择出若干属性列组成新的关系

  连接(join):将不同的两个关系连接成一个关系

9、DML---CRUD增删改查

  INSERT INTO log (id,name, logname, password) VALUES(1,\'jack\', \'jakc\', \'kacl\') ON DUPLICATE KEY UPDATE name=\'lucy\';

  如果主键,唯一键冲突,就执行update后面的设置。

  INSERT IGNORE INTO log (id) VALUE(1);

  如果主键,唯一键冲突,就忽略

 10、连接 join

 1 BOLB:一般对于图片等数据,都放在磁盘中,把路径(一般相对路径)放在数据库中
 2 text:一般不会把文件放在数据库中,查找非常麻烦,,一般选择搜索引擎数据库,如 ES等
 3 
 4 join:
 5     coross join = inner join, 需要写条件,重复列,不会去掉(join,默认就是inner)
 6     nature join 一般不怎么用,它是利用主键,不需要写条件,并且过滤掉重复项
 7 
 8  9 
10     left join:从左表的每一项都存在,且都到右表找,没有的,就用NULL(悬空)

 

 

11、事务Transaction

  隔离级别:

 

12、数据仓库和数据库的区别:

 

以上是关于Python-数据库(编程)的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

Python 之 Socket编程(TCP/UDP)

使用 Pygments 检测代码片段的编程语言

面向面试编程代码片段之GC

如何在 Django Summernote 中显示编程片段的代码块?