zoukankan      html  css  js  c++  java
  • MySql-常用数据类型与约束

    数据类型

    数字类型

    1.tinyint: 1个字节,有符号:-128~127,无符号:0~255
    2.smallint: 2个字节
    3.mediumint: 3个字节
    4.int: 4个字节
    5.bigint: 8个字节
    6.float:最大总位数m 255,小数位d 30
    7.double:最大总位数m 255,小数位d 30
    8.decimal:最大总位数m 65,小数位d 30。精确度最高
    
    # int(n):n并不代表能够存储的最大长度,只有在定义zerofill时有用,不满足长度就在前面补零
    create table t(num int(5) zerofill unsigned not null);
    insert into t values(123456),(123);
    +--------+
    | num    |
    +--------+
    | 123456 |
    |  00123 |
    +--------+
    

    字符类型

    1.char(n):n表示能够存储的字符长度,不加长度时默认为1,最大可存255个字符
    2.varchar(n):n表示能够存储的字符长度,必须要加长度,能存的长度<21845个字符
    3. text:可以用来存在大数量的字符
    4.enum('man','woman','other')  枚举,多选一
    5.set('man','woman','other')  集合,可以选多个
    
    create table char_test(name char(3));
    insert into char_test values('123'),('12'),('1234'),('你是谁'),('你是谁呀'),('你');  # 在严格模式下会提示Data too long 错误,
    insert into char_test values('123'),('12'),('你是谁'),('你');  # 插入值验证是字节长度还是字符长度。可以插入3个中文字符。所以是指存储的字符长度
    +-----------+
    | name      |
    +-----------+
    | 123       |
    | 12        |
    | 你是谁    |
    | 你        |
    +-----------+
    select length(name) from char_test;  # 查看字节长度
    select char_length(name) from char_test;  # 查看字符长度
    
    
    create table varchar_test(name varchar(5));
    insert into varchar_test value("你是谁的谁");
    
    char存取速度快,varchar会用1字节来存数据的长度,超过255就用2个字节来存长度,再存数据。所以varchar存取速度慢
    
    char存的时候会存定长字符长度,但是取得时候会很不要脸的把末尾的空格去掉。可以使用sql_mode=PAD_CHAR_TO_FILL_LENGTH让它现出原形长度,在查询的时候用='李杰'可以查到,但是like '李杰'查询不到,通常不这么做
    

    日期时间类型

    日期类型
    1.year:年
    2.date:日期
    3.time:时间
    4.datetime:占8字节
    5.timestamp:占4字节
    
    show variables like 'sql_mode';  
    set sql_mode = strict_trans_tables;  #设置严格模式
    set sql_mode = ansi;  # 设置非严格模式
    

    约束

    not null: 非空
    ---------------------------------------------------------------------------
    
    default:默认值
    ---------------------------------------------------------------------------
    
    unique key:唯一约束
    	* id int unique 或者unique(id): 单一唯一
    	* unique(name,age): 联合唯一,只有两字段都相同时为重复
    ---------------------------------------------------------------------------
    	
    primary key: 主键约束,对于innodb存储引擎来说,一张表内必须有一个主键
    	* id int primary key或者primary key(id): 单列主键
    	* primary key(name,age): 复合主键,只有两字段都相同时为重复
    	
    auto_increment: 自动增长:可以自定义增长,与primary key搭配使用
    	* show variables like 'auto_incr%';
    	+--------------------------+-------+
    	| auto_increment_increment | 1     |  # 步长
    	| auto_increment_offset    | 1     |  # 起始偏移量位置,必须小于等于步长
    	+--------------------------+-------+
    	set global auto_increment_increment = 5;  # 全局改
    	set session auto_increment_increment = 3;  # 会话层改,下次回到默认值
    ---------------------------------------------------------------------------
    
    foreign key(id) references biao(id)  # 外键约束,建立表之间的关系
    on delete cascade  # 级联删除,删除主表时,从表跟着删除
    on update cascade  # 级联更新,更新主表时,从表跟着更新
    # 建立表
    	* 先建被关联的表,并且保证被关联的字段唯一
    	* 再建关联的表:从表
    # 插入数据
    	* 先往被关联的表插入记录
    	* 再往关联表插入记录
    # 删除、更新数据
    	* 先删除、更新先操作关联表
    	* 再操作被关联的表
    	* 用了on delete|update cascade就可以先操作被关联的主表
    
  • 相关阅读:
    001-Go JSON处理
    cpu高占用,线程堆栈,jstack,pstack,jmap, kill -3 pid,java(weblogic,tomcat)
    jQuery插入,复制、替换和删除节点
    jquery 控制css样式
    10分钟掌握XML、JSON及其解析
    阻止跳转的四种方式,你知道吗?
    jQuery事件绑定和委托
    响应式Web设计的9项基本原则
    网友写的验证码生成方案,可防止绝大多数机械识别。
    7个高性能JavaScript代码高亮插件
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11253624.html
Copyright © 2011-2022 走看看