zoukankan      html  css  js  c++  java
  • 数据库介绍常用数据库,SQL增删改查

    引题

    为什么使用数据库:
    之前的学习中我们已经可以储存数据、变量、读写本地文件(txt、csv)
    1.持久化。内存中的变量当程序重启和电脑断电时丢失数据,而硬盘可以长时间、持久的储存数据。数据储存到硬盘上的过程叫持久化。
    2.数据库更加专业强大。远比纯文本文档、excel表格强大,增删改查和统计函数。

    数据库基本概念

    观察表格、excel表格,打开了 学生列表.xls excel表格文档。类比引用数据库概念。

    1. 库:schema 整个表格文档。好像一个物流公司共占地100亩,盖了50个仓库,A01仓库负责存储河南货物,A02仓库负责存储广州xx项目物料。每一个仓库对应一个项目。
    2. 表:table 对应ecxel表格里sheet1 sheet2.由行内容和列组成。表示描述一个类,每一行描述一个对象。
    3. 字段 field :对应表格头部的 序号、班级、姓名。好像类的属性。字段里储存的值的类型需要事先定义。
    4. 值 value:表格每一行具体储存的信息。
    5. 主键 primary key:类似表格中 序号 这一列。数据库中这一列会自增并不会重复。
    6. 外键 foreign key: 表一里的一个字段引用另一个表班级信息表的id列。优点易于维护,保持数据一致性。
    7. 范式:描述 智游学校时,可以把全部信息字段定义到一张表上,也可以分为学员信息表、班级信息表、课程信息表。划分维度、信息耦合度可高可低,具体结合业务逻辑分析。

    常见数据库介绍

    关系型数据库:

    1. sqlite:轻量级数据库。功能基础简单,在数据较少情况下性能并不比重型数据库低。优点,python解释器内置驱动,无需安装直接使用,适合初学者数据库。手机应用使用的就是它。
    2. mysql:最流行的数据库。中型。开源
    3. postgreSQL:大象数据库,号称最先进的数据库。从大学兴起的开源数据库、架构优秀、功能前卫,数据量很大的时候,性能衰减不明显。消耗相同硬件资源的情况下性能和稳定性优于mysql数据库。django odoo等python框架官方推荐使用此数据库。但是目前市场占有率还不高。
    4. oracle:地位很高的商用数据库。昂贵,稳定,常与Java配合使用。
    5. DB2 sybase MSSQL等,其他的商业数据库。
    6. access:微软office套件中包含,轻量,由于数据库门槛,使用者不多。

    (no-sql)非关系型数据库:
    7. mongodb 存储单位是文档,json(类似后端dict)结构整个存进去。数据常放在内存中以获得查询性能,定期把数据持久化到硬盘上。
    8. redis 键值对 “name”=“小明”

    数据库字段类型

    数据库创建表示要事先告诉计算机硬盘,每张表的字段什么类型、将要储存的内容大还是小。长度过小,内容值存不进去,长度太大,浪费硬盘空间。我们需要选择合适的类型和长度。
    各数据库字段关键字基本一致。常用字段类型如下:

    1. 数值
      整数:常用INT INTEGER 占四个字节,2**32,可以表示常用范围整数。
      其他TINYINT(1字节) SMALLINT(2字节) MEDIUMINT(3字节)
      BIGINT(8字节)适用身份证号、VIP号码比较长的编号。

    2. 浮点数
      常用 FLOAT(4字节) 单精度小数。即使是单精度,范围也不小。
      DOUBLE(8字节) 双精度小数。
      场景 金钱计算,火箭轨道计算。

    3. 字符串
      CHAR char(10) 可以存储长度(字节长度)不超过10的字符。例如"hello"。但由于长度按照字节判断,存Unicode编码的中文只能存3个。
      常用 VARCHAR 0-65535字节,variable char 可变字符串。 VARCHAR(5)可以存储5个中文或5个英文字母。
      TEXT TINYTEXT MEDIUM LONGTEXT,场景:大文本储存,书籍文章、用户反馈。
      BLOB MEDIUM LONG,二进制文件 场景:图片、视频。但一般不在数据库中存储图片和视频,因为会增加数据库的计算压力和带宽传输压力和备份还原的难度和用户信息静态资源耦合到一块,解决方案是 图片视频存到普通的文件目录硬盘上,数据库中存储文件路径。

    4. 日期
      DATE 日期,形如"2018-11-11"
      DATETIME 日期时间, 形如"2018-11-11 11:11:11"
      TIMESTAMP 时间戳, 形如 1541667299.8460715

    5. sqlite的字段比较简化:
      INTEGER 整数
      REAL 浮点数
      TEXT 字符串
      NULL 什么都不存

    SQL

    structured query language 结构化查询语言。专门对数据库进行查找、增加、修改、删除、统计的操作语言。
    CURD增删改查 create update retrieve delete。
    书写风格,关键字大写最好。表名大小写都行,但是在一些数据库中不区分大小写。建议小写。
    基本语法。
    1.查找
    SELECT 字段1,字段2,字段3,…FROM 表名; python中返回值[(1, 101班, 小明, 男), (), ()]字段比较多时简写为 SELECT*FROM表名; 由于数据库执行时会把 * 转换为字段再执行,性能轻微下降。
    SELECT * FROM 表名 WHERE 字段1 = 过滤值, 字典二 = 过滤值; where 条件查找。
    2.添加
    INSERT (字段1,字段2…)INTO 表名 VALUES(1,“小明”, “男”);
    简写 INSERT INTO 表名 VALUES(1, “小明”, “男”)
    3.修改
    UPDATE FROM 表名 SET 字段1=新值,字段2=新值 WHERE 字段1 = 要修改的那一行那一个字段的值;
    注意没有where条件限定行的话将会更新整张表。
    4.删除
    DELETE FROM 表名; 注意会删除整张表的所有行。
    DELETE FROM WHERE 字段1 = 值; 限定条件删除某些行。
    5. 创建表
    CREATE TABLE 表名{
    字段类型 字段名,其他关键字(主键 备注),
    INT id PRIMARY KEY,
    VARCHAR(20) username,
    }

  • 相关阅读:
    读书笔记 effective c++ Item 53 关注编译器发出的警告
    读书笔记 effective c++ Item 52 如果你实现了placement new,你也要实现placement delete
    读书笔记 effective c++ Item 51 实现new和delete的时候要遵守约定
    读书笔记 effective c++ Item 50 了解何时替换new和delete 是有意义的
    读书笔记 effective c++ Item 49 理解new-handler的行为
    读书笔记 effective c++ Item 48 了解模板元编程
    读书笔记 effective c++ Item 47 使用traits class表示类型信息
    读书笔记 effective c++ Item 46 如果想进行类型转换,在模板内部定义非成员函数
    读书笔记 effective c++ Item 45 使用成员函数模板来接受“所有兼容类型”
    读书笔记 effective c++ Item 44 将与模板参数无关的代码抽离出来
  • 原文地址:https://www.cnblogs.com/nicholas7464/p/10257494.html
Copyright © 2011-2022 走看看