zoukankan      html  css  js  c++  java
  • 数据库基础(Database Basics)

    数据库基础知识学习整理,如有误望指正。——20210624 cpg

    什么叫数据库

    DB的全名是database,即数据库。

    • 按一定结构组织存储的、集成的、可共享的数据的集合。

    • 数据库依照特定的规范把数据储存起來,用户能够对储存的数据进行增、删、改、查操作。

    • 数据库是研究数据管理的技术。即如何妥善地保存和科学地管理数据。

    • 数据管理是指对数据进行分类、组织、编码、存储、检索和维护等操作。

      数据管理技术好坏的评判标准:

      • 数据冗余
      • 数据共享
      • 数据独立性
      • 数据统一集中管理

    总的来说,数据库是以特定方式存储、能与多个用户共享、具有尽量小的信息冗余、与程序相互独立的数据集合。

    数据库介绍

    主键

    • 每个表都应该有一个主键,并且每个表只能有一个主键。
    • 主键列不能包含 NULL 值

    什么是SQL

    • SQL,指结构化查询语言,全称是 Structured Query Language。

    • SQL 是用于访问和处理数据库的标准的计算机语言。

    • SQL 可以

      • 创建新的数据库、表、存储过程和视图。
      • 在数据库中插入、更新、删除记录。
      • 从数据库中检索数据等。

    语法规则

    • 可以多条查询,分号结尾。
    • 不严格分区大小写。
    • 在 SQL 中,会忽略空格和换行,但建议避免不必要的空格和空行。

    SQL查询

    常用查询

    • SHOW DATABASES; 查询所有数据库
    • use 数据库名; 使用某数据库
    • SHOW TABLES 查询所有表
    • SHOW COLUMNS FROM 表名 查询该表所有列
    • SELECT 列 FROM 表名 查询
    • SELECT 列1,列2... FROM 表名 多列查询
    • SELECT * FROM 表名 全部查询(查询所有列)

    DISTINCT

    • DISTINCT 关键词用于返回唯一不同的值。
    • DISTINCT 关键字与 SELECT 结合使用,以去掉所有重复的记录,仅返回唯一的记录。
    • SELECT DISTINCT 列 FROM 表名;

    例如查询表中客户所在城市,一般都会重复,用distinct可以返回不重复的城市列表

    LIMIT

    • LIMIT 关键词用来检索记录的一个子集
    • SELECT 列 FROM 表 LIMIT 3; 返回前3条记录。
    • SELECT 列 FROM 表 LIMIT 2,4; (偏移量选择)从第2个位置开始选取4条记录。

    注意: 偏移量选择的下标是从0开始的,上面的示例中从第二个位置开始,也就是从第 3 条数据开始。

    完全限定名称

    • SELECT 列名 FROM 表名; -- 正常

    • SELECT 表名.列名 FROM 表名; -- 限定

    • 以上两条sql语句是完全等效的。

    • 当使用多个可能共享相同列名的表时,这种写法是特别有用的。

    排序

    • SELECT 列名 FROM 表名 ORDER BY 列名; 根据列名排序。

      注意:ORDER BY 关键字默认按照升序 ASC 对记录进行排序。
      如果需要按照降序对记录进行排序,可以使用 DESC 关键字。

    • SELECT 列名 FROM 表名 ORDER BY 列名1,列名2..; 多列排序

      多列排序会首先根据条件1进行排序,当条件1重复时会根据条件2继续排序。

      例如姓名,年龄,身高等,重名时根据年龄对重名数据排序,年龄也一致时根据身高排序等

    什么叫数据库管理系统

    数据库管理系统(data base management system)是位于用户与操作系统间的一层数据管理方法,用以科学地组织和储存数据、高效地提取和维护数据。

    • 它是一种控制和管理数据库的大型软件,其关键作用包含数据定义、数据操纵、数据库的运作管理、数据库的创建和维护等。
    • 它对数据库进行统一的控制与管理,以确保数据资源的安全和完整性。用户依靠DBMS访问数据库中的数据,数据库管理人员也通过DBMS对数据库进行设计和维护。
    • 它提供多种功能,可使不同程序和用户以不一样的方式去创建、修改和访问数据库。
    • 它使用户能便捷地定义和操作数据,以及进行多用户下的高并发控制和数据备份恢复。

    为什么要用数据库

    由于传统式的io流文件储存数据有很多缺点:

    • 文件储存数据效率低;
    • 数据存取的操作非常繁杂;
    • 一般只有储存小量字符串数据。

    这些弊端的存在导致了数据库的出现,利用数据库储存数据就可以很好地规避它们。

    数据库的种类

    数据库有两种类型,分别是关系型数据库非关系型数据库

    • 关系型数据库:Oracle、DB2、MicrosoftSQLServer、MicrosoftAccess、MySQL等。

      存储格式能直观地反映实体间的关系,和创建的表格比较相似,表与表之间是有复杂的关联关系。

    • 非关系型数据库:NoSql、Cloudant、MongoDb、redis、HBase等。

      指的是分布式、非关系型的、不保证遵循ACID原则的数据存储系统。

    关系型数据库遵循ACID规则

    ​ 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:

    1、A (Atomicity) 原子性

    ​ 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

    ​ 比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

    2、C (Consistency) 一致性

    ​ 一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

    ​ 例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

    3、I (Isolation) 独立性

    ​ 所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

    ​ 比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

    4、D (Durability) 持久性

    ​ 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

    BASE

    BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

    BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:

    • Basically Available --基本可用
    • Soft-state --软状态/柔性事务。 "Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的
    • Eventually Consistency -- 最终一致性, 也是 ACID 的最终目的。

    ACID vs BASE

    ACID BASE
    原子性(Atomicity) 基本可用(Basically Available)
    一致性(Consistency) 软状态/柔性事务(Soft state)
    隔离性(Isolation) 最终一致性 (Eventual consistency)
    持久性 (Durable)

    关系型数据库的优点:

    1. 能够复杂查询:可以用SQL句子便捷的在一个表及多个表之间做复杂的数据查询。
    2. 事务支持性优秀:能够实现对于安全性要求很高的数据访问。

    非关系型数据库的优缺点:

    • 优点
      • 性能好:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,并且不用通过SQL层的解析,因此性能表现优异。
      • 可扩展性好:同样也是基于键值对,数据间耦合度低,因此很容易水平扩展。
      • 分布式计算
      • 低成本
      • 架构的灵活性,半结构化数据
      • 没有复杂关系
    • 缺点
      • 没有标准化
      • 有限的查询功能(目前)
      • 最终一致是不直观的程序

    主流数据库管理系统有哪些

    1.MySQL:

    MySQL是一个中小型关系型数据库管理系统。现阶段MySQL被广泛应用在中小型系统中,尤其是在web应用中用户群较多。MySQL不提供一些中小型系统中极少应用的功能,因此其资源占用很小,便于安裝、应用和管理。

    2.Oracle:闭源、最贵、性能最好

    Oracle从DB2等产品中汲取到许多优势,并且大胆地引入了很多新的理论与特性,因此Oracle在性能和可用性方面有非常大的优势。

    3.SQL Server:

    SQLServer是由微软公司开发设计的数据库管理系统,它已普遍用于电商、金融机构、保险、电力工程等与数据库相关的行业。它只能在Windows操作系统上运行,操作系统的可靠性对数据库十分关键。它的并行处理和共存模型还不够成熟,难以解决日渐增加的用户量和数据卷,伸缩性比较有限。

    4.DB2:

    DB2是嵌入于IBM的AS/400系统上的数据库管理系统,直接与硬件配置。它支持标准SQL语言,并拥有与其他数据库相连接的接口。因而它具备速度快、可靠性好的优势。但是缺点在于,在硬件平台方面,DB2数据库管理系统仅支持IBM的AS/400。

    数据库的作用

    1. 数据界定

    DBMS出示相对数据语言来界定(DDL)数据库构造,它们刻画数据库框架,并被储存在数据字典中。

    2.数据存储

    DBMS提供数据操作语言(DML),实现对数据库数据的基本存放和提取操作:查询,插入,改动和删除。

    3.数据库运作管理

    DBMS提供数据控制,就是通过数据的安全性、一致性和并发控制等对数据库进行合理的控制管理,确保数据的安全,提高容灾能力。

    4.数据库的创建和维护

    包含数据库原始数据的载入,数据库的转储、恢复、重组织,系统性能监控、解析等作用。

    5.数据库的传输

    DBMS提供数据传输功能,实现用户端的应用程序与DBMS的通讯,一般与操作系统协调完成。

    NOSQL

    为什么用NoSQL?

    今天我们可以通过第三方平台(如:Google,Facebook等)可以很容易的访问和抓取数据。用户的个人信息,社交网络,地理位置,用户生成的数据和用户操作日志已经成倍的增加。我们如果要对这些用户数据进行挖掘,那SQL数据库已经不适合这些应用了, NoSQL数据库的发展也却能很好的处理这些大的数据。

    什么是NoSQL?

    NoSQL 概述

    ​ NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,
    ​ 泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。

    (例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

    NoSQL代表

    MongDB、 Redis、Memcache

    references

    数据库基础教程介绍 - 树懒学堂 (shulanxt.com)

    数据库基础知识整理-基础概念 - 简书 (jianshu.com)

    [数据库基础知识一(MySQL)_远方-CSDN博客_mysql数据库基础知识

    NoSQL 简介 | 菜鸟教程 (runoob.com)](https://blog.csdn.net/qq_41805715/article/details/100150047)

  • 相关阅读:
    linux常用命令
    webStorm关闭自动保存
    jquery封装常用的方法
    请求头的设置
    表单序列化对象,jquery
    linux开机启动Tomcat服务器
    centOS安装git,保存用户名和密码
    CentOS7启动Tomcat报错:./startup.sh: Permission denied
    javaWeb使用百度编辑器上传图片的问题
    es6-Symbol用法
  • 原文地址:https://www.cnblogs.com/cpg123/p/14925728.html
Copyright © 2011-2022 走看看