CREATE 数据库,表,索引
CREATE DATABASE
可以在 mysql 和 pgsql 下创建数据库:
$sql = $zbp->db->sql->get()->create()->database('zbp')->ifnotexists()->sql;
CREATE DATABASE IF NOT EXISTS zbp
CREATE TABLE
这里的例子只是 sql 链用法的展示,实际上我们已经把 sql 链的方法包装好了,用$zbp->db->CreateTable 方法会更便捷。
创建一个表,先定义数据结构:
$tableData = array( 'a' => array('a', 'integer', '', 0, '主ID'), 'i' => array('i', 'boolean', '', false), 'k' => array('k', 'string', 250, ''), 'o' => array('o', 'string', 'longtext', '', '备注为某字段'), 'r' => array('r', 'float', '', ''), ); $sql = $zbp->db->sql->get()->create('zbp_table') ->data($tableData) ->option(array('engine' => 'InnoDB')) ->option(array('charset' => 'utf8mb4')) ->option(array('collate' => 'utf8mb4_general_ci')) ->sql; $zbp->db->query($sql); echo $sql;
SQL 语句输出:
CREATE TABLE IF NOT EXISTS zbp_table ( a int(11) NOT NULL AUTO_INCREMENT COMMENT '主ID', i tinyint(1) NOT NULL DEFAULT '0', k varchar(250) NOT NULL DEFAULT '', o longtext NOT NULL COMMENT '备注为某字段', r float NOT NULL DEFAULT 0, PRIMARY KEY (a) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1
备注:可以指定表的引擎和字符集,如果不指定则从 option 文件读取系统的配置
CREATE INDEX
$sql = $zbp->db->sql->get()->create($zbp->table['Post']) ->index( array('zbp_post_index_stt'=>array('log_Status','log_Type','log_Tag')) ) ->sql;
CREATE INDEX zbp_post_index_stt ON zbp_post ( log_Status , log_Type , log_Tag )