MySQL 理论

(1)Web乱码问题
    动态网站由三部分构成:浏览器,Apache服务器(PHP),数据库服务器
    解决方案:三码合一

(2)整数型
    Tinyint:一个字节 ,127/255;
    Smallint:2个字节,32767/65536;
    Mediumint:3个字节,8388607/16777215;
    Int :2147483647/4294967295
    Bigint:8个字节
     zerofill 0填充

(3)int(4) 如果不够,4位,前面用0填充,保证数据格式

(4)校对集问题
      校对集:数据的比较方式
      校对集有三种格式
      _bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写
      _cs:case sensitive,大小写敏感,区分大小写
      _ci;case insensitice,不区分大小写
(5) show collation;
    只有比较的时候才会生效
    必须在没有数据前声明好,有数据后修改无效

(6)网站是以PHP未实现的主要操作对象:PHP中有非常强大的时间日期处理函数:date,只需要一个时间戳就可以转换成任意类型的时间;以PHP为主的时候,都是在数据库使用时间戳(整型)来存储时间;

一个字符可能占用多个字节,这由编码和存放的字符决定。比如UTF8(一种变长的unicode编码)中,一般一个汉字占据3个字节,一个英文字母占据一个字节

(7)字符串类型
    1.定长字符串: char; 磁盘在定义结构的时候,就已经确定了最终数据的存储长度
        char(L):L代表可以存储的长度,单位为字符
    2.变长字符串: varchar; 在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体的数据来确定
      varchar(L): L 表示字符长度 一般会多存1到2个字节来确定存储的实际长度
    3.如果数据量非常大,超过255 个字符就会使用文本字符串
        Text:存储文字
        Blob:存储二进制数据(一般不用)
(8)枚举字符串
      枚举:enum,事先将所有可能出现的结果,都设计好,实际上存储的数据必须是规定好的数据
     (1.规范数据格式,2.节省存储空间)
(9)集合字符串
    集合跟枚举很类似:实际存储的是数值,而不是字符串

(10)MySQL记录中:如果有任何一个字段允许为空,那么系统会自动从整个记录中保留一个字节来存储NULL(若想释放NULL所占用的字节,必须保证所有的字段都不允许为空

(11)MySQL中text文本字符串,不占用记录长度:额外存储。但是text文本字符串也是属于记录的一部分:一定需要占据记录中的部分长度:10 个字节;(保存数据的地址及长度)

(12)列属性:
     真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。
     NULL(默认的,应该尽可能保证数据不为空)
     NOT NULL
     unique key
     auto_increment

(13)默认值:Default

一对多:一张表最后那个有一条记录可以对应另外一张表中的多条记录,另外一张表的一条记录只能对应第一张表的一条记录

(14)关系
    将实体与实体的关系反映到数据表的设计上
    一对一:一张表的一条记录一定只能与另一张表的一条记录进行对应
    一对多:一张表中有一条记录可以对应另一张表的多条记录
    多对多:一张A表中的一条记录能够对应B表中的多条记录,同时B表中的一条记录也对应A表中的多条记录(新增一张表,维护两个表的关系)

范式:normal format 是为了解决数据的存储与优化的问题,为了减少数据的冗长。若要满足下一层,必须满足上一层,并不是强制规范
    1NF(第一范式):要求字段的数据具有原子性:不可再分

    2NF(第二范式):数据表的设计过程中,有复合主键(多字段主键),且表中有字段并不是由整个主键来确定,而是依赖主键中的某个字段:存在字段依赖主键的部分的问题。
    3NF(第三范式):解决传递依赖的问题

(15)rand() 取一个0-1之间的一个随机数

猜你喜欢

转载自blog.csdn.net/error311/article/details/84196443