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

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

存储引擎

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

查看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 ---> 无符号
posted @ 2019-12-12 20:18  小小小小小小小小小白  阅读(225)  评论(0编辑  收藏  举报