mysql只有一个终端 如何添加数据_Mysql使用终端操作数据库

CREATE TABLE classes(

id INT PRIMARY KEY AUTO_INCREMENT COMMENT'班级表id',

name VARCHAR(20) COMMENT'班级名称'

);

运行DESCRIBE classes;

+-------+-------------+------+-----+---------+----------------+

| Field | Type        | Null | Key | Default | Extra          |

+-------+-------------+------+-----+---------+----------------+

| id    | int(11)     | NO   | PRI | NULL    | auto_increment |

| name  | varchar(20) | YES  |     | NULL    |                |

+-------+-------------+------+-----+---------+----------------+

CREATE TABLE student(

id INT PRIMARY KEY AUTO_INCREMENT COMMENT'学生表id',

name VARCHAR(20) COMMENT'学生姓名',

class_id int COMMENT'教室id,这张表中的class_id是classes表中id的值',

FOREIGN KEY (class_id) REFERENCES classes(id)

);

//FOREIGN :外来  REFERENCES:应用,参考

运行DESCRIBE student;

+----------+-------------+------+-----+---------+----------------+

| Field    | Type        | Null | Key | Default | Extra          |

+----------+-------------+------+-----+---------+----------------+

| id       | int(11)     | NO   | PRI | NULL    | auto_increment |

| name     | varchar(20) | YES  |     | NULL    |                |

| class_id | int(11)     | YES  | MUL | NULL    |                |

+----------+-------------+------+-----+---------+----------------+

班级插入数据:

INSERT INTO CLASSES (name) VALUES ('一班');

INSERT INTO CLASSES (name) VALUES ('二班');

INSERT INTO CLASSES (name) VALUES ('三班');

INSERT INTO CLASSES (name) VALUES ('四班');

查看数据 SELECT * FROM classes;

+----+------+

| id | name |

+----+------+

|  1 | 一班 |

|  2 | 二班 |

|  3 | 三班 |

|  4 | 四班 |

+----+------+

学生插入数据:

INSERT INTO student (name,class_id) VALUES ('小赵',1);

INSERT INTO student (name,class_id) VALUES ('小钱',2);

INSERT INTO student (name,class_id) VALUES ('小孙',3);

INSERT INTO student (name,class_id) VALUES ('小李',4);

查看数据 SELECT * FROM student;

+----+------+----------+

| id | name | class_id |

+----+------+----------+

|  1 | 小赵 |        1 |

|  2 | 小钱 |        2 |

|  3 | 小孙 |        3 |

|  4 | 小李 |        4 |

+----+------+----------+

若是像插入班级为5的数据 如:

INSERT INTO student (name,class_id) VALUES ('小周',5);

报错: Cannot add or update a child row

我们删除正在被学生表引用的'四班'试试:

DELETE classes WHERE name = '四班';

出现:Cannot delete or update a parent row:不能删除主表中的行

我们先删除学生表中的 '小李'从而解除班级中'四班'的外键约束,再来删除'四班'(因为小李引用了四班)

DELETE FROM student WHERE name = '小李';

再次删除classes表中的'四班';

DELETE FROM classes WHERE name = '四班';

最后: SELECT * FROM classes;

+----+------+

| id | name |

+----+------+

|  1 | 一班 |

|  2 | 二班 |

|  3 | 三班 |

+----+------+

'四班'被成功删除!

总结:

1.主表中没有的数据,在附表中,是不可以使用的.

2.主表中记录的数据现在正在被附表所引用,那么主表中正在被引用的数据不可以被删除

3.若要想删除,先将附表中的数据删除在删除主表数据

4.对于外键约束大家可以联想 省,市 来进行联想 (市必须要依赖于省,只要省还有一个市在引用,那么就不可以删除省,要不然市就没有省了. 那么我们想删除省,必须要将该省下所有的市全部删除之后,才可以删除这个省)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值