MYSQL数据库MySQL中join语句的基本使用教程及其字段对性能的影响
《MYSQL数据库MySQL中join语句的基本使用教程及其字段对性能的影响》要点: MYSQL应用join语句的根本使用 MYSQL应用SQL(MySQL) JOIN 用于根据两个或多个表中的字段之间的关系,从这些表中获得数据. MYSQL应用JOIN 通常与 ON 关键字搭配使用,根本语法如下: MYSQL应用... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona MYSQL应用下面以最常见的两表连接来阐明 MySQL JOIN 的用法,关于多表 JOIN 请参见《MySQL JOIN 多表》. MYSQL利用MySQL JOIN 分类 MYSQL应用JOIN 依照功能大致分为如下三类:
MYSQL应用关于 MySQL FULL JOIN 全连接 MYSQL应用MySQL 没有提供 SQL 标准中的 FULL JOIN(全连接):两个表记录都取出,而不管彼此是否有对应记录.要办理此问题,可以使用 UNION 关键字来合并 LEFT JOIN 与 RIGHT JOIN,达到模拟 FULL JOIN 的目的. MYSQL利用MySQL INNER JOIN MYSQL应用INNER JOIN 用于取得两个表中存在连接匹配关系的记载.下面是两个原始数据表: MYSQL利用 MYSQL应用article 表中文章的所属用户是通过 uid 这个字段与 user 表关联起来的.通过观察数据不难发现,对于 uid=3 的用户,并没有颁发任何文章;而文章中 aid=4 却无法在 uid 表中找到对应记录(可能是该用户被删除而其所属的文章却被保留了下来). MYSQL利用我们列出所用文章与用户一一对应的数据. MYSQL利用SELECT … INNER JOIN … ON 语句如下: MYSQL应用
SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid
MYSQL应用返回查询成果如下: MYSQL利用 MYSQL应用对付 INNER JOIN,等同与下面的 SQL 语句: MYSQL利用
SELECT article.aid,user.username FROM article,user WHERE article.uid = user.uid
MYSQL利用CROSS JOIN MYSQL利用CROSS JOIN 即交叉连接,在不指定 ON 条件下: MYSQL应用
SELECT article.aid,user.username FROM article CROSS JOIN user
MYSQL应用得到的成果是被连接的两个数据表的乘积,即笛卡尔积. MYSQL应用实际上,在 MySQL 中(仅限于 MySQL) CROSS JOIN 与 INNER JOIN 的表示是一样的,在不指定 ON 条件得到的结果都是笛卡尔积,反之取得两个表完全匹配的结果. MYSQL应用INNER JOIN 与 CROSS JOIN 可以省略 INNER 或 CROSS 症结字,因此下面的 SQL 效果是一样的: MYSQL利用平板视图打印? MYSQL利用
... FROM table1 INNER JOIN table2
... FROM table1 CROSS JOIN table2
... FROM table1 JOIN table2
MYSQL利用 MYSQL利用先来看一下示例代码: MYSQL利用建utf-8编码的表 t1: MYSQL应用
CREATE TABLE IF NOT EXISTS `t1` (
`name` varchar(50) NOT NULL DEFAULT '',KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
MYSQL应用随便插入些数据,数量大一点,后面实验成果更清晰,偷个懒,构造随机字符串插入语句 MYSQL应用
insert into t1(name)
select concat(
char(round((rand())*25)+97),char(round((rand())*25)+65),char(round((rand())*25)+97),char(round((rand())*25)+65)
)
MYSQL应用每次执行插入一条记载,用你熟悉的脚本(python,php,shell等都行)写个循环,执行一万次以上. MYSQL应用将该表复制成一个新表t2,删除一部分数据,1000条左右即可.(保举使用phpMyAdmin) MYSQL利用再将t2复制为t3,并将字段改为gb2312编码. MYSQL应用使用一个left join语句,写一个语句,查出t2/t3比t1少了哪些记载. MYSQL利用语句很简单,如下: MYSQL应用
SELECT SQL_NO_CACHE t1.name,t2.name
FROM t1
LEFT JOIN t2 ON t1.name = t2.name
WHERE t2.name IS NULL
LIMIT 0,30
MYSQL应用注意参加 SQL_NO_CACHE,禁用mysql缓存. MYSQL应用先看编码一致的t2表,phpMyAdmin里执行成果: MYSQL应用显示行 0 - 29 ( 1,129 总计,查询花费 0.0010 秒) MYSQL应用
SELECT SQL_NO_CACHE t1.name,t3.name
FROM t1
LEFT JOIN t3 ON t1.name = t3.name
WHERE t2.name IS NULL
LIMIT 0,30
MYSQL应用phpMyAdmin执行成果: MYSQL应用显示行 0 - 29 ( 30 总计,查询消费 0.1871 秒) MYSQL利用查询语句解释: MYSQL利用 《MYSQL数据库MySQL中join语句的基本使用教程及其字段对性能的影响》是否对您有启发,欢迎查看更多与《MYSQL数据库MySQL中join语句的基本使用教程及其字段对性能的影响》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |