mysql⽤于删除表中数据的关键字是_MySQL-删除数据
(DELECT)
数据库备份介绍:
数据库⼀旦删除数据,它就会永远消失。 因此,在执⾏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 f=t1.id
WHERE
t1.id= 1;
MySQL DELETE与LEFT JOIN⼦句
DELETE语句中使⽤LEFT JOIN⼦句删除表(左表)中没有与其他表(右表)中的匹配的⾏记录。
第⼀步:使⽤DELETE语句与LEFT JOIN⼦句来清理客户数据。
DELETE customers
FROM customers
LEFT JOIN
mysql中delete语句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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。