MJingv / jehol-person-blog

Jehol's Blog 🙋 (hexo+react)
https://mjingv.github.io/JeholBlog/
0 stars 1 forks source link

DB哈哈哈 #31

Open MJingv opened 5 years ago

MJingv commented 5 years ago

sql

select

MJingv commented 5 years ago

关系模型

主键

联合主键

外键


多对多

索引

查询数据

SELECT id,  name,AVG(score) average FROM classes, students WHERE score >= 80 OR gender = 'M' ORDER BY score LIMIT 3 OFFSET 0 INNER JOIN classes c  ON s.class_id = c.id;                                                                                                                          
MJingv commented 5 years ago

关系型数据库 vs 非关系型数据库

/ SQL NoSQL
存储方式 结构 Json键值对(矩阵、图)
模式 sql模式(主键、索引、各种限制) 无模式(随时写入)
规范化 存id关联,少冗余 会存用户所有信息,查询快
事务 替代方案
语法 sql 各自语法
价格 收费 免费
优势 复杂查询、事务 性能、数据无耦合,可拓展性优秀
MJingv commented 5 years ago

修改数据

insert

INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);

update

UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;

delete

DELETE FROM <表名> WHERE ...;

事务

Isolation Level 脏读(Dirty Read) 不可重复读(Non Repeatable Read) 幻读(Phantom Read)
Read Uncommitted Yes Yes Yes
Read Committed - Yes Yes
Repeatable Read - - Yes
Serializable - - -
MJingv commented 5 years ago

mysql数据类型

数字类型

日期和时间

字符串类型

问题

  1. 数据库自动补零0⃣️,不会影响输出结果
MJingv commented 5 years ago

stram

四种流类型

事件

管道流

链式流

MJingv commented 5 years ago

超键(super key):

在关系中能唯一标识元组的属性集称为关系模式的超键

候选键(candidate key):

不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了!

主键(primary key):

用户选作元组标识的一个候选键程序主键

外键(foreign key):

如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键

第一范式(1NF):属性不可分

1NF是对属性的原子性约束,要求属性具有原子性,不可再分解

第二范式(2NF):符合1NF,并且非主属性完全依赖于码。

2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性,更通俗说有主键ID

第三范式(3NF):符合2NF,并且,消除传递依赖。

3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余

BCNF:符合3NF,并且,主属性不依赖于主属性

若关系模式属于第二范式,且每个属性都不传递依赖于键码,则R属于BC范式

第四范式:要求把同一表内的多对多关系删除。

第五范式:从最终结构重新建立原始结构。

MJingv commented 5 years ago

数据库表连接

关系 && 连接

sql

SELECT * FROM A  
INNER JOIN B ON A.book_id=B.book_id;

SELECT * FROM A  
LEFT JOIN B ON A.book_id=B.book_id;

SELECT * FROM A  
RIGHT JOIN B ON A.book_id=B.book_id;

SELECT * FROM A  
FULL JOIN B ON A.book_id=B.book_id;