zoukankan      html  css  js  c++  java
  • 20141230 mysql数值类型和列属性二

    枚举字符串

    枚举字符串指的是在定义之初就确定要存放的字符串有哪些,然后在数据进行存储的时候就只能存储已经定义过的字符串,只能使用任意的一个字符串。(单选框)

    语法:enum

    字段名 enum(字符串1,字符串2,…); 枚举采用最多2个字节保存数据,最多能存65535个数据

    wps5EBF.tmp

    wps5EC0.tmp

    枚举的意义

    1. 规范数据:没有进行维护的数据不能插入

    2. 节省空间:实际存储的数据是数字

    虽然SQL是一种强类型语言,但是SQL能够自动转换数据类型(与php一样)

    select有一个特点:后面可以跟任意表达式

    wps5EC1.tmp

    证明枚举存储的是数字

    wps5ED2.tmp

    枚举的字符串与数值的关系

    wps5ED3.tmp

    因为枚举内部真实存储的数值,因此枚举可以通过数值进行数据插入。

    wps5EE3.tmp

    枚举存储原理

    wps5EE4.tmp

    枚举的应用

    1. 固定的不变的,但是具有多个值的数据可以使用枚举

    集合字符串

    集合字符串与枚举字符串大致一致,但是集合数据指的是可以选中定义的值中间的部分数据或者全部数据。多选

    语法:set

    字段名 set(字符串1,字符串2,…);

    wps5EF5.tmp

    集合中的数据,每一个数据都是占用一个字节中的一个位来进行表示,然后保存是数值却是所有的位共同转换成十进制显示

    wps5EF6.tmp

    数据在集合中占位的原理

    wps5EF7.tmp

    换算的时候需要将二进制颠倒过来,然后进行换算成十进制。

    wps5F08.tmp

    set最多占用8个字节存储数据:8个字节共64位,最多集合只能存放64个元素,但是组合却有2^64之多。

    集合的意义

    1. 规范了数据,只能存储定义过的数据

    2. 节省了空间

    虽然集合和枚举都能够为数据库节省空间,并且能够规范数据,但是作为php程序员,增加了php维护数据的难度,所以php程序员基本上不使用这两种数据类型。

    时间日期类型

    SQL中用来存储时间或者日期的数据类型

    类型

    显示格式

    取值

    存储空间

    零值

    DATETIME

    YYYY-MM-DD HH:MM:SS

    '1000-01-01 00:00:00'到'9999-12-31 23:59:59'

    8

    0000-00-00 00:00:00

    TIMESTAMP

    YYYY-MM-DD HH:MM:SS

    是‘1970-01-01 00:00:00’到2038-01-19 03:14:07

    4

    0000-00-00 00:00:00

    DATE

    YYYY-MM-DD

    '1000-01-01'到'9999-12-31

    3

    0000-00-00

    TIME

    HH:MM:SS

    -838:59:59'到'838:59:59'

    3

    00:00:00

    YEAR

    YYYY

    1901到2155

    1

    0000

    datetime:日期时间,8个字节存储

    timestamp:时间戳,使用标准整型存储,不是整型数据,而是与datetime格式一样的数据

    date:datetime的日期部分

    time:datetime的时间部分,time表示的不是时间点,是时间段

    year:年份,1个字节存储,只能表示255年

    wps5F09.tmp

    时间格式:表示时间段

    wps5F19.tmp

    作为php程序员,基本上不适用SQL的任何时间格式,都是使用php的时间戳

    在mysql中,任意一条记录的长度不能超过65535个字节。

    varchar的理论数据长度是65535个字符

    GBK/UTF8编码最大的varchar长度

    wps5F1A.tmp

    在SQL中,所有的字段只要有一个字段允许为空,那么整条记录就需要留出一个字节用来保存null,如果有多个字段为空,也只需要一个字节。

    wps5F1B.tmp

    text文本类型不占用记录的总长度,是额外开辟空间的存储数据,但是text字段本身要占据一定的数据长度(10个字节)

    wps5F2C.tmp

    列属性

    除了数据类型对列进行数据规范之外,还有一些额外的限制对字段进行约束。

    列属性:NULL/not null,default,primary key,auto_increment,comment,unique key

    NULL

    字段是否允许为空,不允许为空就是not null。

    语法:字段名 数据类型 NULL/NOT NULL,默认的是null

    wps5F2D.tmp

    默认值

    关键字default,在定义结构的时候,如果字段没有被指定数据,那么系统会使用默认的数据来进行数据填充。

    wps5F3D.tmp

    默认值的使用

    1. 要使用默认值,不对该字段进行数据插入(字段列表不能出现对应的字段)

    wps5F3E.tmp

    2. 要使用默认值,可以在数据值插入的位置使用default关键字

    wps5F3F.tmp

    主键

    主要的键,用主键修饰的字段,不能为null,也不能出现任意数据的重复。能够唯一的标识出一条记录。一张表只能有一个主键。

    添加主键:

    1. 在要做主键的字段之后添加primary key关键字

    wps5F50.tmp

    2. 在所有的字段之后,指定主键,可以指定复合主键(多字段主键)

    语法:primary key(字段列表)

    wps5F51.tmp

    3. 假设表已经存在了,但是需要增加主键,可以通过修改表的结构来增加主键:必须实现保证该字段的数据没有重复。

    a) 修改字段,给字段增加primary key属性

    b) 可以直接通过修改表结构增加主键(复合主键)

    wps5F62.tmp

    主要的效果:具有唯一性,不能插入重复的数据

    wps5F63.tmp

    主键不能修改,但是可以删除

    语法:修改表结构

    alter table 表名 drop primary key;

    wps5F73.tmp

    自增长

    auto_increment,当某个字段有了自增长属性之后,如果改字段在进行数据新增的时候,没有指定数据,那么系统会自动在原有的基础上自动+1,说明字段类型必须是整型。

    自动增长通常是搭配主键使用

    wps5F74.tmp

    自增长的应用

    1. 不为当前字段赋值

    wps5F75.tmp

    2. 可以为自动增长字段使用null/default关键字显示的调用

    wps5F86.tmp

    自动增长之所以能够填充对应的数据,是因为在表的选项中已经指定好对应的值了

    wps5F87.tmp

    修改自动增长:修改自动增长下一个子增长值,但是修改的值只能比当前已有的数据的值要大,而不能小。

    alter table 表名 auto_increment = 值

    wps5F97.tmp

    效果

    wps5F98.tmp

    删除自增长

    alter table 表名 modify 字段 不再增加auto_increment属性;

    wps5FA9.tmp

    auto_increment往往搭配主键:删除主键

    wps5FAA.tmp

    想要删除有自动增长的主键,必须先删除自动增长再删除主键。

    自增长控制:初始值和步长

    show variables like ‘auto_increment%’;

    wps5FAB.tmp

    注意:一张表只能有一个自增长。

    修改步长

    set auto_increment_increment = 2;

    wps5FBC.tmp

    效果

    wps5FBD.tmp

    这种修改是针对当前用户当前连接有效(会话级别)

    作业:

    1. 制作一个教学管理系统的数据库:学生,班级,老师等,根据不同的数据的需求确定对应的属性和数据类型

    2. 制作小网站:教学管理系统

    a) 登录验证,查看所有的学生信息

    b) 老师能够查看所有的信息

  • 相关阅读:
    MySQL Case When 用法
    Delphi磁性窗口
    一个灵巧的Delphi多播实事件现方案.
    Delphi bpl 插件框架
    Win7下超级管理员创建普通权限任务
    Delphi 插件(Plugins)创建、调试与使用应用程序扩展
    Dll中导出类Delphi实战
    让你的程序支持插件
    构造一个通用的回调Thunk.(把回调函数指向对象的方法的办法)
    打造类.NET带垃圾回收功能的Delphi版GDIPlus
  • 原文地址:https://www.cnblogs.com/lifushan/p/6430434.html
Copyright © 2011-2022 走看看