数据库基础

266 阅读3分钟

1. 定义

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

2. 分类

2.1 网状数据库

  • 实现多对多关系

2.2 层次数据库

  • 以树结构存储数据
  • 关系只支持一对多
  • 不可以有交叉

2.3 关系型数据库

  • 由行和列在组织数据和关系,表中行可以描述数据实体,也可以描述实体间的关系
  • 基于关系模型构建的数据库称为 RDBMS(relational Database System)
  • 常见关系型数据库
    • Oracle
    • MySQL
    • PostgreSQL
    • IBM Db2
    • SQLite
    • HIVE(蜂窝)

2.4 非关系型数据库

  • 多种分布方式操作语言
  • 常见的非关系型数据库
    • redis(key-value)
    • MongoDB(document store)
    • Cassandra(wide column store)
    • Elasticsearch(search engine 分布式搜索引擎)
    • HBASE(search engine 大数据领域

3. SQL语句

  • Structured Query Language

语言规范

  1. 大小写不敏感
  2. 用分号结束一句话

SQL语句分类

1. DDL 数据定义语言

🌼负责数据库定义,数据库对象定义,Create,alter 和 drop 三个语法组成

drop user user1;
drop database if exists test;

2. DML 数据操作语言

🌼负责对数据库对象的操作,包括创建数据库,创建表,对数据进行增删改查等,具体信息见数据库操作

3. DCL 数据控制语言

🌼负责数据库权限访问控制,grant 和 revoke

grant all on employees.* to 'root'@'%` identified by 'root'
revoke all on *.* from root;

4. TCL 事物控制语言

🌼负责梳理 ACID 事务,commit 和 rollback等

4. 数据库中的一些重要定义

4.1 主键(primarykey):

特点:唯一、非空且自增,常常为整型或长整形数据类型

4.2 索引(index)

4.2.1 用于快速检索,空间换时间,查询效率提高

4.2.2 插入修改删除效率低下

4.2.3 分类

  • 主键索引:主键会自动建立主键索引,开始定位唯一记录
  • 唯一索引:表中的索隐列组成的索引必须唯一,可以为空,但非空必须唯一
  • 普通索引:没有唯一性要求

4.3 约束(constraint)

4.3.1. 唯一约束
4.3.2. primary key 约束(主键约束)
4.3.3. foreign key 约束(外键约束)

外键外键

外键:在表 b 中的列,关联表 a 中的主键,表 b 中的列就是外键
 
如果 b 表中外键列插入了一个值,这个值必须是 a 表中存在的主键值

表 b 关联了表 a 的主键,删除 a 的主键,必须删除 b 中引用这个主键的记录,否则删除失败

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

4.4 视图(view)

  • 一张虚拟表,也叫虚表,由查询语句生成,可以通过视图进行 curd 操作
  • 可以简化操作,可以隐藏真实表的数据,保护数据安全

5. SQL 的数据类型(MySQL)

text 类型

image.png

number 类型

image.png

日期类型

image.png

6. 数据库关系操作

关系:在关系数据库中,关系就是二维表(可以是一张或者多张表)

  • 选择(Selection):也叫显示,是从关系中选择出满足给定条件的元组
  • 投影(projection):在关系上投影就是从选择出若干属性列组成新的关系
  • 连接(join):将不同两个关系连接成一个关系

7. MySQL 自带数据库

  • information_schema

    • 虚拟库,不占用磁盘空间,存储一些数据库启动后的参数
  • mysql

    • 授权库,主要存储系统用户的权限信息
  • Performance_schema

    • 用于手机数据库服务器性能参数,记录处理查询时发生的各种事件、锁等现象
  • sys

    • 将Performance_schema中的复杂度降低,使得 DBA 可以盖鞥高的阅读这个库找那个的内容
  • test

    • 自动创建的测试数据库

8. 字符集

show charset;