(删)删除指定数据表(库)
DROP TABLE 表名; # 如不用USE进入库中,则需加上数据库名
MySQL [chuid]> show tables;
+-----------------+
| Tables_in_chuid |
+-----------------+
| chd |
+-----------------+
1 row in set (0.00 sec)
MySQL [chuid]> drop table chuid.chd; # 删除指定数据库中的表
Query OK, 0 rows affected (0.11 sec)
MySQL [chuid]> show tables; # 查看数据表
Empty set (0.00 sec)
(删)删除指定的数据库
DROP DATABASE (数据库名);
MySQL [mysql]> show databases; # 查看数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| chuid |
| mysql |
| mysql_chd |
| mysql_chuid |
| performance_schema |
+--------------------+
6 rows in set (0.00 sec)
MySQL [mysql]> drop database mysql_chd; # 删除指定的数据库
Query OK, 1 row affected (0.02 sec)
MySQL [mysql]> show databases; # 查看数据库
+--------------------+
| Database |
+--------------------+
| information_schema |
| chuid |
| mysql |
| mysql_chuid |
| performance_schema |
+--------------------+
5 rows in set (0.00 sec)
(删)在数据表中删除指定的数据记录
DELETE FROM 表名 [WHERE 条件表达式];
MySQL [mysql_chuid]> select * from student;
+----+-------+------+
| id | name | sex |
+----+-------+------+
| 1 | chd | man |
| 2 | chuid | man |
| 3 | anivd | man |
+----+-------+------+
3 rows in set (0.00 sec)
MySQL [mysql_chuid]> delete from student where id=3; # 删除指定表id=3的内容
Query OK, 1 row affected (0.04 sec)
MySQL [mysql_chuid]> select * from student; # 查询student表中所有的数据信息
+----+-------+------+
| id | name | sex |
+----+-------+------+
| 1 | chd | man |
| 2 | chuid | man |
+----+-------+------+
2 rows in set (0.00 sec)
(删)删除字段
ALTER TABLE表名 DROP 字段名;
MySQL [mysql_chuid]> select * from student; # 查询student表中所有的数据信息
+----+-------+------+
| id | name | sex |
+----+-------+------+
| 1 | chd | man |
| 2 | chuid | man |
+----+-------+------+
2 rows in set (0.00 sec)
MySQL [mysql_chuid]> alter table student drop sex; # 删除student表中的sex字段
Query OK, 0 rows affected (0.44 sec)
Records: 0 Duplicates: 0 Warnings: 0
MySQL [mysql_chuid]> select * from student; # 查询student表中所有的数据信息
+----+-------+
| id | name |
+----+-------+
| 1 | chd |
| 2 | chuid |
+----+-------+
2 rows in set (0.00 sec)
(删)删除被其它表关联的主表
数据表之间经常存在外键关联的情况,这时如果直接删除父表,会破坏数据表的完整性,也会删除失败。
* 删除父表有以下两种方法:
1)先删除与它关联的子表,再删除父表;但是这样会同时删除两个表中的数据。
2)将关联表的外键约束取消,再删除父表;适用于需要保留子表的数据,只删除父表的情况。
例:如何取消关联表的外键约束并删除主表
MySQL [mysql_chuid]> create table class_1(id int(5) PRIMARY KEY,name char(10),sex int(5)); # 创建表class_1
Query OK, 0 rows affected (0.04 sec)
MySQL [mysql_chuid]> DESC class_1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(5) | NO | PRI | NULL | |
| name | char(10) | YES | | NULL | |
| sex | int(5) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.04 sec)
# 创建表class_2,并添加外键约束
MySQL [mysql_chuid]> create table class_2(id int(5) PRIMARY KEY,name varchar(10),claID int(10),grades float,CONSTRAINT FK_cla1_cla2 FOREIGN KEY(claID) REFERENCES class_1(id));
Query OK, 0 rows affected (0.28 sec)
# 由SQL运行结果可以看出,表class_2为子表,具有FK_cla1_cla2的外键约束;class_1为父表,其主键id被子表class_1所关联
MySQL [mysql_chuid]> show create table class_2\G; # 查看表class_2的外键约束
*************************** 1. row ***************************
Table: class_2
Create Table: CREATE TABLE `class_2` (
`id` int(5) NOT NULL,
`name` varchar(10) DEFAULT NULL,
`claID` int(10) DEFAULT NULL,
`grades` float DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_cla1_cla2` (`claID`),
CONSTRAINT `FK_cla1_cla2` FOREIGN KEY (`claID`) REFERENCES `class_1` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
MySQL [mysql_chuid]> ALTER table class_2 DROP FOREIGN KEY FK_cla1_cla2; # 解除子表class_2的外键约束(取消class_1和class_2之间的关联)
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0
MySQL [mysql_chuid]> DROP table class_1; # 删除父表class_1
Query OK, 0 rows affected (0.01 sec)