• 数据库-表操作


    Mysql的存储引擎

    #存储引擎是什么?
    Mysql中的数据用各种不同的技术存储在文件(或者内存中),这些技术中的每一种技术
    都使用不同的存储机制,索引技巧,锁定水平并凭最终提供广泛的不同的功能和能力。通过
    选择不同的技术,能够获得额外的速度或者功能,从而改善你的应用的整体功能。
    这些不同的技术以及配套的相关功能在mysql中被称作存储引擎(亦称作表类型)
    
    #mysql5.6版本下的搜索引擎:
        Innodb:支持事物/行级锁/外键
        myisam:表级锁
        memory:内存存储引擎,读取速度快,但是不能持久化存储,重启mysql会失效
        blackhole:所有的数据都可以写入,但不会真的记录在表中,
             主从复制中的数据传输 事物是什么? 把执行n句sql语句看成一个完整的事件,要么一起成功,要么失败 行级锁:能够支持并发的修改数据的操作,但是修改的行数非常多时,效率会受到影响 表级锁:不支持并发的修改同一张表,但是不需要加很多的细粒锁来浪费时间 外键:在本表中有一个字段关联外表的另一个表的字段 缓存的作用: 存储一些对效率要求比较快的 但是丢失不要紧的数据。
      

      Innodb:用于事物处理程序,支持外键和行级锁。
        数据操作除了插入和查询之外,还包括很多更新和删除操作。
      Myisam:用于读操作和插入操作为主,含有很少的更新和删除操作,对于事物的完整性,并发行要求不高。
      Memory:将所有的数据保存在内存中,能够快速的定位记录和其他类似数据的环境下,提供极快的访问。

     
    #查看当前Mysql的默认存储引擎
    show variables like 'default_storage_engine';
    
    #查看当前Mysql支持的存储引擎
    show engines G;
    存储引擎相关sql语句

    创建表

    #创建表
    create table 表名(
        字段1 数据类型 约束条件,
        字段2 数据类型 约束条件,
        字段3 数据类型 约束条件
    );

     

    mysql支持的数据类型

    Mysql支持的数据类型:
    数值类型:
        整型:
            int#后面制定字符长度没什么用,写的是多长显示的还是多长,
               #如果超过最大长度,则存2 147 483 647
        浮点型:
            float(m,n)#表示该小数一共只能存m位数,小数点后n位小数
                        #插入数据时注意数据不准且
            double
            decimal(65,30)#稍微准点,因位存取的是字符串
    日期类型:
        now()#表示当前时间
        date:日期
        time:时间
        datetime:日期时间,可以为Null
        timestamp:#1970-01-01 00:00:00/2038-01-19 11:14:07,不为null,默认插入null显示当前时间
                    #超出时间一律显示000000000000
    字符串类型:
        char:#定长(0-255)存储相对浪费空间,存取效率线相对快
        varchr:#变长(0-65535)相对节省空间,存取效率相对慢
        
        #char 不足设置的字符长度在'a'后面补0'a0000'
        #varchar不足在字符前面设置一个字符的长度
        
    ENUM和SET类型:
        ENUM:#单选
        SET:#多选+去重

    msyql表的完整性约束

    mysql表的完整性约束
        not null:#非空约束
            #create table t10 (id1 int not null,id2 int not null default 10);
            #创建一个id1 非空, id2非空 默认值为10的表    
            #mysql> insert into t10 (id1) values(11),(12);#使用某个字段记得带括号
    
        unique:#唯一约束
            #对于NUll不生效,仍然可以重复插入NULL
            #not null + unique==》主键
            #如果一个表多个字段设置了not null unique,那么只有第一个字段设置成了PRI,其他的都是UNI
            
            #联合唯一:就是一个表不能重复1,1
                create table t14 (id int not null,name char(12) not null,ip char(15) not null,port char(4) not null, unique(ip,port));
                mysql> desc t14;
                +-------+----------+------+-----+---------+-------+
                | Field | Type     | Null | Key | Default | Extra |
                +-------+----------+------+-----+---------+-------+
                | id    | int(11)  | NO   |     | NULL    |       |
                | name  | char(12) | NO   |     | NULL    |       |
                | ip    | char(15) | NO   | PRI | NULL    |       |
                | port  | char(4)  | NO   | PRI | NULL    |       |
                +-------+----------+------+-----+---------+-------+ 
                设置了一组主键。
        primary key:#主键
            #主键:必须唯一,必须非空
                单字段:
                多字段:
            #auto_increment
                必须是一个键
                #delete时在insert是从保存的值开始增加
                #必须用truncate清除
        foreign key:#外键
            两个不同的事物存在关联,外键把这两个事物关联起来
         外键关联的字段必须是唯一的
    主表对应多个外键
    create table author2book(
    id int not null unique auto_increment,
    author_id int not null,
    book_id int not null,
    constraint fk_author foreign key(author_id) references author(id)
    on delete cascade
    on update cascade,
    constraint fk_book foreign key(book_id) references book(id)
    on delete cascade
    on update cascade,
    primary key(author_id,book_id)
    );

    表结构的修改

    1. 修改表名
          ALTER TABLE 表名 
                          RENAME 新表名;
    
    2. 增加字段
          ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…],
                          ADD 字段名  数据类型 [完整性约束条件…];
                                
    3. 删除字段
          ALTER TABLE 表名 
                          DROP 字段名;
    
    4. 修改字段
          ALTER TABLE 表名 
                          MODIFY  字段名 数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    
    5.修改字段排列顺序/在增加的时候指定字段位置
        ALTER TABLE 表名
                         ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
        ALTER TABLE 表名
                         ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
        ALTER TABLE 表名
                         CHANGE 字段名  旧字段名 新字段名 新数据类型 [完整性约束条件…]  FIRST;
        ALTER TABLE 表名
                         MODIFY 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;

     删除表

    drop table 表名;

    多表结构的创建与分析

    #一对一
    
    #一对多
    
    #多对多
  • 相关阅读:
    Flask 学习7. make_response() 自定义响应内容 上海
    Flask 学习5.请求对象Request 上海
    Flask 学习3.设置 HTTP 请求 方法(get/post) 上海
    Flask 学习2.url访问地址(路由配置) 上海
    Flask 学习9. 开启调试模式(debug模式)的2种方法 上海
    modelmapper 简单智能的对象映射工具
    使用jsch 实现ssh tunnel
    jimfs java 内存文件系统实现
    基于commonsdiscovery 开发简单的插件化java系统
    dremio 20 版本可以下载体验了
  • 原文地址:https://www.cnblogs.com/liuer-mihou/p/10483380.html
Copyright © 2020-2023  润新知