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 )