MySQL高级编程 | ||||||||||||||||
从文件载入表数据:LOAD DATA INFILE LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。 要使用LOAD DATA INFILE语句,用户必须具有FILE权限。 存储引擎(表的格式) 创建表时即可指定表的格式:create table books type = [myisam,isam,memeory,merge,bdb,innodb] 在大多数Web应用程序中我们使用MyISAM或InnoDB表格,或者二者的结合。 MyISAM - 这是默认的类型,基本传统的ISAM类型,它是存储记录和文件的标准方法。MyISAM具有检查和修复表格的大多数工具,而且可以被压缩,支持全文搜索。但不是事务安全的,而且不支持外键。 InnoDB - 是事务安全的。支持外键,速度很快。 对于一个大量使用SELECT或INSERT语句的表格,应该使用MyISAM类型;如果需要全文搜索功能,也应该使用MyISAM。 当事务安全非常重要,应该使用InnoDB 对于临时表格或要是实现视图,可以使用MEMORY表格 可以使用ALTER TABLE语句更改表格类型。 事务 事务是确保数据库一致的机制,尤其是在发生错误或服务器崩溃情况下确保数据库一致的机制。 事务是一个或一系列的查询,这些查询可以保证能够在数据库中作为一个整体全部执行或者全部不执行。这样,数据库才能在无论事务是否完成的情况下保持一致状态。 比如:从银行的一个账户转账到另一个账户,就必须在删除这个账户的同时增加另一个账户的金额;如果在取出一个账户之后,忽然停电,导致没有存储到另一个账户,资金就会丢失,而事务安全就保证不会出现这种情况。 一个事务实永久地定入数据库中称作该事务被提交了。一个没有写入到数据库中的事务称作事务被回滚了。 通过InnoDB使用事务 默认情况下MySQL是自动提交的,如果要使用事务,我们可能不希望使用这种行为。 关闭当前会话的自动提交: set autocommit = 0; 如果自动提交被打开了,在使用事务前必须使用下面的命令: start transaction; 在完成了组成事务的语句输入后,可以使用下面的语句将其提交到数据库: commit; 如果改变主意,可以使用下面的语句回到数据库以前的状态: rollback; 外键 比如我们要在order_items中插入一行,必须包括一个有效的orderid,在InnoDB中使用外键,可以让数据库完成检查操作(与orders表中的orderid进行比对)。而在MyISAM中就只能自己核对了。 可以在创建表时在列荐使用 references orders(orderid) 来实现外键,亦可在创建后进行修改: ALTER TABLE order_items ADD FOREIGN KEY ( orderid ) REFERENCES orders( orderid ); 使用ALTER TABLE的 add foreign key ... references 来修改
|