数据库简介
文档型数据库:sqlite,是一个文件,通过对文件的复制完成对数据库的复制
服务型数据库:mysql、postgre,数据存储在一个物理文件中,需要终端使用tcp/ip协议链接,进行读写操作
E-R模型
Entry 实体
Relationship 关系
一个实体转换为数据库中的一个表,比如学生表,表中再存储关系
一对一、一对多、多对多
三范式
1NF:列不可拆分
2NF:唯一标识
3NF:引用主键 — 别的表要引用这张表,引用主键即可
数据完整性
字段类型
数字:int,decimal(m, n) m表示位数,n表示小数位数 (float,double也有,不常用)
字符串:char,varchar,text
char(8) 存储固定8个字符,如果不够,会补充空格,多了会截断
varchar(8) 存几个字符就是几个字符,多了截断
字符编码:gb2312 简体字
utf8 国际通用
日期:datetime
布尔:bit(3) 0, 1
约束
主键约束 primary key
非空约束 not null
唯一 unique
默认 default
外键 foreign key
逻辑删除
重要数据并不想物理删除,而是设计一个isDelete列,类型设为bit
也可以叫DeleteFlag、DeleteStatus
数据库基本操作
mysql -h ip -u root -p
create database _databaseName charset=utf8;
drop database _databasename;
show databases;
select database();
show tables;
create table student (
-> id int auto_increment primary key not null,
-> name varchar(10) not null,
-> gender bit default 1,
-> birthday datetime);
desc student;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| gender | bit(1) | YES | | b'1' | |
| birthday | datetime | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
alter table student add isDelete bit default 0;
change
drop table _tableName; 物理删除
show create table 'student'; -- 建表语句