案例技巧---mysql连表查询

mysql> drop table student;
Query OK, 0 rows affected (0.01 sec)
 
mysql> create table student(
    -> Sno int(10) NOT NULL COMMENT '学号',
    -> Sname varchar(16) NOT NULL COMMENT '姓名',
    -> Ssex char(2) NOT NULL COMMENT '性别',
    -> Sage tinyint(2)  NOT NULL default '0' COMMENT '学生年龄',
    -> Sdept varchar(16)  default NULL  COMMENT '学生所在系别', 
    -> PRIMARY KEY  (Sno) ,
    -> key index_Sname (Sname)
    -> ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;
Query OK, 0 rows affected (0.02 sec)
 
mysql> 
mysql> create table course(
    -> Cno int(10) NOT NULL COMMENT '课程号',
    -> Cname varchar(64) NOT NULL COMMENT '课程名',
    -> Ccredit tinyint(2) NOT NULL COMMENT '学分',
    -> PRIMARY KEY  (Cno) 
    -> ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=UTF8;
Query OK, 0 rows affected (0.00 sec)
 
mysql> 
mysql> 
mysql> CREATE TABLE `SC` (
    ->    SCid int(12) NOT NULL auto_increment COMMENT '主键',
    ->   `Cno` int(10) NOT NULL COMMENT '课程号',
    ->   `Sno` int(10) NOT NULL COMMENT '学号',
    ->   `Grade` tinyint(2) NOT NULL COMMENT '学生成绩',
    ->   PRIMARY KEY  (`SCid`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
Query OK, 0 rows affected (0.01 sec)
 
mysql> 
mysql> show tables;
+------------------+
| Tables_in_oldboy |
+------------------+
| course           |
| sc               |
| student          |
| test             |
+------------------+
4 rows in set (0.00 sec)
 
mysql> INSERT INTO student values(0001,'宏志','男',30,'计算机网络');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student values(0002,'王硕 ','男',30,'computer application');
Query OK, 1 row affected, 1 warning (0.00 sec)
 
mysql> INSERT INTO student values(0003,'oldboy','男',28,'物流管理');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student values(0004,'脉动','男',29,'computer application');
Query OK, 1 row affected, 1 warning (0.00 sec)
 
mysql> INSERT INTO student values(0005,'oldgirl','女',26,'计算机科学与技术');
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO student values(0006,'莹莹','女',22,'护士');
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from student;
+-----+---------+------+------+--------------------------+
| Sno | Sname   | Ssex | Sage | Sdept                    |
+-----+---------+------+------+--------------------------+
|   1 | 宏志    | 男   |   30 | 计算机网络               |
|   2 | 王硕    | 男   |   30 | computer applica         |
|   3 | oldboy  | 男   |   28 | 物流管理                 |
|   4 | 脉动    | 男   |   29 | computer applica         |
|   5 | oldgirl | 女   |   26 | 计算机科学与技术         |
|   6 | 莹莹    | 女   |   22 | 护士                     |
+-----+---------+------+------+--------------------------+
6 rows in set (0.00 sec)
 
mysql> INSERT INTO course values(1001,'Linux中高级运维',3);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO course values(1002,'Linux高级架构师',5);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO course values(1003,'MySQL高级Dba',4);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO course values(1004,'Python运维开发',4);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO course values(1005,'Java web开发',3);
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from course;                               
+------+----------------------+---------+
| Cno  | Cname                | Ccredit |
+------+----------------------+---------+
| 1001 | Linux中高级运维      |       3 |
| 1002 | Linux高级架构师      |       5 |
| 1003 | MySQL高级Dba         |       4 |
| 1004 | Python运维开发       |       4 |
| 1005 | Java web开发         |       3 |
+------+----------------------+---------+
5 rows in set (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0001,1001,4);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade) values(0001,1002,3);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0001,1003,1);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0001,1004,6);
Query OK, 1 row affected (0.00 sec)
 
mysql> ---
    -> INSERT INTO SC(Sno,Cno,Grade)  values(0002,1001,3);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-
INSERT INTO SC(Sno,Cno,Grade)  values(0002,1001,3)' at line 1
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0002,1002,2);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0002,1003,2);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0002,1004,8);
Query OK, 1 row affected (0.00 sec)
 
