zoukankan      html  css  js  c++  java
  • 数据库的配置和数据类型

    数据库的配置

    1) 在mysql安装目录下,创建配置文件:my.ini
    2) 设置配置文件内容并保存
    [mysqld]   # 服务器的配置
    port=3306
    character-set-server=utf8
    collation-server=utf8_general_ci
    
    [client]   # 客户端的配置
    default-character-set=utf8
    
    3) 重启数据库服务
    

    数据库表的引擎

    引擎:驱动数据的方式 ---> 数据库的优化

    前提:引擎是建表规定的,提供给表使用的,不是给数据库的

    # 展示所有引擎
    mysql> show engines;
    
    # innodb(默认):支持事务,行级锁,外键
    mysql> create table t1(id int) engine=innodb;
    
    # myisam:查询效率要优于innodb,当不需要支持事务,行级锁,外键,可以通过设置myisam来优化数据库
    mysql> create table t2(id int) engine=myisam;
    
    # blackhole:黑洞,存进去的数据都会消失(可以理解为不存数据)
    mysql> create table t3(id int) engine=blackhole;
    
    # memory:表结构是存储在硬盘上的,但是表数据全部存储在内存中
    mysql> create table t4(id int) engine=memory;
    

    数据库的模式

    # mysql 5.7版本往后默认都是安全模式
    
    # mysql 5.6版本
    sql_mode=no_engine_substiution   # 非安全性,默认
    sql_mode=strict_trans_tables   # 安全性
    
    # 查看当前数据库模式:
    show variables like "%sql_mode%s";   # %匹配0~n个任意字符 ---> 模糊查询
    
    # root用户登录状态下,设置为临时安全模式,设置后,quit断开数据库连接,重新连接后进入安全模式,服务重启后会重置
    mysql> set global sql_mode="strict_trans_tables";
    
    # 安全模式下,非安全模式下sql执行的警告语句,都会抛异常
    

    mysql支持的数据类型

    整型

    '''
    类型
    tinyint: 1字节,取值范围 -128~127
    smallint: 2字节,取值范围 -32768~32767
    mediumint: 3字节
    int: 4字节,取值范围 -2147483648~2147483647
    bigint: 8字节
    '''
    
    '''
    约束
    unsigned: 无符号
    zerofill: 0填充
    '''
    

    浮点型

    '''
    类型
    float(M, D): 4字节,3.4E-38~3.4E+38
    double(M, D): 8字节,1.7E-308~1.7E+308
    decimal(M, D): 所在字节M,D大值基础上+2,其实就是M值+2就是decimal字段所占字节字数
    '''
    
    '''
    宽度
    (M, D) ==> M为位数,D为小数位,M要大于等于D
    float(255, 30): 精度最低,最常用
    double(255, 30): 精度高,占位多
    decimal(255, 30): 字符串存,全精度
    '''
    

    字符串

    数据库优化:char效率要高于varchar

    '''
    类型
    char: 定长,永远采用设置的长度存储数据
    varchar: 不定长,在设置的长度范围内,变长的存储数据
    '''
    
    '''
    宽度
    char(4): 存"a" "ab" "abc" "abcd" 都采用4个长度,"abcde"只能存储前4位
    varchar(4): 存"a" "ab" "abc" "abcd" 分别采用1,2,3,4个长度,"abcde"只能存储前4位
    
    char按定长存储,如果数据长度变化大,会占更多空间,但是存取数据按固定定长存取,效率高
    varchar存储数据时,会先计算要存储数据的长度,动态的变长存储数据,一般会省空间,但是因为要计算数据的长度,效率会低
    '''
    

    时间

    '''
    类型
    year: yyyy(1901~2155)
    data: yyyy-MM-dd(1000-01-01~9999-12-31)
    time: HH:mm:ss
    datetime: yyyy-MM-dd HH:mm:ss(1000-01-01 00:00:00~9999-12-31 23:59:59)
    timestamp: yyyy-MM-dd HH:mm:ss(1970-01-01 00:00:00~2038-01-19 11:14:07)
    '''
    
    

    枚举和集合

    '''
    枚举和集合:为某一个字段提供选项
    枚举:只能单选(1个)
    集合:可以多选(0~n个)
    '''
    
    

    约束

    '''
    primary key:主键,唯一标识,表都会拥有,不设置为默认找第一个 不空,唯一字段,未标识则创建隐藏字段
    foreign key:外键
    unique:唯一性数据,该条字段的值需要保证唯一,不能重复
    
    auto_increment:自增,只能加给key的int类型字段,作为辅助修饰,一个表中只能设置一个自增字段
    
    not null:不为空,不能设置为null,必须要对其赋值
    default:默认值,对有默认值以外的字段赋值时,有默认值的字段会被赋默认值
    
    unsigned:无符号,存储的数字从0开始
    zerofill:0填充,存整数时,数据长度小于取值范围长度,会在数字左方用0填充
    '''
    
  • 相关阅读:
    解决android SDK升级慢的问题
    matlab的table数据类型初步接触
    IDL软件初步了解
    将博客搬至CSDN
    使用GEANT4的模拟技术1
    geant4开发平台的构建方案的讨论a
    MFC学习1
    Qt如何学习(参考官方文档)
    我对动态磁盘的想法(不全)
    EGS5在linux系统下安装过程
  • 原文地址:https://www.cnblogs.com/yunluo/p/11752970.html
Copyright © 2011-2022 走看看