数据库备份介绍:

数据库一旦删除数据,它就会永远消失。 因此,在执行DELETE语句之前,应该先备份数据库,以防万一要找回删除过的数据。

MySQL提供了非常有用的工具,用于在服务器上本地备份或转储MySQL数据库。

MySQLDump是由MySQL提供的程序,可用于转储数据库以备数据库或将数据库传输到另一个数据库服务器。

转储文件包含一组用于创建数据库对象的SQL语句。 此外,mysqldump可用于生成CSV,分隔符或XML文件。

数据库备份操作:

要备份MySQL数据库,数据库首先必须存在于数据库服务器中,并且您也可以访问该服务器。 如果没有远程桌面,可以使用SSH或Telnet登录到远程服务器。

数据库备份
mysqldump -u [username] –p[password] [database_name] > [dump_file.sql]
  • [username]:有效的MySQL用户名。
  • [password]:用户的有效密码。 请注意,-p和密码之间没有空格。
  • [database_name]: 要备份的数据库名称
  • [dump_file.sql]: 要生成的转储文件。

执行上述命令,所有数据库结构和数据将导出到一个[dump_file.sql]转储文件中。

 数据库备份实例:

mysqldump -u root –p123456  yiibaidb > D:\worksp\bakup\yiibaidb001.sql

仅备份数据库结构操作:

如果只想备份数据库结构而不需要备份数据,那么只需要添加一个选项-no-data来告诉mysqldump只需要导出数据库结构。

mysqldump -u [username] –p[password] –no-data [database_name] > [dump_file.sql]

实例:
C:\Users\Administrator> mysqldump -u root –p123456 -no-data yiibaidb > D:\worksp\bakup\backup002.sql

仅备份数据库数据:

有一种情况,您希望在分段和开发系统中刷新数据,因此这些系统中的数据与生产系统相同。

在这种情况下,只需要从生产系统导出数据,并将其导入到临时或开发系统中。要实现只备份数据。

可以使用mysqldump的选项-no-create-info:

mysqldump -u [username] –p[password] –no-create-info [database_name] > [dump_file.sql]

实例:
mysqldump –u root –p123456 –no-create-info yiibaidb > D:\worksp\bakup\backup003.sql

多个数据库备份到一个文件夹:

如果要通过[database_name]中的命令来备份多个数据库,只需单独的数据库名称即可。
mysqldump -u [username] –p[password] [dbname1,dbname2,…] > [all_dbs_dump_file.sql] 如果要备份数据库服务器中的所有数据库,请使用选项-all-database。
mysqldump -u [username] –p[password] –all-database > [all_dbs_dump_file.sql]

MySQL-DELECT语句

功能介绍:从表中删除数据。

MySQL-DELECT语法:

DELETE FROM table_name
WHERE condition;

第一,指定删除数据的表(table_name)。

第二,使用条件来指定要在WHERE子句中删除的行记录。如果行匹配条件,这些行记录将被删除。如果省略WHERE子句,DELETE语句将删除表中的所有行。

MySQL-DELECT和LIMIT

如果要限制要删除的行数,则配合Order By使用LIMIT子句。
DELETE FROM table_name
ORDER BY c1, c2, ...
LIMIT row_count;

MySQL-ON DELETE CASCADE语句

功能介绍:ON DELETE CASCADE对于外键的引用操作,可以实现在从父表中删除数据时自动删除子表中的数据。

外键:

如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。

学生(学号,姓名,性别,专业号,年龄,班长)关系中,“学号”是主键,“班长”属性表示该学生所在班级的班长的学号,它引用了本关系中“学号”属性,因此“班长”是外键。

假设有两张表:建筑物(buildings)和房间(rooms)。

该数据库模型中,每个建筑物都有一个或多个房间。 然而,每个房间只属于一个建筑物。没有建筑物则房间是不会存在的。

第一步, 创建buildings表,如下创建语句:

