zoukankan      html  css  js  c++  java
  • MySQL的数据类型

    1.详细的建表语句

      Create table 表名字(字段 类型(长度),约束条件)

      数据的分类: a)可以更精准的描述数据 b) 节省内存空间

    2.数据的类型?

                  

           整数类型:

        默认是有符号的   设置为无符号的1.create table t (age tinyint unsigned) 2.建表后修改 alter table t modify age tinyint unsigned

      注意:对整数来说,长度不是所占的字节数 是显示数据时的宽度(字符数)

      默认情况下 存储的数值为十进制 小于设置的宽度时,不会填充

      可以加上zerofill 填充

      浮点型:             最大长度

      float   4字节       (255,30)

      double  8字节      (255,30)

      decimal  不固定     (65,30)

      例子:create table t(num float(m,d));m表示总长度 d:表示小数点部分的长度

      26.333的m=5  d=3      

      区别:float 与double的精度不同 小数部分都不准 decimal的小数是准确的 不会有丢失

      Decimal的默认是(10,0)可以看成取整

    字符串类型:

             常用的两种:

             Char        定长字符串

             Varcher 可变长度字符串

            

       注意:字符串中 长度指的是数据的字符长度 与字节没有关系

             Create table t (c1 char, c2 varchar(10))

             在创建时 varchar必须指定长度 char有默认值

             不同点:

        1)  Char类在去数据的时候,就根据长度来获取,不关心真实数据的长度,每次取固定的长度会造成空间的浪费

        2)    Varchar类在去数据时,先获取数据的长度,在根据长度获取真实的数据,解决了存储空间的浪费,但是存取的速度变慢了

      相同点:

               括号中的数字都是表示存储的最大字符长度

      mysql会在存储数据时自动将数据末尾的空格去掉

            如果必须要存空格 需要修改sql_mode  增加 PAD_CHAR_TO_FULL_LENGTH 意思是把空格当作有效数据

       由于自动去除空格这个机制 在使用等于符号 和like时有区别

                select *from t1 where name = "yh     "; 会自动去除空格

                select *from t1 where name like "yh     "; 不会自动去除空格

        like 用于模糊匹配   使用%表示0或任意个任意字符 使用_表示一个任意字符

     日期和 时间

             Year time date datetime timestamp

             Timestamp 特点:可以输入null 会自动输出当前时间 记录被修改时会自动更新时间

             枚举:enum 可以指定一堆字符串的值 在插入数据时,必须选一个

             集合:set 可以指定一堆数据 在插入数据时 必须选一个或多个

    共同点:数据都是字符串

    3.严格模式

      什么是严格模式?

               对插入的数据严格要求,不在范围内的直接报错

      什么是非要个模式?

               不在范围内的数据插入也不报错,只是存储的时候存储的是最大值

      5.6默认的是非严格模式   5.7 默认的是严格模式

      查看SQL模式

               Select @@sql_mode;

               Show variables like ”sql_mode”;

      修改SQL模式

               Set @@sql_mode=’值’; 一般不改

    4. 约束

      约束是一种数据的限制

               比如:unsigned无符号 字符串的长度 浮点的长度

      作用:保护数据的正确性和完整性

                      

            额外的约束

                   语法:创建时指定约束:create table t (字段名 类型(长度) 约束名1 约束名n…)

                            后期修改:alter table t modify 字段名 类型(长度) 约束名1 约束名n…

    NOT NULL :非空约束

    UNIQUE:唯一性约束

    DEFAULT:默认值约束

    PRIMAULT KEY:主键约束:限制该字段 不能为空 并且是唯一的 可以唯一标识一条数据

    FOQREIGN KEY:外键约束:用来指向另一个表的主键

    每一个表都应该有一个主键 需要唯一标识 否则可以可能出现完全相同的两个数据 无法区分

        UNIQUE 不能重复  但是可以为空 这样也不能唯一标识

        UNIQUE NOT NULL 不能为空且唯一  可以唯一标识一条数据  书写顺序无所谓

        UNIQUE NOT NULL 与 主键的区别

            UNIQUE NOT NULL 不能被其他表引用 (不能作为其它表的外键)

            UNIQUE NOT NULL 约束一个表中可以有多个   但是主键只能有一个

      索引:用于加速查询

      InnoDB 中的索引是树形结构

      为了提高查询效率 InnoDB为找一个不为空 且唯一的字段作为主键

       如果表中不存在这样的字段 会自动帮你建一个隐藏主键字段  但是无法提升查询效率

       只要是使用innoDB 就应该为每个表指定一个非空 且唯一的字段

          InnoDB阻止数据时 首先使用主键  如果没有主键 找一个非空且唯一  如果也没有 建一个隐藏字段

      多字段联合主键: 不常用

              学生表  stu_id course_id 做为联合主键

              1 1 已有数据

              1 2 可以插入

              2 1 可以插入

              1 1 不能插入

            只有当两个字段都重复才算重复

        当一个表中 由于业务需求没有一个非空且唯一的字段时 我们可以建一个新的字段专门作为主键

        管理主键的值挺麻烦的  你得记录上一次的主键值

        mysql可以帮你自动管理主键  auto_increment 自动增长

        auto_increment 只能用于整型字段 并且该字段必须具备索引

        所以 通常 主键都会加上auto_increment

        手动修改自动增长计数

        alter table 表名 auto_increment  新的值;

        注意:如果新的值小于当前的最大值 是无效的

        通常建一个表就要建一个主键  主键的类型通常是整型

    5. 存储引擎

      发动机

           汽油机

           柴油机 柴油价格便宜 动力还强  噪音大  不完全燃烧

         电机 加速快  噪音小  续航问题

    一个产品或服务的核心部分称之为引擎

            mysql的核心功能存取数据

            mysql存储引擎就是负责存取数据那一段代码

  • 相关阅读:
    Sharepoint 2010 无法上传文件的问题
    复杂领域的Cynefin模型和Stacey模型
    SCOM Visio监控 与sharepoint 2010 整合
    HillStone上网认证客户端
    jQuery插件手把手教会(二)
    jQuery插件手把手教会(一)
    jQuery+css+div--一些细节详解
    jQuery+css+div一些值得注意的常用语句
    找不到对应的webservice配置参数[ProcessService]
    NC保存报dirty解决方法
  • 原文地址:https://www.cnblogs.com/zhouhai007/p/9991188.html
Copyright © 2011-2022 走看看