ZBlog CREATE 数据库,表,索引

摘要:CREATE 数据库,表,索引CREATE DATABASE可以在 mysql 和 pgsql 下创建数据库:$sql = $zbp->db->sql->get()->create()->database('zbp')->ifnotexists()->sql;CREATE DA

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 )