MYSQL多表查询事例

1.order by 排序

mysql> select * from xin order by id;

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

| id   | name     |

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

|    1 | lilie    |

|    2 | tianjin  |

|    3 | shanghai |

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

2.按照升序排列

mysql> select * from xin order by id asc;

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

| id   | name     |

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

|    1 | lilie    |

|    2 | tianjin  |

|    3 | shanghai |

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

3.按降序排列

mysql> select * from xin order by id desc;

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

| id   | name     |

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

|    3 | shanghai |

|    2 | tianjin  |

|    1 | lilie    |

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

---------------------------------------------

create table student(

Son 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 (Son),

key index_Sname(Sname)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

create table course(

Cno int(10) NOT NULL COMMENT ‘课程号‘,

Cname varchar(64) NOT NULL COMMENT ‘课程名‘,

Ccredit tinyint(10) NOT NULL COMMENT ‘学分‘,

PRIMARY KEY (Cno)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

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=latin1;

insert into student values (0001,‘宏志‘,‘男‘,30,‘计算机网络‘);

insert into student values (0002,‘王硕‘,‘男‘,30,‘computer application‘);

insert into student values (0003,‘oldboy‘,‘男‘,28,‘物流管理‘);

insert into student values(0004,‘脉动‘,‘男‘,29,‘computer application‘);

insert into student values(0005,‘oldgirl‘,‘女‘,26,‘计算机科学与技术‘);

insert into student values(0006,‘莹莹‘,‘女‘,22,‘护士‘);

insert into course values(1001,‘Linux中高级运维‘,3);

insert into course values(1002,‘Linux高级架构师‘,5);

insert into course values(1003,‘MySQL高级Dba‘,4);

insert into course values(1004,‘Python运维开发‘,4);

insert into course values(1005,‘Java web开发‘,3);

insert into sc (Sno,Cno,Grade) values (0001,1001,4);

insert into sc (Sno,Cno,Grade) values (0001,1002,3);

insert into sc (Sno,Cno,Grade) values (0001,1003,1);

insert into sc (Sno,Cno,Grade) values (0001,1004,6);

insert into sc (Sno,Cno,Grade) values (0002,1001,3);

insert into sc (Sno,Cno,Grade) values (0002,1002,2);

insert into sc (Sno,Cno,Grade) values (0002,1003,2);

insert into sc (Sno,Cno,Grade) values (0002,1004,8);

insert into sc (Sno,Cno,Grade) values (0003,1001,4);

insert into sc (Sno,Cno,Grade) values (0003,1002,4);

insert into sc (Sno,Cno,Grade) values (0003,1003,2);

insert into sc (Sno,Cno,Grade) values (0003,1001,8);

insert into sc (Sno,Cno,Grade) values (0004,1001,1);

insert into sc (Sno,Cno,Grade) values (0004,1002,1);

insert into sc (Sno,Cno,Grade) values (0004,1003,2);

insert into sc (Sno,Cno,Grade) values (0004,1004,3);

insert into sc (Sno,Cno,Grade) values (0005,1001,5);

insert into sc (Sno,Cno,Grade) values (0005,1002,3);

insert into sc (Sno,Cno,Grade) values (0005,1003,2);

insert into sc (Sno,Cno,Grade) values (0005,1004,9);

--------------------------------------------

4.多表查询

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 |

|   2 | 王硕  | Linux中高级运维 |     3 |

|   3 | oldboy  | Linux中高级运维 |     4 |

|   3 | oldboy  | Linux中高级运维 |     8 |

|   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 |

|   4 | 脉动  | Python运维开发   |     3 |

|   5 | oldgirl | Python运维开发   |     9 |

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

20 rows in set (0.06 sec)

5.多表查询按照Sno排序

mysql> select student.Sno,student.Sname,course.Cname,sc.Grade from student,course,sc where student.Sno=sc.Sno and course.Cno=sc.Cno order by Sno;

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

| Sno | Sname   | Cname                | Grade |

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

|   1 | 宏志  | Linux中高级运维 |     4 |

|   1 | 宏志  | Python运维开发   |     6 |

|   1 | 宏志  | MySQL高级Dba       |     1 |

|   1 | 宏志  | Linux高级架构师 |     3 |

|   2 | 王硕  | Linux中高级运维 |     3 |

|   2 | 王硕  | Python运维开发   |     8 |

|   2 | 王硕  | MySQL高级Dba       |     2 |

|   2 | 王硕  | Linux高级架构师 |     2 |

|   3 | oldboy  | Linux高级架构师 |     4 |

|   3 | oldboy  | Linux中高级运维 |     8 |

|   3 | oldboy  | Linux中高级运维 |     4 |

|   3 | oldboy  | MySQL高级Dba       |     2 |

|   4 | 脉动  | MySQL高级Dba       |     2 |

|   4 | 脉动  | Linux高级架构师 |     1 |

|   4 | 脉动  | Linux中高级运维 |     1 |

|   4 | 脉动  | Python运维开发   |     3 |

|   5 | oldgirl | Python运维开发   |     9 |

|   5 | oldgirl | MySQL高级Dba       |     2 |

|   5 | oldgirl | Linux高级架构师 |     3 |

|   5 | oldgirl | Linux中高级运维 |     5 |

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

20 rows in set (0.01 sec)

6.多表查询按照倒叙排列

mysql> select student.Sno,student.Sname,course.Cname,sc.Grade from student,course,sc where student.Sno=sc.Sno and course.Cno=sc.Cno order by student.Sno DESC;

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

| Sno | Sname   | Cname                | Grade |

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

|   5 | oldgirl | Python运维开发   |     9 |

|   5 | oldgirl | MySQL高级Dba       |     2 |

|   5 | oldgirl | Linux高级架构师 |     3 |

|   5 | oldgirl | Linux中高级运维 |     5 |

|   4 | 脉动  | MySQL高级Dba       |     2 |

|   4 | 脉动  | Linux高级架构师 |     1 |

|   4 | 脉动  | Linux中高级运维 |     1 |

|   4 | 脉动  | Python运维开发   |     3 |

|   3 | oldboy  | Linux高级架构师 |     4 |

|   3 | oldboy  | Linux中高级运维 |     8 |

|   3 | oldboy  | Linux中高级运维 |     4 |

|   3 | oldboy  | MySQL高级Dba       |     2 |

|   2 | 王硕  | Linux中高级运维 |     3 |

|   2 | 王硕  | Python运维开发   |     8 |

|   2 | 王硕  | MySQL高级Dba       |     2 |

|   2 | 王硕  | Linux高级架构师 |     2 |

|   1 | 宏志  | Linux中高级运维 |     4 |

|   1 | 宏志  | Python运维开发   |     6 |

|   1 | 宏志  | MySQL高级Dba       |     1 |

|   1 | 宏志  | Linux高级架构师 |     3 |

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

20 rows in set (0.00 sec)

7.多表查询按照正序排列

mysql> select student.Sno,student.Sname,course.Cname,sc.Grade from student,course,sc where student.Sno=sc.Sno and course.Cno=sc.Cno order by student.Sno ASC;

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

| Sno | Sname   | Cname                | Grade |

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

|   1 | 宏志  | Linux中高级运维 |     4 |

|   1 | 宏志  | Python运维开发   |     6 |

|   1 | 宏志  | MySQL高级Dba       |     1 |

|   1 | 宏志  | Linux高级架构师 |     3 |

|   2 | 王硕  | Linux中高级运维 |     3 |

|   2 | 王硕  | Python运维开发   |     8 |

|   2 | 王硕  | MySQL高级Dba       |     2 |

|   2 | 王硕  | Linux高级架构师 |     2 |

|   3 | oldboy  | Linux高级架构师 |     4 |

|   3 | oldboy  | Linux中高级运维 |     8 |

|   3 | oldboy  | Linux中高级运维 |     4 |

|   3 | oldboy  | MySQL高级Dba       |     2 |

|   4 | 脉动  | MySQL高级Dba       |     2 |

|   4 | 脉动  | Linux高级架构师 |     1 |

|   4 | 脉动  | Linux中高级运维 |     1 |

|   4 | 脉动  | Python运维开发   |     3 |

|   5 | oldgirl | Python运维开发   |     9 |

|   5 | oldgirl | MySQL高级Dba       |     2 |

|   5 | oldgirl | Linux高级架构师 |     3 |

|   5 | oldgirl | Linux中高级运维 |     5 |

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

20 rows in set (0.00 sec)

时间: 2024-09-29 23:54:12

MYSQL多表查询事例的相关文章

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'

MySQL多表查询回顾

----------------------siwuxie095 MySQL 多表查询回顾 以客户和联系人为例(一对多) 1.内连接 /*内连接写法一*/ select * from t_customer c,t_linkman l where c.cid=l.clid /*内连接写法二(inner 可以省略不写)*/ select * from t_customer c inner join t_linkman l on c.cid=l.clid 2.左外连接 /*左外连接(outer 可以省

mysql多表查询方法(left join(左连接),right join (右连接),inner join (内连接)的区别)

表A记录如下:  aID aNum  1 a20050111  2 a20050112  3 a20050113  4 a20050114  5 a20050115  表B记录如下:  bID bName  1 2006032401  2 2006032402  3 2006032403  4 2006032404  8 2006032408  创建这两个表SQL语句如下:  CREATE TABLE a  aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,  a

MySQL information_schema表查询导致内存暴涨

case:下面的一条sql语句,导致mysql实例内存暴涨: select * from tables where table_name not in(select table_name from partitions group by table_name having count(*)>1 ); mysql 5.5, 1w+的innodb表. 下面看下调查的结果: 1.  sql的执行情况以及内存分配:   step1: 构造information_schema.tables临时表 1.1 

MYSQL 连表查询及别名用法

MYSQL连表查询是两个表之间的查询或者更多表之间查询,通过外键的方式查询所有的数据,在查询过程中产生字段的重复,为了区分这种情况数据库设计别名,有的表很长,也可以用别名. 1,连表查询 INNER JOIN ,LEFT JOIN,RIGHT JOIN INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录.LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录.RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表

4 - MySQL:多表查询

MySQL:多表查询 一,介绍 本节主题 多表连接查询 复合条件连接查询 子查询 准备工作 #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int

记一次mysql多表查询(left jion)优化案例

一次mysql多表查询(left jion)优化案例 在新上线的供需模块中,发现某一个查询按钮点击后,出不来结果,找到该按钮对应sql手动执行,发现需要20-30秒才能出结果,所以服务端程序判断超时,故先不显示结果 以下是对这条查询的优化记录 1 数据库配置 数据库配置:4C8G 主表数据:3W+ 2 sql语句 提取sql语句,简化如下 SELECT taba.id, taba.title, taba.type, taba.end_time, tabb.username, tabc.orgna

python开发mysql:单表查询&多表查询

一 单表查询,以下是表内容 1 一 having 过滤 2 1.1 having和where 3 select * from emp where id > 15; 4 解析过程;from > where 找到数据 > 分组(没有默认一个组)> select 打印 where是出结果之前 5 select * from emp having id > 15; 6 解析过程;from > where 找到数据(没有约束条件,就是整个表)) > 分组(没有默认一个组)&

mysql联表查询,使用phpStudy自带的

一.内联结.外联结.左联结.右联结的含义及区别在SQL标准中规划的(Join)联结大致分为下面四种:1.内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结.2.外联结:分为外左联结和外右联结.左联结A.B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录.右联结A.B表的结果和左联结B.A的结果是一样的,最后出来的记录集会包括表B的全部记录.具体如下: Select l