MySQL原子性数据

来源:互联网 发布:w3school node 编辑:程序博客网 时间:2024/06/06 02:54

当说明一个数据具有原子性的时候,我们考虑生物化学中,是不是就是一块很小并且不应该被分割的信息?
在数据中,原子性就表示这个数据已经被分割至最小块,已经不能或不应该再被分割。(我认为这里应该指的是恰好分割出来我需要的数据,既不多,也不能少)

原子性数据的规则:
(1)具有原子性数据的列中不会有多个类型相同的值。
比如两个人的兴趣爱好中都包含dancing,那么根据dancing 查找数据的时候就会得到两个人的信息,这样的数据就不是原子性数据了,
比如这里的interests和seeking列
这里写图片描述
(2)具有原子性数据的表中不会有多个存储同类型的列
比如下面这个图,他有多个成分列,所以不具有原子性
这里写图片描述

让数据具有原子性是创建一个规范化表的第一步(也是让数据表规范了一半)。
优点:
(1)没有重复数据,减小数据库的大小
(2)查找的数据较少,查询更快速
第二步:
完全的规范化表示我们处于第一范式的状态,INF
(1)每个数据必须包含具有原子性的值
(2)每个数据行必须有独一无二的识别项,人称主键(Primary Key)
那么了解了主键后,他有什么规则呢?如何实现主键?
(1)他是表中的某个列,可以让每一条记录成为唯一的。
(2)主键不可以为NULL
(3)插入新记录时必须指定主键值
(4)必须简洁
(5)不可修改
在实现主键之前,我们先看一下如何获取一个没有内容的表。
如果我们想看的是CREATE代码,而不是表中的字段,用下面的语句

SHOW CREATE_TABLE my_contacts;

这个语句将返回可以重建表但没有数据的CREATE TABLE语句。
这样就可以随时查看表的可能创建方式了。
这里写图片描述
SHOW CREATE TABLE 中的反撇号是做什么用的————反撇号的存在是因为有时RDBMS会无法分辨出列名。如果在列名前后加上反撇号就能以SQL保留字作为列名。比如你想把某列命名为select,

select varchar(50)无法实现'select' varchar(50)可以实现

上述表中的AUTO_INCREMENT从1开始每次插入新记录时逐次递增1。

如何为现有的表添加主键?我们接下来会用到ALTER语句。

ALTER TABLE my_contactsADD COLUMN contact_id INT NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY(contact_id);

谈到ALTER,我们说如果需要改变数据库,那用ALTER会很方便。
如果想加入一列,用ALTER TABLE 可以轻松搞定。
上面的程序还提到了,FIRST,AFTER,其实还有BEFORE your_column和LAST,SECOND THIRD等等
举个栗子:

ALTER TABLE my_contactsADD COLUMN phone VARCHAR(10)AFTER first_name;

关键字AFTER紧跟在新添加的列的名称后面,本处的语法会把phone列放在first_name列后。

0 0
原创粉丝点击