這里以班級和學生為例來進行演示。
很顯然,一個班級可以有很多個學生,但是一個學生只能屬於一個班級。所以,學生表應該是主表,班級表為子表。
創建學生表
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)