免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2173 | 回复: 3
打印 上一主题 下一主题

请教select和join [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-17 17:56 |只看该作者 |倒序浏览
不熟悉sql, 最近学习看到了join来查询多个表,
今天弄了弄dbdeginerfork,它生成的select语句虽然能查多个表,但是不知道怎么加入join,

一个简单的数据库:

  1. # shop.sql
  2. CREATE TABLE users (
  3.   user_id INTEGER   NOT NULL auto_increment,
  4.   username VARCHAR(20)   NOT NULL ,
  5.   user_addr VARCHAR(100)   NOT NULL   ,
  6. PRIMARY KEY(user_id));

  7. CREATE TABLE product (
  8.   product_id INTEGER   NOT NULL auto_increment,
  9.   product_name VARCHAR(20)   NOT NULL ,
  10.   product_info VARCHAR(100)   NOT NULL   ,
  11. PRIMARY KEY(product_id)  );

  12. CREATE INDEX product_index ON product (product_name);

  13. CREATE TABLE orders (
  14.   order_id INTEGER   NOT NULL auto_increment,
  15.   users_user_id INTEGER   NOT NULL ,
  16.   product_id INTEGER   NOT NULL ,
  17.   order_date TIME   NOT NULL   ,
  18. PRIMARY KEY(order_id)    ,
  19.   FOREIGN KEY(product_id)
  20.     REFERENCES product(product_id),
  21.   FOREIGN KEY(users_user_id)
  22.     REFERENCES users(user_id));

  23. CREATE INDEX orders_FKIndex1 ON orders (product_id);
  24. CREATE INDEX orders_FKIndex2 ON orders (users_user_id);

  25. CREATE INDEX IFK_Rel_01 ON orders (product_id);
  26. CREATE INDEX IFK_Rel_02 ON orders (users_user_id);


复制代码




  1. # select sql

  2. SELECT *
  3. FROM orders orders, product product, users users
  4. WHERE orders.product_id=product.product_id
  5. AND orders.users_user_id=users.user_id;
  6. 或者
  7. SELECT orders.order_id, product.product_name,
  8. product.product_info, users.username, users.user_addr
  9. FROM orders orders, product product, users users
  10. WHERE orders.product_id=product.product_id
  11. AND orders.users_user_id=users.user_id;

复制代码


这个语句能达到我的目的,但是这个和"join"的区别是什么呢?性能上区别如何?


请教了!

论坛徽章:
0
2 [报告]
发表于 2007-11-17 22:19 |只看该作者
看mysql手册先

论坛徽章:
0
3 [报告]
发表于 2007-11-17 23:15 |只看该作者
手册曰

  1. INNER JOIN和,(逗号)在语义上是等价的
复制代码


但是不是很理解, 意思是用inner join和上面的sql是一样的?

手册下面又说mysql对inner join的优化,更加难理解。。。

论坛徽章:
0
4 [报告]
发表于 2007-11-18 14:23 |只看该作者
后面是讲如何对inner join优化,而不是告诉你inner join比 ',' 更优
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP