数据库的主要操作包括:
数据库的操作:创建、删除
表的操作:创建、修改、删除
数据的操作:增加、修改、删除、查询 (简称crud)
数据库系统解决的问题:持久化储存,优化读写,保证数据的有效性。
当前使用的数据库主要分为两类:
文档型:
如sqlite 就是一个文件,通过对文件的复制完成数据库的复制
服务型:
如mysql、postgre,数据储存在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作
E-R模型
当前物理数据库都是按照E-R模型设计的
E表示entry 实体; 一个实体转化为数据库中的一个表
R表示relationship 关系;关系描述两个实体之间的对应规则,包括 一对一、一对多、多对多;关系转化为数据库中的列(在关系数据库中一行就是一个对象)
三范式
对于设计数据库提出了一些规范,这些规范被称为范式
第一范式:列不可拆分
第二范式:唯一标识
第三范式:引用主键
(后一个范式都是在前一个基础上建立的)
数据的完整性
一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中;
在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束
字段类型
在mysql中包含的数据类型很多,这里主要列出来常用的几种
*数字:tinyint,int,decimal
类型名称 说明 存储需求
TINYINT 很小的整数 1个字节
INT(INTEGER) 普通大小的整数 4个字节
DECIMAL(M,D) 压缩的“严格”定点数 如果M>D为M+2个字节,否则为D+2
*字符串:char,varchar,text
类型名称 说明 存储需求
CHAR(M) 固定长度非二进制字符串 M字节,1<=M<=255
VARCHAR(L) 变长非二进制字符串 L+1字节
TEXT 小的非二进制字符串 L+2字节,在此L<2^16
(注意:VARCHAR(10)列能保存的最大长度为10个字符的一个字符串,例如对于字符’ abcd’,length是4而存储要求是5个字节。
CHAR(M)为固定长度字符串,在定义时指定字符串列长,M表示指定长度,M的取值范围是0~255个字符,CHAR(4)定义了一个固定长度的字符串列。其包含的字符串个数最大为4.当检索到CHAR值时,尾部的空格将被删除掉。)
日期:datetime
布尔:bit (Bit称为位数据类型,其数据有两种取值:0和1 ,长度为1位。在输入0以外的其他值时,系统均把它们当1看待。这种数据类型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。)
约束
主键primary key
主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度,键分为两种类型:单字段主键和多字段联合主键。
非空not null
非空约束指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。
惟一unique
唯一性约束要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。
默认default
默认约束指定某列的默认值。如男性同学较多,性别就可以默认为‘男’。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为‘男’
外键foreign key
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的。