首页 电脑 电脑学堂 查看内容

再谈删除数据的SQL语句

2014-11-25 13:46 856 0

摘要: 无论是刚毕业的大学生还是已经在软件领域拼杀多年的老手,只要提及删除数据的SQL语句无人不知无人不晓,再谈删除数据的SQL语句不免显得卖弄,呵呵呵,不要好高骛远:     ...
关键词: nbsp COMMENT DEFAULT NULL user VARCHAR 用户 方式 信息 info

无论是刚毕业的大学生还是已经在软件领域拼杀多年的老手,只要提及删除数据的SQL语句无人不知无人不晓,再谈删除数据的SQL语句不免显得卖弄,呵呵呵,不要好高骛远:        有如下两个表:        表1:[sql] view plaincopyCREATE TABLE `lm_r_user_info` (     `id` CHAR(36) NOT NULL COMMENT '用户基础信息ID',     `real_name` VARCHAR(30) NOT NULL COMMENT '真实姓名',     `gender` INT(11) DEFAULT NULL COMMENT '性别',     `birthday` DATE DEFAULT NULL COMMENT '出生日期',     `nation` INT(11) DEFAULT NULL COMMENT '民族',     `telephone` VARCHAR(20) DEFAULT NULL COMMENT '固定电话',     `mobile` VARCHAR(20) DEFAULT NULL COMMENT '移动电话',     `email` VARCHAR(100) DEFAULT NULL COMMENT '电子邮件',     `qq` VARCHAR(20) DEFAULT NULL COMMENT 'QQ号',     `wechat` VARCHAR(100) DEFAULT NULL COMMENT '微信',     `address` VARCHAR(100) DEFAULT NULL COMMENT '联系地址',     `summary` VARCHAR(4000) DEFAULT NULL COMMENT '个人简介',     `remark` VARCHAR(4000) DEFAULT NULL COMMENT '备注',     PRIMARY KEY (`id`),     KEY `idx_user_info_realName` (`real_name`) USING BTREE   ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='用户基础信息'          表2:[sql] view plaincopyCREATE TABLE `lm_r_user` (     `id` CHAR(36) NOT NULL COMMENT '用户ID',     `user_info_id` CHAR(36) NOT NULL COMMENT '用户基础信息ID',     `user_name` VARCHAR(50) DEFAULT NULL COMMENT '用户名',     `password` VARCHAR(100) NOT NULL COMMENT '用户密码',     PRIMARY KEY (`id`),     UNIQUE KEY `user_idx_userInfoId` (`user_info_id`) USING HASH   ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='用户信息'          表1和表2之间的关系:表2通过user_info_id字段和表1关联。        需求:删除用户名为“admin”的用户信息及其基本信息。        最傻的方式:        根据用户名先从表2中获取相应的用户基本信息的标识(即表2中对应的user_info_id字段),然后执行delete from lm_r_user where user_name = 'admin',再执行delete from lm_r_user_info where id= '查询出来的用户信息标识'        这种方式的缺陷:如果使用这种方式进行数据的删除恐怕需要三次数据库连接,这无形中增加了服务器端的压力        最可取的方式:        delete u, ui from lm_r_user_info ui inner join lm_r_user u on u.user_info_id = ui.id where u.user_name = 'admin'        这种方式的优点:只需要连接一次数据。        其实第二种方式之所以不容易想到是因为大家用惯了“delete from 表名”这种删除SQL语句的方式
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部