SQL类型及约束

常见数据类型

数值型

⑴.整型
    ①.分类:
        Tinyint(1)、Smallint(2)、Mediumint(3)、Int(4)、integer(4)、Bigint(8)
    ②.特点:
        ⒈默认是有符号的,如果要无符号后边添加UNSIGNED。
        ⒉如果插入的值超出范围,发出警告,插入临界值。
        ⒊有默认长度int(11),无符号int(10)。
        ⒋自己设置长度和范围无关(范围只和类型有关),如果自己设置长度后,位数不够会用0填充(必须搭配zerofill,默认会变为无符号)。
⑵.小数
   ①.分类
        浮点数: float(M,D)4、double(M,D)8
        定点数: DEC(M,D)
    ②.特点
        ⒈M:整数部位和小数部位总位数,D:小数位数。
        ⒉如果超出范围插入临界值。
        ⒊M和D都可以省略,但定点型(M,D)默认为(10,0),float和double随插入精度决定。

字符型

⑴.较长的文本
    text、blob(存二进制)。
⑵.较短的文本
    char(M)、 varchar(M)、
    enum('a','b','c')列表中一个不区分大小写、
    set('a','b','c')中多个,insert into 表 values ('a,b')不区分大小写。
    特点:
         M:最大字符数
         char是固定长度字符,M是多少默认开多大空间,可省略(M)默认为1(较耗费空间,但效率会高点)。
         varchar可变长度字符,写多少字符开多大空间不可省略(M)。

日期型

⑴.分类
date(只有日期)、time(只有时间)、year(只有年)、 
datetime(时间+日期)8   1000-9999
timestamp(日期+时间,受时区和版本影响)4 1970-2038

约束

含义:
为了限制表中数据,保证表中数据一致性(准确和可靠)。
分类:六大约束
①.NOT NULL 非空约束(保证该字段值不能为空)。
②.DEFAULT 默认约束(保证字段有默认值)。
③.PRIMARY KEY 主键约束(保证字段值的唯一性且非空)。
④.UNIQUE 唯一 (保证字段值唯一,可以为空)。
⑤.CHECK 检查约束(MySQL不支持)。
⑥.FOREIGN KEY 外键约束(限制两张表关系,
保证该表字段值来自于主表关联列的值,
在从表添加外键约束,用来引用主表中的列)。
添加约束时机
①.创建表时:
②.修改表时:
约束添加分类
①.列级约束:六大约束语法都支持,但外键约束没有效果。
    字段名 类型 列级约束;
②.表级约束:除非空约束和默认约束其它都支持。
    CREATE TABLE 表名(
            字段名 类型 列级约束,
            字段名 类型 列级约束,
            表级约束
    );
标识列(自增长列)
①.不用手动插入值,系统提供默认的序列值。
②.示例:字段名 类型 auto_increment
③.特点:
    ⒈标识列必须和KEY搭配(主键或唯一)。
    ⒉一个表中只能有一个标识列。
    ⒊标识列类型只能是数值型。
    ⒋标识列可通过:SET auto_increment_increment 来设置步长。
细节问题
①.主键和唯一区别:
    ⒈唯一性:主键和唯一都能保证唯一性。
    ⒉非空:主键不能为空,唯一可以为空。
    ⒊个数:主键至多有一个,唯一可以有多个。
    ⒋组合:组合主键:(字段名,字段名),组合唯一类似。
                    插入值时只要两条数据字段值不重复即可。
                    insert into 表 values (字段值1,字段值2);
                    insert into 表 values (字段值1,字段值3);
 ②.外键特点:
     ⒈在从表设置外键。
     ⒉从表外键列的类型和主表关联列类型一致或兼容名称无所谓。
     ⒊主表关联列必须是KEY(主键或唯一)。
     ⒋插入数据先插入主表数据,在插入从表数据。
     ⒌删除数据先删除从表数据,在删除主表数据。
 ③.修改表时添加约束:
      alter table 表 modify column 字段名 类型 约束;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值