MySQL——多表操作(二)操作关联表(2)添加数据

        在实际开发中,最常见的关联关系就是多对一关系。接下来,在表 student 和表grade 中添加外键约束来建立两个表的关联关系。具体语句如下:

mysql> alter table student add constraint Fk_ID foreign key(gid) REFERENCES grade (id);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

        语句执行成功后,查看外键约束是否成功添加,查询结果如下:

mysql> show create table student;
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                                                 |
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `sid` int NOT NULL,
  `sname` varchar(36) DEFAULT NULL,
  `gid` int NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `Fk_ID` (`gid`),
  CONSTRAINT `Fk_ID` FOREIGN KEY (`gid`) REFERENCES `grade` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

        从查询结果可以看出,student 表的外键约束已经成功添加。此时表 student 和表grade 之间是多对一的关系。因为外键列只能插人参照列存在的值,所以如果要为两个表添加数据,就需要先为主表 grade 添加数据,具体语句如下:

mysql> INSERT INTO grade (id,name)VALUES (1,'软件一班');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO grade (id,name)VALUES (2,'软件二班');
Query OK, 1 row affected (0.00 sec)

        在上述语句中,添加的主键id为1和2,由于 student 表的外键与 grade 表的主键关联,因此在为 student 表添加数据时,gid 的值只能是1或2,不能使用其他的值,具体语句如下:

mysql> INSERT INTO student (sid,sname,gid)VALUES(1,'小明',1);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO student (sid,sname,gid)VALUES(2,'小红',1);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO student (sid,sname,gid)VALUES(3,'小刚',2);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO student (sid,sname,gid)VALUES(4,'小华',2);
Query OK, 1 row affected (0.00 sec)

        上述语句执行成功后,两个表之间的数据就具有关联性。假如要查询软件一班有酶些学生,首先需要査询软件一班的id,然后根据这个id 在 student 表中查询该班级有哪酶学生,具体步骤如下。

(1)在 grade表中查询出班级名称为“软件一班”的 id,具有语句如下:

SELECT id FRoM grade WHERE name='软件一班';

        上述语句执行成功后,结果如下:

mysql> SELECT id FRoM grade WHERE name='软件一班';
+----+
| id |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

        从上述结果可以看出,软件一班的 id 为1。(2)在 student表中,查询 gid-1的学生,即为软件一班的学生,具体语句如下:

SELECT sname FROM student WHERE gid=1;

        上述语句执行成功后,结果如下:

mysql> SELECT sname FROM student WHERE gid=1;
+--------+
| sname  |
+--------+
| 小明   |
| 小红   |
+--------+
2 rows in set (0.00 sec)

        从上述结果可以看出,软件一班只有两个学生,一个是小明,一个是小红。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值