读书频道 > 网站 > 网页设计 > MySQL入门很简单
18.3.2 增加中间表
12-07-31    叶孤城
收藏    我要投稿   

本文所属图书 > MySQL入门很简单

本书从初学者的角度出发,由浅入深,循序渐进地介绍了MySQL数据库应用与开发的相关知识。书中提供了大量操作MySQL数据库的示例,还提供了大量实例和上机实践内容,供读者演练。本书共分5篇。第1篇介绍数据库的基...立即去当当网订购
有时需要经常查询某两个表中的几个字段。如果经常进行联表查询,会降低MySQL数据库的查询速度。对于这种情况,可以建立中间表来提高查询速度。本小节将为读者介绍增加中间表的方法。
 
先分析经常需要同时查询哪几个表中的哪些字段。然后将这些字段建立一个中间表,并将原来那几个表的数据插入到中间表中,之后就可以使用中间表来进行查询和统计了。
 
【示例18-7】 下面有个学生表student和分数表score。这两个表的结构如下:
 
mysql> DESC student; 
+----------------+----------------+---------+------
-+-------------+----------+ 
| Field       | Type      | Null   | Key | Default   | Extra  | 
+----------------+----------------+---------+------
-+-------------+----------+ 
| id         | int(10)      | NO   | PRI | NULL    |       | 
| name      | varchar(20) | NO   | MUL | NULL    |       | 
| sex        | varchar(4)  | YES  |     | NULL    |       | 
| birth       | year(4)     | YES  | MUL | NULL    |       | 
| department | varchar(20) | YES  |      | NULL    |       | 
| address    | varchar(50) | YES  |     | NULL    |       | 
+----------------+----------------+---------+------
-+-------------+----------+ 
6 rows in set (0.03 sec) 
 
mysql> DESC score; 
+-----------+----------------+---------+-------+-
------------+-----------------------+ 
| Field   | Type       | Null  | Key  | Default
| Extra            | 
+-----------+----------------+---------+-------+
-------------+-----------------------+ 
| id      | int(10)     | NO   | PRI  | NULL    |
auto_increment  | 
| stu_id  | int(10)     | NO   | MUL | NULL   
|                | 
| c_name | varchar(20) | YES  |     | NULL    
|                | 
| grade   | int(10)     | YES  |     | NULL  
|                | 
+-----------+----------------+---------+-------+--
-----------+-----------------------+ 
4 rows in set (0.03 sec)
实际中经常要查学生的学号、姓名和成绩。根据这种情况可以创建一个temp_score表。temp_score表中存储3个字段,分别是id、name和grade。CREATE语句执行如下:
 
mysql> CREATE TABLE temp_score(id INT NOT NULL, 
    -> name VARCHAR(20) NOT NULL, 
    -> grade FLOAT 
    -> ); 
Query OK, 0 rows affected (0.00 sec)
然后从student表和score表中将记录导入到temp_score表中。INSERT语句如下:
 
INSERT INTO temp_score SELECT student.id, student.name, score.grade 
FROM student, score WHERE student.id=score.stu_id ;
将这些数据插入到temp_score表中以后,可以直接从temp_score表中查询学生的学号、姓名和成绩。这样就省去了每次查询时进行表连接。这样可以提高数据库的查询速度。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站