• 数据库引擎,创建表的完整语法,数据库的常用类型,约束条件(主键,唯一,自增,外键)


    数据库引擎

    决定数据存取数据的方式
    show engines : 查看引擎
    
    innodb(默认引擎):支持事务,行级锁,外键
    myisam:查询效率由于innodb,不需要支持事务,行级锁,外键,可以选用myisam来优化数据库
    
    mysql> create table t1(id int)engine=innodb;
    mysql> create table t2(id int)engine=myisam;
    mysql> create table t3(id int)engine=blackhole;
    mysql> create table t4(id int)engine=memory;
    
    
    create table t1(name char,id int) engine=innodb
    insert into t1 values(1)
    
    

    创建表的完整语法

    create table 表名 (字段名 类型[(宽度)约束条件 ])engine=innodb charset="utf8";

     

    数据库的模式

    show variables like "%sql_mode%"  查看当前数据库模式,% 代表模糊查找
    set global sql_mode="strict_trans_tables";     设置数据库模式
    
    no_engine_substitution:非安全性,默认
    strict_trans_tables:安全模式(严格模式)

    数据库的常用类型

    规定数据存放的哪些数据
    整形 浮点型 字符型 时间类型 枚举类型 集合类型

    (1)整形: 不同类型所占字节数不一样,决定所占空间及存放数据大小限制
    tinyint:1字节  -128127
    smallint:2字节
    mediumint:3字节
    int:4字节
    bigint:8字节


    宽度:
    1.不能决定整形存放数据的宽度,超过宽度可以存放,最终由数据类型所占字节决定
    2.如果没有超过宽度,且有zerofill限制,会用0填充前置位的不足为
    3.没有必要规定整形的宽度,默认设置的宽度就为最大宽度
    (2)浮点型:
    float:4字节    精度最低,最常用
    double:8字节   精度高,占位多
    decimal:M,D大值基础上+2      字符串存,全精度
        
    宽度:
    decimal
    ( a,b )
       a为位数,b为小数位

    (3)字符型:

    char:定长    一定按规定存放数据,以规定宽度读取数据
    varchar:不定长    首先根据数据长度计算宽度,并在数据开始以数据头 1到2字节 计算数据长度 保存起来,计算耗时

    宽度:
    char(4):以四个字符长度存储,超出报错浪费,以空间换取时间效率,
    varchar(4):数据长度决定字符长度,但也不能超出长度,节省空间
    总结:数据长度相近的数据提倡用char来存取数据,数据需要高速存取,异空间换时间

    (4)时间类型:

    year:年  yyyy(1901/2155)
    date:年--日  yyyy-MM-dd
    time:时分秒   HH:mm:ss
    datetime:年月日时分秒 yyyy-MM-dd HH-mm-ss    可以为空,不依赖时区
    timestamp:年月日时分秒 yyyy-MM-dd HH-mm-ss   不能为空,默认位当前时间,依赖时区
    (5)枚举与集合:
    枚举 enum:单选
    集合 set:多选
    create table t1 (
        sex enum('male',"female","wasai") not null default "wasai"",  #枚举
        hobbies set("play","read","music")  #集合
    );
    
    insert into t1(sex,hobbit) values("male","play,read");
    
    

    约束条件

    限制存取数据的规则


    主键:表默认都有主键 (id字段)
    primary key:主键(不为空,唯一性)
    单例主键:
    create table t1(id int primary key)
    联合主键:
    create table t1(ip char(16),port int,primary key(ip,port))
    唯一性:表默认都有主键 (id字段)
    unique key: 唯一性约束,联合唯一
    单列唯一(单个字段不能重复)
        create table t1(id int unique)
    
    联合唯一(指联合的字段不能同时重复)
        create table t1(
            ip char(16),
            port int,
            unique(ip,port)
        )
    自增:跟键一起连用
    auto_increment:自增,只能跟key字段连用
        create table t1(id int primary key auto_increment )

    其他约束条件

    not null:不能为空
    default:默认值
    
    unsigned : 无符号
    zerofill : 0填充
    
    
     

    创建表的完整语法

  • 相关阅读:
    基于 Android NDK 的学习之旅-----序言
    音乐播放时跳动的音符
    WebView中实现文件下载功能
    Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单
    android webview中的音乐的暂停与播放
    Android 使用Fragment界面向下跳转并一级级返回
    Fragment使用LocalBroadcastManager接收广播消息
    android WebView总 结
    解决方式:QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
    Android学习十九:ContentProvider初步
  • 原文地址:https://www.cnblogs.com/liu--huan/p/10300977.html
Copyright © 2020-2023  润新知