USE testdb;
CREATE TABLE buildings (
building_no INT PRIMARY KEY AUTO_INCREMENT,
building_name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

第二步, 创建rooms表,如下创建语句:

USE testdb;
CREATE TABLE rooms (
room_no INT PRIMARY KEY AUTO_INCREMENT,
room_name VARCHAR(255) NOT NULL,
building_no INT NOT NULL,
FOREIGN KEY (building_no)
REFERENCES buildings (building_no)
ON DELETE CASCADE
)ENGINE=InnoDB DEFAULT CHARSET=utf8; 注意:在外键约束定义的末尾添加ON DELETE CASCADE子句。

第三步, 将一些数据插入到buildings表,如下插入语句:

INSERT INTO buildings(building_name,address)
VALUES('海南大厦','海口市国兴大道1234号'),
('万达水城','海口市大同路1200号');

第四步, 将一些数据插入到rooms表,如下插入语句:

INSERT INTO rooms(room_name,building_no)
VALUES('Amazon',1),
('War Room',1),
('Office of CEO',1),
('Marketing',2),
('Showroom',2);

第五步, 删除编号为2的建筑物:

DELETE FROM buildings WHERE building_no = 2;

查找受MySQL ON DELETE CASCADE操作影响的表的技巧

  用示例数据库(testdb,因为上面两个表是建立在testdb数据库之上的)中的CASCADE删除规则查找与建筑表相关联的表。

USE information_schema;

SELECT
table_name
FROM
referential_constraints
WHERE
constraint_schema = 'testdb'
AND referenced_table_name = 'buildings'
AND delete_rule = 'CASCADE'

MySQL-DELECT JOIN语句

功能介绍:来从多个表中删除数据。

MySQL允许DELETE语句中使用INNER JOIN子句来从表中删除和另一个表中的匹配的行记录。

从符合指定条件的T1和T2表中删除行记录

实例:从符合指定条件的T1和T2表中删除行记录

DELETE T1, T2
FROM T1
INNER JOIN T2 ON T1.key = T2.key    #T1.key = T2.key指定了将被删除的T1和T2表之间的匹配行记录的条件。
WHERE condition              #WHERE子句中的条件确定T1和T2表中要被删除的行记录。

MySQL DELETE与INNER JOIN子句

对关联其他表进行删除

使用DELETE ... INNER JOIN语句删除t2表中的ref=1的行记录:

DELETE t1 , t2 FROM t1
INNER JOIN
t2 ON t2.ref = t1.id
WHERE
t1.id = 1;

MySQL DELETE与LEFT JOIN子句

DELETE语句中使用LEFT JOIN子句删除表(左表)中没有与其他表(右表)中的匹配的行记录。

第一步:使用DELETE语句与LEFT JOIN子句来清理客户数据。

DELETE customers
FROM customers
LEFT JOIN
orders ON customers.customerNumber = orders.customerNumber
WHERE
orderNumber IS NULL; 第二步:通过查询没有任何订单的客户,使用以下查询来验证删除: SELECT
c.customerNumber,
c.customerName,
orderNumber
FROM
customers c
LEFT JOIN
orders o ON c.customerNumber = o.customerNumber
WHERE
orderNumber IS NULL;

MySQL-删除数据(DELECT)的更多相关文章

  1. MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  2. 关于mysql 删除数据后物理空间未释放(转载)

    转自 关于mysql 删除数据后物理空间未释放(转载) - NETDATA - 博客园http://www.cnblogs.com/shawnloong/archive/2013/02/07/2908 ...

  3. Mysql删除数据后磁盘空间未释放的解决办法【转】

    转自 Mysql删除数据后,磁盘空间未释放的解决办法 - 今日头条(TouTiao.com)http://toutiao.com/a6303087712678412546/?tt_from=mobil ...

  4. MySQL删除数据后磁盘空间的释放情况【转】

    OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE TABLE 是指对表进行优化.如果已经删除 ...

  5. MySQL删除数据几种情况以及是否释放磁盘空间【转】

    MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table tabl ...

  6. 关于mysql 删除数据后(.MYD,MYI)物理空间未释放

    关于mysql 删除数据后物理空间未释放 OPTIMIZE TABLE 当您的库中删除了大量的数据后,您可能会发现数据文件尺寸并没有减小.这是因为删除操作后在数据文件中留下碎片所致.OPTIMIZE ...

  7. 十、MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  8. RDS for MySQL 删除数据后空间没有减少处理方法

    公司的程序和数据库部署在阿里云上,数据库使用的是阿里云的RDS,这天,经理在开发群中发了一个信息: 您的RDS实例rm********0oq的磁盘在过去一周平均使用率已超过80.%,建议您对实例规格进 ...

  9. php MySQL 删除数据表

    MySQL 删除数据表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失. 语法 以下为删除MySQL数据表的通用语法: DROP TA ...

  10. Mysql 删除数据表的三种方式详解

    用法: 1.当你不再需要该表时, 用 drop; 2.当你仍要保留该表,但要删除所有记录时, 用 truncate; 3.当你要删除部分记录或者有可能会后悔的话, 用 delete. 删除强度:dro ...

随机推荐

  1. sql server update+select(子查询修改)20190304

    if OBJECT_ID('tempdb..##t2') is not null drop table ##t2;create table ##t2( a int, b int, c datetime ...

  2. 浅谈FFT(快速博立叶变换)&学习笔记

    0XFF---FFT是啥? FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform),它根据离散傅氏变换的奇.偶.虚.实等 特性,对离散傅立叶变换的算法进行改进 ...

  3. l5-repository基本使用

    一.安装 composer require prettus/l5-repository 二.Model层:Warehouse.php <?php namespace App\Model; use ...

  4. html css笔记 -度一

    """浏览器 shell 内核外表 内心 IE tridentFirefox Geckogoogle chrome webkit/blinksafari webkitop ...

  5. jz2440开发板烧写裸板

    前提:手头没有openjtag,电脑上没有并口, 实现方法:jlink下载,nor上的uboot下载 关键点是用jlink下载uboot 1,使用jlink进行烧写,其中注意的是jlink只能烧写no ...

  6. dsu+树链剖分+树分治

    dsu,对于无修改子树信息查询,并且操作支持undo的问题 暴力dfs,对于每个节点,对所有轻儿子dfs下去,然后再消除轻儿子的影响 dfs重儿子,然后dfs暴力恢复轻儿子们的影响,再把当前节点影响算 ...

  7. java获取类的全类名----类名.class.getName()的作用是获取这个类的全类名

    类名.class.getName()的作用是获取这个类的全类名

  8. POJ-2239 Selecting Courses,三维邻接矩阵实现,钻数据空子。

    Selecting Courses Time Limit: 1000MS   Memory Limit: 65536K       Description It is well known that ...

  9. oracle 互锁的sql查询

    SELECT DECODE(request, 0, 'Holder: ', 'Waiter: ') || sid sess,       id1,       id2,       lmode,    ...

  10. MySQL-Transfer2.2发布

    http://dinglin.iteye.com/blog/1888640 Transfer 2.2发布.下载地址 版本说明 1.  基于版本 Percona-5.5.31 ,简单用法是先安装好官方或 ...