文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用PEAR::MDB2 Manager模块控制表

用PEAR::MDB2 Manager模块控制表

时间:2006-07-12  来源:夜猫子


               
                PEAR::MDB2除了提供PEAR::DB已有的sql处理功能之外,还提供了一个非常强大的扩展功能:添加/删除/修改数据库对象
可以控制的数据库对象有:
    * 库
    * 表
    * 索引(普通索引、主键、唯一索引)
调用Manager模块$mdb->loadModule('Manager');
或者直接用魔法调用方式
$mdb->mgCreateTable();
$mdb->mgAlterTable();
模块调用机制参看《
PEAR::MDB2模块调用机制

创建数据库$mdb->createDatabase($dbname);
建立数据库很简单,只要指定数据库名字就好,可惜的是,创建新数据库时不能指定更多的参数,比如postgresql建立数据库时还可以指定encoding、owner等等。
定义字段MDB2把字段的数据类型抽象为:
    * text   字符类型
    * clob   大对象(文本)
    * blob   大对象(二进制)
    * integer    整数
    * boolean    布尔类型
    * date       日期类型(YY-MM-DD)
    * time       时间类型(HH:MM:SS)
    * timestamp  日期加时间(YYYY-MM-DD HH:MM:SS)
    * float      浮点数类型
    * decimal    任意精度数值类型
字段的参数有:
    * length    长度
    * type      数据类型
    * default   默认值
    * unsigned  无符号
    * notnull   不允许空值
    * fixed     字符类型是否用空格填充不足的长度
例如我想要,创建一个user_info表,包含三个字段:id(编号 整数)、user_name(用户名)、password(MD5密码),字段的描述就是
$fields = array(
    'id' => array(
        'type'      => 'integer',
        'notnull'   => 1
    ),
    'username' => array(
        'type'      => 'text',
        'length'    => 20,
        'notnull'   => 1
    ),
    'password' => array(
        'type'      => 'text',
        'length'    => 32,
        'notnull'   => 1
    )
);
如果给text类型指定length,字段会使用varchar或者char,如果fixed为真则为char,fixed为假则为varchar,fixed默认为false
如果没有给text指定length,使用text类型
某些DBMS可以把默认值设置为函数,比如now(),但是在这里无法设置默认值为函数,如果指定函数默认值,默认值实际上设置成函数运行后的值
创建表创建名字叫user_info的用户信息表
$mdb->createTable('user_info', $fields);
修改表表的修改使用alterTable()方法,可以对表进行的操作有
    * name    重命名表名
    * add     添加字段
    * remove  删除字段
    * change  修改字段
    * rename  字段重命名
添加字段
给user_info表添加三个字段,realname(真实姓名)、reg_date(注册时间)、login_time(最后一次登录时间)
$change = array(
    'add' => array(
        'realname'  => array(
            'type'      => 'text',
            'length'    => 20
        ),
        'reg_date'  => array(
            'type'      => 'timestamp',
            'notnull'   => 1
        ),
        'login_time' => array(
            'type'      => 'timestamp'
        )
    )
);
$mdb->alterTable('user_info', $change);
修改字段
把reg_date字段从timestamp类型改变为date类型,realname不允许为空
$change = array(
    'change' => array(
        'reg_date' => array(
            'type'  => 'timestamp',
            'definition' => array(
                'type'  => 'date'
            )
        ),
        'realname' => array(
            'notnull' => 1
        )
    )
);
$mdb->alterTable('user_info', $change);
删除字段
删除login_time字段
$change = array(
    'remove' => array(
        'login_time' => array()
    )
);
$mdb->alterTable('user_info', $change);
字段重命名
重命名realname为real_name
$change = array(
    'rename' => array(
        'realname' => array(
            'name' => 'real_name'
        )
    )
);
$mdb->alterTable('user_info', $change);
重命名表
把user_info表重命名为userinfo
$change = array(
    'name' => 'userinfo'
);
$mdb->alterTable('user_info', $change);
创建索引在id字段上创建主键
$con_define = array(        // 主键定义
    'fields' => array('id' => array()),
    'primary' => 1
);
$con_name = 'pk_user_info_id';  // 主键名
$mdb->createConstraint('user_info', $con_name, $con_define);
在username字段上创建唯一索引
$con_define = array(        // 唯一索引定义
    'fields' => array('username' => array()),
    'unique' => 1
);
$con_name = 'uk_user_info_username';    // 唯一索引名
$mdb->createConstraint('user_info', $con_name, $con_define);
删除刚才建立的约束
$mdb->dropConstraint('user_info', 'pk_user_info_id');
$mdb->dropConstraint('user_info', 'uk_user_info_username');
在username、password上建立双字段索引
$idx_define = array(
    'fields' => array(
        'username' => array(),
        'password' => array()
    )
);
$idx_name = 'idx_user_info_auth';
$mdb->createIndex('user_info', $idx_name, $idx_define);
删除idx_user_info_auth索引
$mdb->dropIndex('user_info', 'idx_user_info_auth');
Manager模块对一些通常的操作进行了封装,可以满足大部分常见的需求,但是如果你需要是更加精细的控制,Manager就无法做到了,比如:
// PostgreSQL
CREATE INDEX code_idx ON films(code) TABLESPACE indexspace
最后建议有疑惑的时候看还是看看相关的代码,代码就是最好的文档
               
               
               
               
               
               

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载