zoukankan      html  css  js  c++  java
  • 数据库表的引擎与数据库的模式

    创建表的完整语法

    # 长度和约束在某些情况下是可以省略的
    mysql>: create table 表名 (
    	属性名1 类型(长度) 约束,
    	...
    	属性名n 类型(长度) 约束
    ) engine=引擎 default charset=utf8;
    

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

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

    数据库的模式

    # mysql 5.7 以后默认都是安全模式
    
    # mysql 5.6 版本
    sql_model=no_engine_substitution  # 非安全性,默认
    sql_model=strict_trans_tables  # 安全性
    
    # 查看当前数据库模式:
    show variables like "%sql_mode%"; # %匹配0~n个任意字符 => 模糊查询
    
    # 临时设置为安全模式,服务重启后会被重置
    mysql>: set global sql_mode="strict_trans_tables";  # 在root用户登录状态下
    # 在设置后,quit断开数据库连接后(服务器不重启)就会进入安全模式
    
    # 安全模式下,非安全模式下sql执行的警告语句,都会抛异常
    eg>: create table t1(name char(2));
    eg>: insert into t1 values ("ab") # 正常
    eg>: insert into t1 values ("owen") # 错误 Data too long for column 'name' at row 1
    
  • 相关阅读:
    Python进阶开发之元类编程
    django相关网站
    Ubuntu下vim中文乱码
    django自定义用户表
    C# webbrowser遍历网页元素
    Delphi SetParent 嵌入其他应用程序
    C# DataGirdview手动添加数据,导出txt文件并自动对齐
    C# SetParent将其他程序嵌入自己的程序
    Delphi如何找到出错行的行数!!
    Delphi StringGrid控件的用法
  • 原文地址:https://www.cnblogs.com/aden668/p/11574338.html
Copyright © 2011-2022 走看看