再谈删除数据的SQL语句

无论是刚毕业的大学生还是已经在软件领域拼杀多年的老手,只要提及删除数据的SQL语句无人不知无人不晓,再谈删除数据的SQL语句不免显得卖弄,呵呵呵,不要好高骛远

有如下两个表:

表1:

CREATE 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:

CREATE 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‘

这种方式的优点:只需要连接一次数据。

时间: 2024-08-28 03:05:17

再谈删除数据的SQL语句的相关文章

mysql 删除重复数据的sql语句

CREATE TABLE tmp AS SELECT id FROM get_review_url WHERE (no,title,name,content) IN (SELECT no,title,name,content FROM get_review_url GROUP BY no,title,name,content HAVING COUNT(*) > 1) AND id NOT IN (SELECT MIN(id) FROM get_review_url GROUP BY no,tit

Python将JSON格式数据转换为SQL语句以便导入MySQL数据库

前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据,我们希望把这些数据导入到MySQL数据库中.phpMyadmin可以把MySQL数据库中的数据导出为JSON格式文件,但却不能把JSON格式文件导入到MySQL数据库.为了实现这个目标,可以编写Python脚本将JSON格式数据转换为SQL语句以便导入MySQL数据库. JSON文件tencent.json部分内容: {"recruitNumber": "1", "name&qu

sql插入多条数据的sql语句

sql插入多条数据的sql语句 有三种方法:1.InSert Into <表名>(列名)Select <列名>From <源表名>如:INSERT INTO TongXunLu (姓名,电话,电子邮件) SELECT SName,SAddress,SEmailFROM Students 这种方法需要先建好新表.2.Select (列名)Into <表名>From <源表名>如:SELECT Students.SName,Students.SAdd

SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

创建数据库: 1 CREATE DATABASE Test --要创建的数据库名称 2 ON PRIMARY 3 ( 4 --数据库文件的具体描述 5 NAME='Test_data', --主数据文件的逻辑名称 6 FILENAME='E:\project\Test_data.mdf', --主数据文件的物理名称 7 SIZE=5MB, --主数据文件的初始大小 8 MAXSIZE=100MB, --主数据文件的增长的最大值 9 FILEGROWTH=15% --主数据文件的增长率 10 )

如何随机从数据库表中抽一条数据的SQL语句

NewID() 方法返回一个 GUID,如:EE95A489-B721-4E8A-8171-3CA8CB6AD9E4 在 select 表的时候,再增加一列为 NewID() 就可以了. SQL 语句:select *, NewID() from table 这样每条记录后就会有一个随机的 GUID 值,我们再按这个 GUID 排一下序就可以达到乱序的效果. SQL 语句:select *, NewID() as random from table order by random 我们要想随机取

如何将sqlserver表中的数据导出sql语句或生成insert into语句 [转]

输入表名,生成插入语句 drop proc proc_insert //如果存在就删除 go create proc proc_insert (@tablename varchar(256)) as begin set nocount on declare @sqlstr varchar(4000) declare @sqlstr1 varchar(4000) declare @sqlstr2 varchar(4000) select @sqlstr='select ''insert '[ema

数据库1(数据库、表及表数据、SQL语句)

01数据库概念 A: 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来, 用户可以对数据库中的数据进行增加,修改,删除及查询操作. B: 什么是数据库管理系统 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库, 对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中表内的数据. 02常见的数据库 * A: 常见的数据库

java基础(28):数据库、表及表数据、SQL语句

1. 数据库 1.1 数据库概述 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. 什么是数据库管理系统 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中表内的数据. 常见的数据库管理系统 MYSQL :开源

将表中数据生成SQL语句

在开发过程中,经常需要我们对表中的数据进行转移,如果在同台机器,可以使用SQL自带的导入数据,但是如果想让所有的数据生成可执行的SQL语句,它的移植性最强了.首先要设计一个存储过程.具体如下: CREATE PROCEDURE dbo.UspOutputData @tablename sysname AS declare @column varchar(1000) declare @columndata varchar(1000) declare @sql varchar(4000) decla