读书笔记——PHP and MySQL Web Development(4th)—MySQL部分

1. 模式:  数据库整套表格的完整设计(不包括数据),可以使用实体关系图描述,或者文本格式表示。

文本格式表示:  Customers( CustomerID, Name, City, Address)

Orders ( OrderID, CustomerID, Amount, Date )

下划线表示主键,斜体表示外键。

 

2. 数据库设计:

避免保存冗余数据(1.首先是空间浪费  2.多个地方保存同一个数据,会导致数据更新不一致,包含修改、插入、删除的不规则)。

使用原子列,每一行的每个属性只存一个数据。

避免多个空属性的设计

 

数据库的表类型有两种:  一种是描述现实世界对象的简单表(可能也包含其他简单对象的键,他们之间有一对一或者一对多的关系)

一种是现实世界的多对多关系的关联表。

 

3. 特殊类型

mysql中获取char类型与存储varchar数据的时候,将过滤多余空格。  当然这里说的空格都是后边的空格,前边的不会去掉。

我测试了一下  如果varchar类型的列存入'hello   ',注意后边有三个空格,存到数据库中的时候点击查看依然是三个空格,但是我用where col = 'hello'依然可以匹配,后边加上空格同样匹配,不管你加了几个空格。

对于char的类型,存储的时候会自动去掉多余的空格,查询的是偶和varchar类型一样,无论后边有没有空格,有多少个空格,都依然可以匹配。


对于int型   select 12=00012 返回1,加0和不加0一样。

 

text用于长文本,而blob用于大二进制数据,称为大二进制对象。  text区分大小写,而blob不区分。

 

set类型和enum类型。 set类型可以来自集合中的一个值,或者多个值,或者null,这个集合最大包含64个元素。

enum类型可以来自集合中的一个值,或者null。集合最大可以有65535个元素。

 

4. insert

insert语句还可以这样用    insert into tablea set name='myname', address='locatoin a ';

insert 后边可以添加low priority 或者delayed ,第一种意味着当有其他非读操作时,系统必须等待并稍后插入。 第二种意味着插入的数据将被缓存。当服务器繁忙时,我们可以继续运行其他查询而非等待这个insert 的完成。

 

执行更新或者删除操作时,可以使用limit限制受影响的行,也可以是order by后的limit。

 

你可能感兴趣的:(Web,数据库,mysql,PHP,insert)