zoukankan      html  css  js  c++  java
  • 数据库——存储引擎、字段类型、约束条件

    数据库——存储引擎、字段类型、约束条件

    存储引擎

    存储引擎是根据不同的机制处理不同的数据

    查看MySQL中所有引擎

    cmd>>>:show engines;
    
    	- myisam:5.5以前老的版本使用的存储引擎
    	- blackhole(黑洞引擎):类似于队列中的数据,存进去消失
    	- innodb:默认使用的存储引擎
    		- 支持事务
    		- 行锁
    		- 外键
    	- memory:通电数据存在,断电丢失
    	
    	create table t1(id int)engine=innodb;
    	create table t2(id int)engine=myisam;
    	create table t3(id int)engine=blackhole;
    	create table t4(id int)engine=memory;
    	- 插入数据验证引擎的作用:
    		insert into t1 values(1);
    		insert into t2 values(2);
    		insert into t3 values(3);
    		insert into t4 values(4);
    

    创建表完整的语法

    约束条件:可有可无

    宽度:限制某些数据类型的存储大小

    create table 表名(
    	字段名1 字段类型(宽度) 约束条件,
        字段名2 字段类型(宽度) 约束条件
    );
    

    注意:

    1、创建表的字段名不能重复

    2、最后一个字段不能再末尾加 , 号

    3、字段名必须要有字段类型与宽度

    字段类型

    ​ 1)确定表结构

    ​ 2)字段与字段类型

    - 整型
        - tinyint: 默认范围 -128, 127
            create table t5(
                id tinyint,
                name varchar(16)
            );
            5.6.40
            insert into t5 values(-128, 'tank'), (127, 'jason');
            insert into t5 values(-129, 'tank');
            insert into t5 values(128, 'jason');
            insert into t5 values(12, 'sean');
    
        - int: 默认范围是(-2147483648, 2147483647)
    
            应用场景: id号、年龄...
    
            create table t6(
                id int
            );
    
            # int 默认宽度11---> 默认展示宽度
            insert into t6 values(-2147483649);
            insert into t6 values(2147483648);
            insert into t6 values(100);
    
            create table t7(
                id int(3)
            );
    
            # 若插入超过设定宽度,则正常显示
            insert into t7 values(123456);
    
            # 若插入不足够4位,则以空格补全
            insert into t7 values(1);
    
        - bigint
    - 浮点型:
    
        应用场景: 工资、身高、体重...
    
        - float (默认5位)
        - double(默认16位)
        - decimal(默认没有小数)
    
        # 范围255是最大长度(包括.小数), 30代表是小数的位数
        create table t8(x float(255, 30));
        create table t9(x double(255, 30));
        create table t10(x decimal(65, 30));
    
        # 插入数据
        # 三种浮点型: 区别在于精确度不一样
        insert into t8 values(1.111111111111111111111111111111);    # 精确度7位
        insert into t9 values(1.1111111111111111111111111111);      # 精确度15位
        insert into t10 values(1.1111111111111111111111111111);     # 取几位小数,精准到多少位
    

    字符类型

    char是定长字符他的特点是:
    1、存储空间固定
    2、长度不够时内部存储使用空格填充
    3、若字段末尾存在空格,检索出来自动截断末尾的空格
    4、若字段本身前段存在空格,是不会阶段的
    5、当输入字符的长度超过指定长度时,char会截取超出的字符,不做存储
    优点:
    存取速度快
    缺点:
    浪费空间

    varchar是可变长字符,他的特点是:

    ​ 1、存储空间不固定,根据字段长度决定

    ​ 2、需要额外的一个或两个字节记录字符串的长度,字符串的长度小于255字节使用1个字节,否则2个

    ​ 3、最大长度65535字节(这里单位是字节不是字符)
    优点:

    节省空间
    缺点:

    相较于char存取速度慢

    日期类型

    data:年月日 --->2019-12-11
    datetime:年月日 时分秒 --->2019-12-11 11:10:00
    time:时分秒 11:10:00
    year:年 2019
    timestamp:时间戳 ---> 插入时间时,会自动更新
    
    create table student(
                    id int,
                    name varchar(4),
                    birth date,
                    register datetime,
                    work_time year,
                    t_time time,
                    update_time timestamp
                );
    
    insert into student values(1, '张全蛋', '2019-11-11', '2019-11-11 11:11:11','2019', '11:11:11', null);
    

    枚举与集合

    枚举 enum('值1','值2') 多选一,若不选,在严格模式下会报错

    集合 set('值1','值2') 多选一 多选多 set('值1, 值2')

    约束条件

    语法:create table 表名(
    字段名1 字段类型(宽度) 约束条件,
    字段名2 字段类型(宽度) 约束条件
    );

    1.not null --->不得为空
    2.unique ---> 必须唯一
    3.primary key ---> 主键
    4.default ---> 设置默认值
    5.auto_increment ---> 自增
    6.zerofill ---> 用0填充空格
    7.unsigned ---> 无符号
    
  • 相关阅读:
    php判断值是否为空
    MyQQ
    java动态定义二维数组问题
    回归CSDN
    字体工具栏
    传说中的服务器
    sql server 2000 出现不能执行查询,因为一些文件丢失或未注册
    chm文件打不开
    Cmd不能运行,窗口闪一下就消失
    isql病毒
  • 原文地址:https://www.cnblogs.com/aheng/p/12031396.html
Copyright © 2011-2022 走看看