`
yxwang0615
  • 浏览: 560876 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

mysql ENGINE

阅读更多

对mysql 的 engine 关键字一直不了解。今天在给一个数据表添加外键关系的时候,外键强制功能一直不好使。就是在没有添加主表数据的时候,对关联表添加记录竟然成功了。

这里是两张表,web_news_type为新闻类型表,web_news为新闻表。建立表的sql如下:

-- 
-- 表的结构 web_news_type
-- 

CREATE TABLE web_news_type (
  mainkey char(32) NOT NULL,
  type_name varchar(50) default NULL,
  useflag char(1) default NULL COMMENT '0.不使用,1.使用',
  add_user varchar(32) default NULL,
  add_date date default NULL,
  PRIMARY KEY  (mainkey)
  

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE web_news (
  mainkey char(32) NOT NULL,
  type_key char(32) default NULL,
  title varchar(200) default NULL,
  content text,
  show_flag char(1) default NULL COMMENT '0.否,1.是',
  state_key char(1) default NULL COMMENT '0.普通,1.hot,2.new',
  click_count int(32) default NULL,
  add_user varchar(32) default NULL,
  add_date date default NULL,
  PRIMARY KEY  (mainkey)
  -- foreign key(type_key) references web_news_type(mainkey) on delete cascade on update cascade,
  -- CONSTRAINT FK_type_news FOREIGN KEY (type_key) REFERENCES web_news_type (mainkey)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
ALTER TABLE web_news
  ADD CONSTRAINT FK_type_news FOREIGN KEY (type_key) REFERENCES web_news_type (mainkey);

 

 如果不用修改的办法(ALTER TABLE web_news),也可以直接将外键关系写在关联表中,注释的部分使用了两种写法表达外键关系。

 

这样建立的两张表之间虽然添加了外键关系,但是使用phpmyadmin工具查看关系的时候却找不到两张表的关联关系,

用PowerDesigner建立了两张表及外键关系,查看了一下生成的sql脚本,发现建表的时候没有指定ENGINE=MyISAM

,这样才能正常的生成主外键约束。r如果要使用FOREIGN KEY强制 ,请使用InnoDB存储引擎。

 

所以要弄清楚ENGINE的意思:

ENGINE在MySQL中被称作存储引擎(也称作表类型)。

 常用的存储引擎:
· MyISAM:默认的MySQL插件式存储引擎,它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。注

    意,通过更改STORAGE_ENGINE配置变量,能够方便地更改MySQL服务器的默认存储引擎。

· InnoDB:用于事务处理应用程序,具有众多特性,包括ACID事务支持。InnoDB也支持FOREIGN KEY强制。

    InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。

· BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性。

· Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

· Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。

    对于诸如数据仓储等VLDB环境十分适合。

· Archive:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。

· Federated:能够将多个分离的MySQL服务器链接起来,从多个物理服务器创建一个逻辑数据库。十分适合于分布式

    环境或数据集市环境。

· Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高

    的正常工作时间和可用性。

· Other:其他存储引擎包括CSV(引用由逗号隔开的用作数据库表的文件),Blackhole(用于临时禁止对数据库的应

    用程序输入),以及Example引擎(可为快速创建定制的插件式存储引擎提供帮助)。

 

  仅供参考,如果有错误的地方,还请路过的指正。

分享到:
评论

相关推荐

    PowerDesigner Report Template & Modify MySQL Engine

    标题“PowerDesigner Report Template & Modify MySQL Engine”涉及的是两个主要的IT知识点,一个是关于PowerDesigner的报告模板使用,另一个是如何修改MySQL数据库的存储引擎。在接下来的内容中,我们将深入探讨这...

    MySQL 5.6 InnoDB Storage Engine Architecture

    MySQL 5.6 InnoDB Storage Engine Architecture

    php-mysql-engine:用纯PHP编写MySQL引擎

    PHP MySQL引擎PHP MySQL Engine是PHP的库,可让您使用MySQL 5.6的内存模拟来测试数据库驱动的应用程序。 该项目扩展了PDO类,并允许您调用常见的PDO MySQL方法。 它支持各种查询以及某些PDO特定的功能,例如事务和...

    SequoiaSQL - MySQL Storage Engine

    SequoiaSQL - MySQL Storage Engine is a distributed MySQL storage engine. It currently supports SequoiaDB 3.x as the backend database, and it will be extended to multiple databases such like MongoDB/...

    Unknown system variable 'storage_engine'

    标题中的“Unknown system variable 'storage_engine'”是一个MySQL数据库错误信息,表示系统未找到名为'storage_engine'的变量。这个变量在MySQL 5.7版本中被弃用,替换为'innodb_storage_engine'。这通常是由于旧...

    AccessDatabaseEngine_X64.exe 在用navicate录入excel到mysql的时候的一个插件(解决各种报错问题)

    "AccessDatabaseEngine_X64.exe"的安装可以解决上述驱动问题,它提供了ACE(Access Connectivity Engine),使Navicate能够读取Excel文件并将其内容有效地导入MySQL。它支持最新的Excel文件格式,包括.xlsx和.xls,...

    mysql5.5.36及mysql-font安装包

    1. **Federated Storage Engine增强**:支持更大规模的分布式查询,允许用户从不同地理位置的MySQL服务器上聚合数据。 2. **InnoDB存储引擎优化**:提高了InnoDB表的性能,支持更多的并发事务处理,并引入了InnoDB ...

    MYSQL安装步骤-5.7.17

    ### MySQL 5.7.17在CentOS 7.1下的编译安装步骤 本文档将详细介绍如何在CentOS 7.1操作系统上编译并安装MySQL 5.7.17。此过程分为几个关键步骤:安装依赖、清理环境、下载与解压源码包、编译安装以及配置MySQL服务...

    mysql执行sql文件报错Error: Unknown storage engine‘InnoDB’的解决方法

    然而,当你尝试执行一个依赖于InnoDB存储引擎的SQL文件时,如果系统报出“Error: Unknown storage engine 'InnoDB'”的错误,这意味着MySQL服务器无法识别或不支持InnoDB引擎。这通常是由于MySQL配置不当或InnoDB...

    MySQL 5.6.25 源码包+安装方法 (mysql-5.6.25.tar.gz)

    mysql-5.6.25.tar 包含两个文件: - mysql-5.6.25.tar.gz Generic Linux (Architecture Independent), Compressed TAR Archive MD5: 37664399c91021abe070faa700ecd0ed -install.txt: 安装方法 首先解压mysql-...

    mysql源码安装包.zip

    -DCMAKE_INSTALL_PREFIX=/home/mysql -DMYSQL_DATADIR=/home/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 ...

    用纯PHP编写MySQL引擎-PHP开发

    PHP MySQL Engine是PHP的单元测试库。 它可以使用MySQL的内存模拟来测试数据库驱动的应用程序。 它支持各种查询,事务等。 该项目扩展了PDO类,并允许您调用常见的PDO MySQL方法。 PHP MySQL引擎这是Scott Sandler...

    RockyLinux9.0 yum安装 mysql8.0

    在本文中,我们将详细介绍如何在Rocky Linux 9.0系统上使用`yum`命令安装MySQL 8.0,以及安装后的配置步骤,包括启动服务、添加自启动、登录、重置密码、开放远程连接、防火墙设置等关键操作。 **一、检查与安装** ...

    mysql-5.7.38源码包及所需boost_1_59_0合集

    DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_IN...

    window系统下如何进行mysql离线安装

    Window系统下MySQL离线安装详解 MySQL是一款非常流行的开源关系数据库管理系统,广泛应用于Web应用程序中。然而,在Windows系统下安装MySQL却是一个让人头疼的问题,本文将详细介绍如何在Window系统下进行MySQL离线...

    UE4链接MySQL库文件,mysql-connector-c++-8.0.13-winx64

    在UE4(Unreal Engine 4)开发过程中,有时候我们需要与外部数据库进行交互,比如MySQL。这个场景下,"UE4链接MySQL库文件,mysql-connector-c++-8.0.13-winx64" 提供了所需的关键组件,即MySQL Connector/C++,它是...

    国家开放大学 数据库运维 形考一 MySQL数据库服务器配置

    MySQL数据库服务器配置 MySQL数据库服务器配置是国家开放大学数据库运维 形考一的重要组成部分。通过这个实验,我们将掌握 MySQL 的安装方法,了解 MySQL 服务器的组成,掌握 MySQL 服务器的配置方法。 MySQL安装...

    mysql 5.7.3 源码包

    Mysql 源码安装操作: 1. 创建用户 # groupadd mysql # useradd -g -r mysql mysql 2. 解压缩tar包 # tar xf mysql-5.7.3-m13.tar.gz # cd mysql-5.7.3-m13 3. 编译安装 # cmake . -DCMAKE_INSTALL_PREFIX=/usr/...

    MySQL 8 Administrator's Guide

    Step by step guide to monitor, manage, and secure your database engine Key Features Your companion to master all the administration-related tasks in MySQL 8 Ensure high performance and high ...

Global site tag (gtag.js) - Google Analytics