这里以班级和学生为例来进行演示。
很显然,一个班级可以有很多个学生,但是一个学生只能属于一个班级。所以,学生表应该是主表,班级表为子表。
创建学生表
CREATE TABLE `student` ( `ID` int(22) NOT NULL, `StuName` varchar(22) DEFAULT NULL, `StuAge` int(22) DEFAULT NULL, `Cid` int(22) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入几条学生数据
mysql> INSERT INTO `student` VALUES ('1', '张三', '66', '3'); mysql> INSERT INTO `student` VALUES ('2', '李四', '77', '3'); mysql> INSERT INTO `student` VALUES ('4', '王五', '25', '4');
创建班级表
CREATE TABLE `class` ( `ID` int(22) NOT NULL, `ClassName` varchar(22) DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入几条班级数据
mysql> INSERT INTO `class` VALUES ('1', 'python'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO `class` VALUES ('2', 'linux'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO `class` VALUES ('3', 'java'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO `class` VALUES ('4', 'php'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO `class` VALUES ('5', 'devops'); Query OK, 1 row affected (0.00 sec)
需求,查询学生所对应的班级
sql如下
mysql> select s.StuName,s.StuAge,c.className from student s INNER JOIN class c ON s.Cid=c.ID; +---------+--------+-----------+ | StuName | StuAge | className | +---------+--------+-----------+ | 张三 | 66 | java | | 李四 | 77 | java | | 王五 | 25 | php | +---------+--------+-----------+ 3 rows in set (0.00 sec)