一、数据库概述

1. 什么是数据?
  数据是数据库中存储的基本对象,描述事物的符号记录称为数据。

2. 什么是数据库?
  数据库,顾名思义,是存放数据的仓库。严格的讲,数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易拓展性,并可为各种用户共享。

3. 关系数据库
  关系数据库系统是支持关系模型的数据库系统,关系模型由 关系数据结构、关系操作集合和关系完整性约束 三部分组成。

关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条是:关系的每一个分量必须是一个不可分的数据项,规范化的关系简称为范式。
关系模型中常用的关系操作包括:查询(query)操作 和 插入(insert)、删除(delete)、修改(update)操作两大部分。

关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性

<br>

二、关系数据库标准语言SQL

早期的关系操作能力通常用代数方程式或逻辑方程式来表示,分别称为关系代数和关系演算。另外,还有一种介于关系代数和关系演算之间的结构化查询语言(Structured Query Language,SQL)。SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制的功能,是集查询、数据定义语言、数据操纵语言和数据控制语言为一体的关系数据语言。

1. 表的新建 修改 删除

新建: create table <表名> ( ... );

修改: alter table <表名> [ ... ];

删除: drop table <表名> [restrict|cascade];

2. 索引的建立和删除

当表的数据量比较大时,查询操作会比较耗时,建立索引是 加快查询速度 的有效手段。数据库索引类似于图书后面的索引,能快速定位到需要查询的内容。用户可以根据应用环境的需要在基本表上建立一个或多个索引,以提供多种存取路径,加快查找速度。

创建索引是在某个表的一列或者多列上建立一个索引,用来提高多表的访问速度。常见索引有三种方法:在常见表的时候常见,在已存在的表上创建和用alter table语句创建。

数据库索引有多种类型,常见索引包括 顺序文件上的索引、B+树索引、散列索引、位图索引等。

删除索引:索引一经建立就由系统使用和维护,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据增、删、改频繁,系统会花费许多时间来维护索引,从而降低了查询效率,所以需要定时清理一些不必要的索引。

3. 视图的概念

视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以一旦基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。

为什么要定义视图?
- 视图能够简化用户的操作;
- 视图使用户能以多种角度看待同一数据;
- 视图对重构数据库提供了一定程度的逻辑独立性;
- 视图能对机密性数据提供安全保护;
- 适当利用视图可以更清晰的表达查询

4. 触发器
触发器(trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,触发器将被保存在数据库服务器中,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器。
<br>

三、数据库完整性

关系模型中已经提供三种完整性约束

1. 定义实体完整性
  关系模型的实体完整性在CREATE TABLE中用 PRIMARY kEY (主键)定义
用PRIMARY KEY定义了关系的主键后,每当程序对基本表插入一条记录或者对主键列进行更新操作时,关系数据库就会按照实体完整性规则自动进行检查,包括:
- 检查主键值是否唯一,如果不唯一则拒绝插入或修改
- 检查主键的各个属性是否为空,只要有一个为空就拒绝插入或修改

检查记录中的主键值是否唯一的一种方法是进行全表扫描,全表扫描十分耗时,为了避免全表扫描,关系数据库管理系统一般都在主码上自动建立一个索引。如:B+树索引。

2. 定义参照完整性
  关系模型的参照完整性在CREATE TABLE中用 FOREIGN kEY 定义哪些列为外键,用REFERENCES短语指明这些外键参照哪些表的主键。
  参照完整性讲两个表中的相应元组联系起来,因此对被参照表和参照表进行增、删、改操作时都有可能破坏参照完整性,必须进行检查以保证这两个表的相容性。

3. 用户定义的完整性
  用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。
 属性限制通常分为以下三类:
- 列值非空(NOT NULL);
- 列值唯一(UNIQUE);
- 检查列值是否满足一个条件表达式(CHECK短语)。

<br>

四、数据中的事务和锁

<br>

五、笔记

1. MySql中用来记录货币常用什么字段类型?

在Java的开发中,货币MySQL中常用Decimal类型表示,例如与金钱有关的数据,如:

salary DECIMAL(9,2)

  • 9(precision)代表能存储的数值总位数
  • 2(scale)代表小数点后的数字位数
  • salary列中能存储值的范围为:-9999999.99 - 9999999.99

Decimal作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小数精度。如果scale是0,Decimal不包含小数部分。不使用float或double,是因为float和double是以二进制存储的,有一定的误差。

<br>

2. MySQL 中常用什么数据类型表示时间?

MySql常用时间类型:

类型 大小 (字节) 范围 格式 用途
year 1 1901 ~ 2155 YYYY 年份值
date 3 1000-01-01 ~ 9999-12-31 YYYY-MM-DD 日期值
datetime 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
timestamp 4 1970-01-01 00:00:00 ~ 2037年某时 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

补充:
{yyyy-MM-dd HH:mm:ss}:使用24小时制格式化日期
{yyyy-MM-dd hh:mm:ss}:使用12小时制格式化日期
24小时制

3. MySql中外键的作用是什么?
作用:保持数据一致性、完整性,主要目的是控制存储在外键表中的数据,使两张表形成关联,外键只能引用外表中的列的值。


星河滚烫,你是人间理想