数据库1-数据库基本介绍

数据库

存储数据的演变过程

  • 随意的将数据存到一个文件中,并且数据格式也是千差万别的,完全取决于我们自己
  • 软件开发目录规范。限制了存储数据的具体位置

假设上述是一个单机游戏,那么每个人的游戏记录只会在自己的计算机上面保存

需求:将单机游戏做成联网的,每个人的电脑上都能获取游戏记录,如何解决?

将数据单独放在一台电脑上,其他人的电脑通过socket获取这台电脑上的数据

在这里插入图片描述

数据库的本质

数据库的本质就是一款基于网络通信的应用程序

其实每个人都可以开发一款数据库软件,因为它仅仅就是一个基于网络通信的应用程序,也就意味着数据库软件有很多很多

数据库的相关概念

名称全称简称
数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)
数据库管理系统操纵和管理数据库的大型软件DataBase Management System (DBMS)
SQL操作关系型数据库的编程语言,定义了一套操作Structured Query Language (SQL)

查看数据库最新排名: https://db-engines.com/en/ranking

  • Oracle:大型的收费数据库,Oracle公司产品,价格昂贵。
  • MySQL:开源免费的中小型数据库,后来Sun公司收购了MySQL,而Oracle又收购了Sun公司。 目前Oracle推出了收费版本的MySQL,也提供了免费的社区版本。
  • SQL ServerMicrosoft 公司推出的收费的中型数据库,C#.net等语言常用。
  • PostgreSQL:开源免费的中小型数据库。
    - DB2IBM公司的大型收费数据库产品。
  • SQLLite:嵌入式的微型数据库。Android内置的数据库采用的就是该数据库。
  • MariaDB:开源免费的中小型数据库。是MySQL数据库的另外一个分支、另外一个衍生产品,与 MySQL数据库有很好的兼容性。

关系型数据库(RDBMS)

关系型数据库是现在应用最广泛的数据库。关系型数据库在 1969 年诞生,可谓历史悠久。和Excel工作表一样,关系型数据库也采用由行和列组成的二维表来管理数据,所以简单易懂。同时,它还使用 SQL(Structured Query Language,结构化查询语言)对数据进行操作。

传统的关系型数据库采用表格的存储方式,数据以行和列的方式进行存储,要读取和查询都十分方便。

  1. 数据之间彼此有关系或者约束

  2. 存储数据的表现形式通常是以表格存储

  3. 每个字段都会有存储类型的限制

    name  pwd    sex
    老杨   123    男
    木易   321    男
    库       =========》  文件夹
    表       =========》  文件
    记录     =========》  文件内一行行的数据
    

关系型数据库设计规则

  • 一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似Python中 “类”的设计

优点

  1. 都是使用表结构,格式一致,易于维护。
  2. 使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
  3. 数据存储在磁盘中,安全。

缺点

  1. 读写性能比较差,不能满足海量数据的高效率读写。
  2. 不节省空间。因为建立在关系模型上,就要遵循某些规则,比如数据中某字段值即使为空仍要分配空间。
  3. 固定的表结构,灵活度较低。

常见的关系型数据库有 OracleDB2PostgreSQLMicrosoft SQL ServerMicrosoft AccessMySQL

非关系型数据库

非关系型数据库,可看成传统关系型数据库的功能 阉割版本 ,基于键值对存储数据,不需要经过SQL层的解析, 性能非常高 。同时,通过减少不常用的功能,进一步提高性能。

优点

  1. 非关系型数据库存储数据的格式可以是 key-value 形式、文档形式、图片形式等。使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
  2. 速度快,效率高。 NoSQL 可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
  3. 海量数据的维护和处理非常轻松。
  4. 非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。
  5. 可以实现数据的分布式处理。

缺点

  1. 非关系型数据库暂时不提供 SQL 支持,学习和使用成本较高。
  2. 非关系数据库没有事务处理,没有保证数据的完整性和安全性。适合处理海量数据,但是不一定安全。
  3. 功能没有关系型数据库完善。

常见的非关系型数据库有 Neo4jMongoDBRedisMemcachedMemcacheDBHBase

SQL语句的由来

SQL(Structured Query Language,结构化查询语言)是用来操作关系型数据库的语言,使用 SQL 可以对数据库和表进行添加、删除、修改和查询等操作

任何基于网络通信的应用程序底层用的都是socket

既然是socket通信,那么其他的编程语言都可以书写代码,作为socket客户端来连接操作mysql服务端。不同的语言代码是不一样的,那么如何解决不同语言之间的交流问题

  1. 让服务端兼容所有的语言
  2. 采用统一的语言(SQL语句)

服务端

  • 基于socket通信
  • 收发消息
  • SQL语句

客户端

  • 基于socket通信
  • 收发消息
  • SQL语句

SQL 分类

  • DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构
    • 主要的语句关键字包括 CREATEDROPALTER
  • DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性
    • 主要的语句关键字包括 INSERTDELETEUPDATE SELECT
    • SELECTSQL语言的基础,最为重要
  • DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和 安全级别
    • 主要的语句关键字包括 GRANTREVOKECOMMITROLLBACKSAVEPOINT

因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)

还有单独将 COMMITROLLBACK取出来称为TCL (Transaction Control Language,事务控制语言)

SQL语言的规则与规范

  • SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
  • 每条命令以 ;\g\G 结束
  • 关键字不能被缩写也不能分行
  • 关键字不能被缩写也不能分行
    • 必须保证所有的()、单引号、双引号是成对结束的
    • 必须使用英文状态下的半角输入方式
    • 字符串型和日期时间类型的数据可以使用单引号' '表示
    • 列的别名,尽量使用双引号" ",而且不建议省略as

SQL大小写规范 (建议遵守)

  • Windows 环境下是大小写不敏感的
  • Linux 环境下是大小写敏感的
    • 数据库名、表名、表的别名、变量名是严格区分大小写的
    • 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的
  • 推荐采用统一的书写规范
    • 数据库名、表名、表别名、字段名、字段别名等都小写
    • SQL 关键字、函数名、绑定变量等都大写

命名规则

  • 数据库、表名不得超过30个字符,变量名限制为29
  • 必须只能包含 A–Z, a–z, 0–9, _共63个字符
  • 数据库名、表名、字段名等对象名中间不要包含空格
  • 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
  • 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
  • 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了

注释

单行注释:#注释文字(MySQL特有的方式) 
单行注释:-- 注释文字(--后面必须包含一个空格。) 
多行注释:/* 注释文字 */
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值