知识大全 MySQL中文参考手册-- 常用查询的例子

Posted

篇首语:成功需要付出代价,不成功需要付出更高的代价。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MySQL中文参考手册-- 常用查询的例子相关的知识,希望对你有一定的参考价值。

MySQL中文参考手册-- 常用查询的例子  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  下面是一些学习如何用MySQL解决一些常见问题的例子     一些例子使用数据库表 shop 包含某个商人的每篇文章(物品号)的价格 假定每个商人的每篇文章有一个单独的固定价格 那么(物品 商人)是记录的主键      你能这样创建例子数据库表   CREATE TABLE shop (   article INT( ) UNSIGNED ZEROFILL DEFAULT NOT NULL    dealer CHAR( )         DEFAULT    NOT NULL    price  DOUBLE( )       DEFAULT NOT NULL    PRIMARY KEY(article dealer));    INSERT INTO shop VALUES  ( A ) ( B ) ( A ) ( B ) ( C )   ( D ) ( D );    好了 例子数据是这样的     SELECT * FROM shop    + + + +  | article | dealer | price |  + + + +  |   | A   |  |  |   | B   |  |  |   | A   | |  |   | B   |  |  |   | C   |  |  |   | D   |  |  |   | D   | |  + + + +     列的最大值   最大的物品号是什么?     SELECT MAX(article) AS article FROM shop    + +  | article |  + +  |    |  + +     拥有某个列的最大值的行   找出最贵的文章的编号 商人和价格     在ANSI SQL中这很容易用一个子查询做到     SELECT article dealer price  FROM  shop  WHERE price=(SELECT MAX(price) FROM shop)    在MySQL中(还没有子查询)就用 步做到     用一个SELECT语句从表中得到最大值   使用该值编出实际的查询   SELECT article dealer price  FROM  shop  WHERE price=     另一个解决方案是按价格降序排序所有行并用MySQL特定LIMIT子句只得到的第一行     SELECT article dealer price  FROM  shop  ORDER BY price DESC  LIMIT     注意:如果有多个最贵的文章( 例如每个 ) LIMIT解决方案仅仅显示他们之一!      列的最大值 按组 只有值   每篇文章的最高的价格是什么?     SELECT article MAX(price) AS price  FROM  shop  GROUP BY article    + + +  | article | price |  + + +  |   |  |  |   | |  |   |  |  |   | |  + + +     拥有某个字段的组间最大值的行   对每篇文章 找出有最贵的价格的交易者     在ANSI SQL中 我可以用这样一个子查询做到     SELECT article dealer price  FROM  shop s   WHERE price=(SELECT MAX(s price)         FROM shop s          WHERE s article = s article)    在MySQL中 最好是分几步做到     得到一个表(文章 maxprice) 见 拥有某个域的组间最大值的行   对每篇文章 得到对应于存储最大价格的行   这可以很容易用一个临时表做到     CREATE TEMPORARY TABLE tmp (      article INT( ) UNSIGNED ZEROFILL DEFAULT NOT NULL       price  DOUBLE( )       DEFAULT NOT NULL);    LOCK TABLES article read;    INSERT INTO tmp SELECT article MAX(price) FROM shop GROUP BY article;    SELECT article dealer price FROM shop tmp  WHERE shop article=tmp articel AND shop price=tmp price;    UNLOCK TABLES;    DROP TABLE tmp;    如果你不使用一个TEMPORARY表 你也必须锁定 tmp 表      它能一个单个查询做到吗?     是的 但是只有使用我称之为 MAX CONCAT诡计 的一个相当低效的诡计     SELECT article       SUBSTRING( MAX( CONCAT(LPAD(price ) dealer) ) ) AS dealer     +LEFT(   MAX( CONCAT(LPAD(price ) dealer) ) ) AS price  FROM  shop  GROUP BY article;    + + + +  | article | dealer | price |  + + + +  |   | B   |  |  |   | A   | |  |   | C   |  |  |   | D   | |  + + + +    最后例子当然能通过在客户程序中分割连结的列使它更有效一点      使用外键  不需要外键联结 个表     MySQL唯一不做的事情是CHECK以保证你使用的键确实在你正在引用表中存在 并且它不自动从有一个外键定义的表中删除行 如果你象平常那样使用你的键值 它将工作得很好!     CREATE TABLE persons (    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT     name CHAR( ) NOT NULL     PRIMARY KEY (id)  );    CREATE TABLE shirts (    id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT     style ENUM( t shirt polo dress ) NOT NULL     color ENUM( red blue orange white black ) NOT NULL     owner SMALLINT UNSIGNED NOT NULL REFERENCES persons     PRIMARY KEY (id)  );    INSERT INTO persons VALUES (NULL Antonio Paz );    INSERT INTO shirts VALUES  (NULL polo blue LAST_INSERT_ID())   (NULL dress white LAST_INSERT_ID())   (NULL t shirt blue LAST_INSERT_ID());    INSERT INTO persons VALUES (NULL Lilliana Angelovska );    INSERT INTO shirts VALUES  (NULL dress orange LAST_INSERT_ID())   (NULL polo red LAST_INSERT_ID())   (NULL dress blue LAST_INSERT_ID())   (NULL t shirt white LAST_INSERT_ID());    SELECT * FROM persons;  + + +  | id | name        |  + + +  |  | Antonio Paz     |  |  | Lilliana Angelovska |  + + +    SELECT * FROM shirts;  + + + + +  | id | style  | color | owner |  + + + + +  |  | polo  | blue  |   |  |  | dress  | white |   |  |  | t shirt | blue  |   |  |  | dress  | orange |   |  |  | polo  | red  |   |  |  | dress  | blue  |   |  |  | t shirt | white |   |  + + + + +    SELECT s * FROM persons p shirts s   WHERE p name LIKE Lilliana%     AND s owner = p id    AND lor <> white ;    + + + + +  | id | style | color | owner |  + + + + +  |  | dress | orange |   |  |  | polo | red  |   |  |  | dress | blue  |   |  + + + + +   cha138/Article/program/MySQL/201311/29382

相关参考

知识大全 MySQL中文参考手册---MySQL 文件系统

MySQL中文参考手册---MySQL文件系统  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这

知识大全 MySQL中文参考手册---MySQL与标准的兼容性

MySQL中文参考手册---MySQL与标准的兼容性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 MySQL中文参考手册--- MySQL与标准的兼容性

MySQL中文参考手册---MySQL与标准的兼容性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 MySQL中文参考手册-- 创造并使用一个数据库

MySQL中文参考手册--创造并使用一个数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  既

知识大全 从一个MySQL的例子来学习查询语句[3]

从一个MySQL的例子来学习查询语句[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 从一个MySQL的例子来学习查询语句[2]

从一个MySQL的例子来学习查询语句[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 从一个MySQL的例子来学习查询语句[1]

从一个MySQL的例子来学习查询语句[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 OracleDataGuard常用维护命令参考手册

OracleDataGuard常用维护命令参考手册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 MYSQL 双机热备配置手册

MYSQL双机热备配置手册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!MYSQL双机热备配置手册

知识大全 spring技术手册上的一个java动态代理例子

  Java代码  publicinterfaceIHello  publicvoidhello(Stringname);    Java代码  publicclassHelloImplimpleme