数据库存储引擎,创建表的完整语句以及数据类型

一:数据库存储和引擎

              引擎:指的是一个功能的核心部分,而数据库的核心就是存储数据,所以涉及到存储数据的代码,

     称之为存储引擎。

              根据不同的需求,需求场景的不同,也有着不同的引擎分类:

     如:innodb,csv,blackhole,memory  ……

              其中innodb是默认的引擎,因为它是永久存储,并且支持事务,行锁,外键。

 

二:创建表的完整语          

             格式:create table 表名 (字段名称 数据类型[(长度) 约束条件],

                                                       字段名称 数据类型[(长度) 约束条件])
             必须的:字段名称,数据类型,表名
                           注意:字段名称,类名,库名都不能是mysql的关键字
             可选的:长度,约束条件

             其中长度用于设置数据的长度,约束指的是为数据设置的规范。

             如果添加的数据超过了指定的长度范围,超出范围的部分就会被丢弃。

 

三:数据类型

            1:为什么要将数据分类?

                    ①:为了描述事物更加准确
                    ②:描述起来更方便
                    ③:节省内存空间

            2:mysql里支持的数据类型

                    ①:整型

                    ②:浮点型

                    ③:字符串型

                    ④:时间日期型

                    ⑤:集合和枚举

           ①:整型

                        分类:tinyint     smallint     mediumint     int     bigint

                    字节数:   1              2                 3              4         8

                    默认情况下整型是有符号的,需要用一个二进制位存储符号,如果要改成无符号的,可以通过

                    给整型加上约束unsigned来表示无符号。如果数据超出范围,就尽可能保存最大的。

                    以上特性的出现是因为mysql处于非严格模式,

                            如何查看当前模式: show variables like "sql_mode";

                            如何修改为严格模式  set global sql_mode = "STRICT_TRANS_TABLES";

                    在严格模式下,如果值超出范围就会直接报错,在一些版本中默认就是严格模式。

                    在我们的正常开发中,我们应该先判断数据的正确性,没有问题再发给数据库。

                    长度限制对于整型的意义:这里长度指的不是存储容量限制,而是显示的宽度,

                           如果数据超过了显示宽度,那就会有几个显示几个。如果不足,则补全到指定长度,

                           可以通过zerofill在创建表时约束,用0来补全。 

           ②:浮点型(小数型)

                        分类:float     double     decimal

                     字节数: 4            8           不确定(手动指定)

                     相同点:小数部分最大长度都是30              

                                   float和double的最大长度为255

                     不同点:decimal的整体最大长度65

                                   精度不同:double 比 float 精度高,decimal 是准确的,不会丢失精度。

                     给浮点型设置宽度限制:

                                  语法:

                                          float(m,d)
                                          double(m,d)
                                          decimal(m,d)

                                          其中 m 表示这个浮点数整体的长度,d 表示小数部分的长度。

                                                 例:float(5,3)       最大值: 99.999

           ③:字符串型

                        分类:char     定长字符     varchar     变长字符

                            char类型的长度是固定的,无论你存储的数据有多长,占用的容量都一样。

                            例:char(3)  存储的数据为 "a"   在硬盘保存的数据还是占3字符长度,实际保存的是"a  "  

                            varchar类型的长度是可变的,存储的数据有多长就占用多长。

                            例:varchar(3)   存储的数据为 "a"    在硬盘保存的数据是占1字符长度,实际保存的是"a"

                       总结:

                            char     存取效率高,但是浪费存储空间。

                            varchar     存取效率低于char,但是节省存储空间。

           ④:时间日期型

                       分类:

                             time     时分秒     HH:MM:SS

                             year     年份

                             date     日期        年月日

                             datetime     日期加时间     年月日  时分秒

                             timestamp     时间戳

                       相同点:时间的存取都是通过字符串类型,都可以使用now()函数来插入当前时间。

           ⑤:集合和枚举类型

                    a:枚举:用于描述一个已知范围的数据,例如性别:只有男,女或其他

                                    通过使用关键字 enum 来定义枚举

                                    例:enum("male","female","other")

                         总结:枚举中的数据只能是字符串类型,添加的数据只能是已经出现在枚举中的值,而且

                                   值只能是其中的一个,同时可以使用枚举值的序号来插入值,从1开始。特点:多选一

                    b:集合:用于描述一堆数据 ,比如:兴趣爱好

                                    通过使用关键字 set 来定义集合

                                    例:set("watch movie","listen music","play game")

                         总结:集合中的数据只能是字符串类型,添加的数据只能是已经出现在集合中的值,而且

                                   值可以是其中的任意几个,同时可以使用集合的序号来插入值,从1开始,但是只能给一个

                                   序号。特点:多选多

                   

                             

 

 

 

 

 

 

 

       

posted @ 2018-09-12 19:22  &nbsp  阅读(663)  评论(0编辑  收藏  举报