mysql> 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0003,1001,4);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0003,1002,4);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0003,1003,2);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0003,1004,8);
Query OK, 1 row affected (0.00 sec)
 
mysql> 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0004,1001,1);
Query OK, 1 row affected (0.01 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0004,1002,1);
Query OK, 1 row affected (0.01 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0004,1003,2);
Query OK, 1 row affected (0.01 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0004,1004,3);
Query OK, 1 row affected (0.00 sec)
 
mysql> 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0005,1001,5);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0005,1002,3);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0005,1003,2);
Query OK, 1 row affected (0.00 sec)
 
mysql> INSERT INTO SC(Sno,Cno,Grade)  values(0005,1004,9);
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from sc;
+------+------+-----+-------+
| SCid | Cno  | Sno | Grade |
+------+------+-----+-------+
|    1 | 1001 |   1 |     4 |
|    2 | 1002 |   1 |     3 |
|    3 | 1003 |   1 |     1 |
|    4 | 1004 |   1 |     6 |
|    5 | 1002 |   2 |     2 |
|    6 | 1003 |   2 |     2 |
|    7 | 1004 |   2 |     8 |
|    8 | 1001 |   3 |     4 |
|    9 | 1002 |   3 |     4 |
|   10 | 1003 |   3 |     2 |
|   11 | 1004 |   3 |     8 |
|   12 | 1001 |   4 |     1 |
|   13 | 1002 |   4 |     1 |
|   14 | 1003 |   4 |     2 |
|   15 | 1004 |   4 |     3 |
|   16 | 1001 |   5 |     5 |
|   17 | 1002 |   5 |     3 |
|   18 | 1003 |   5 |     2 |
|   19 | 1004 |   5 |     9 |
+------+------+-----+-------+
19 rows in set (0.00 sec)
 
mysql> select student.Sno,student.Sname,course.Cname,SC.Grade from student,course,SC where student.Sno=SC.Sno and course.Cno=SC.Cno;
+-----+---------+----------------------+-------+
| Sno | Sname   | Cname                | Grade |
+-----+---------+----------------------+-------+
|   1 | 宏志    | Linux中高级运维      |     4 |
|   3 | oldboy  | Linux中高级运维      |     4 |
|   4 | 脉动    | Linux中高级运维      |     1 |
|   5 | oldgirl | Linux中高级运维      |     5 |
|   1 | 宏志    | Linux高级架构师      |     3 |
|   2 | 王硕    | Linux高级架构师      |     2 |
|   3 | oldboy  | Linux高级架构师      |     4 |
|   4 | 脉动    | Linux高级架构师      |     1 |
|   5 | oldgirl | Linux高级架构师      |     3 |
|   1 | 宏志    | MySQL高级Dba         |     1 |
|   2 | 王硕    | MySQL高级Dba         |     2 |
|   3 | oldboy  | MySQL高级Dba         |     2 |
|   4 | 脉动    | MySQL高级Dba         |     2 |
|   5 | oldgirl | MySQL高级Dba         |     2 |
|   1 | 宏志    | Python运维开发       |     6 |
|   2 | 王硕    | Python运维开发       |     8 |
|   3 | oldboy  | Python运维开发       |     8 |
|   4 | 脉动    | Python运维开发       |     3 |
|   5 | oldgirl | Python运维开发       |     9 |
+-----+---------+----------------------+-------+
19 rows in set (0.00 sec)
 
参考信息:
 其他查询:子查询,join,union,多表关联查询,分组,having。 
原文地址:https://www.cnblogs.com/liuqiang0/p/8528005.html