MySql如何创建外键

MySql如何创建外键,第1张

mysql添加外键:

为已经添加好的数据表添加外键:

语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

//FK_ID是外键的名称

/*

CREATE TABLE `tb_active` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,

`user_id` int(11) NOT NULL,

PRIMARY KEY (`id`),

KEY `user_id` (`user_id`),

KEY `user_id_2` (`user_id`),

CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

*/

因为一个MYSQL查询语句只使用一个索引,当你这个语句的WHERE有两个字段作为条件的话,如果使用两个字段联合起来建立一个索引,性能和高得多。反之,如果是两个字段分别建立的索引,MYSQL只能使用其中一个,另外一个用顺序查询。

http://hi.baidu.com/cha369/blog/item/cdfc3001f239320f1d9583c5.html

确实,只能自己封装一个方法来拼sql,比如:

$arr = array('z'=>'ccc','w'=>'ddd')

doInsert('aaa', $arr)

doInsert('bbb', $arr)

function doInsert($tbname, $fields) {

    $sql = 'insert into ' . $tbname . '('

    $sqlfield = ''

    $sqlval = ' values('

    foreach ($fields as $field => $val) {

        if (!empty($sqlfield)) {

            $sqlfield .= ','

            $sqlval.=','

        }

        $sqlfield .= $field

        $sqlval.='\'' . str_replace('\'', '\'\'', $val) . '\''

    }

    // 执行拼接好的sql

    $this->db->query($sql)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7299710.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存