本文主要向大家介绍了MySQL数据库的常用查询的例子Frommysqlapi,通过具体的实例让大家了解,希望对大家学习MySQL数据库有所帮助。

常用查询的例子

下面是一些学习如何用MySQL解决一些常见问题的例子。

一些例子使用数据库表“shop”,包含某个商人的每篇文章(物品号)的价格。假定每个商人的每篇文章有一个单独的固定价格,那么(物品,商人)是记录的主键。

你能这样创建例子数据库表:

CREATE TABLE shop (

article INT(4) UNSIGNED ZEROFILL DEFAULT ‘0000’ NOT NULL,

dealer CHAR(20) DEFAULT ” NOT NULL,

price DOUBLE(16,2) DEFAULT ‘0.00’ NOT NULL,

PRIMARY KEY(article, dealer));

INSERT INTO shop VALUES

(1,’A’,3.45),(1,’B’,3.99),(2,’A’,10.99),(3,’B’,1.45),(3,’C’,1.69),

(3,’D’,1.25),(4,’D’,19.95);

好了,例子数据是这样的:

SELECT * FROM shop

+———+——–+——-+

| article | dealer | price |

+———+——–+——-+

| 0001 | A | 3.45 |

| 0001 | B | 3.99 |

| 0002 | A | 10.99 |

| 0003 | B | 1.45 |

| 0003 | C | 1.69 |

| 0003 | D | 1.25 |

| 0004 | D | 19.95 |

+———+——–+——-+

8.3.1 列的最大值

“最大的物品号是什么?”

SELECT MAX(article) AS article FROM shop

+———+

| article |

+———+

| 4 |

+———+

8.3.2 拥有某个列的最大值的行

“找出最贵的文章的编号、商人和价格”

在ANSI-SQL中这很容易用一个子查询做到:

SELECT article, dealer, price

FROM shop

WHERE price=(SELECT MAX(price) FROM shop)

在MySQL中(还没有子查询)就用2步做到:

用一个SELECT语句从表中得到最大值。

使用该值编出实际的查询:

SELECT article, dealer, price

FROM shop

WHERE price=19.95

另一个解决方案是按价格降序排序所有行并用MySQL特定LIMIT子句只得到的第一行:

SELECT article, dealer, price

FROM shop

ORDER BY price DESC

LIMIT 1

注意:如果有多个最贵的文章( 例如每个19.95),LIMIT解决方案仅仅显示他们之一!

8.3.3 列的最大值:按组:只有值

“每篇文章的最高的价格是什么?”

SELECT article, MAX(price) AS price

FROM shop

GROUP BY article

+———+——-+

| article | price |

+———+——-+

| 0001 | 3.99 |

| 0002 | 10.99 |

| 0003 | 1.69 |

| 0004 | 19.95 |

+———+——-+

8.3.4 拥有某个字段的组间最大值的行

“对每篇文章,找出有最贵的价格的交易者。”

在ANSI SQL中,我可以用这样一个子查询做到:

SELECT article, dealer, price

FROM shop s1

WHERE price=(SELECT MAX(s2.price)

FROM shop s2

WHERE s1.article = s2.article)

在MySQL中,最好是分几步做到:

得到一个表(文章,maxprice)。见8.3.4 拥有某个域的组间最大值的行。

对每篇文章,得到对应于存储最大价格的行。

这可以很容易用一个临时表做到:

CREATE TEMPORARY TABLE tmp (

article INT(4) UNSIGNED ZEROFILL DEFAULT ‘0000’ NOT NULL,

price DOUBLE(16,2) DEFAULT ‘0.00’ 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,6,’0’),dealer) ), 7) AS dealer,

0.00+LEFT( MAX( CONCAT(LPAD(price,6,’0’),dealer) ), 6) AS price

FROM shop

GROUP BY article;

+———+——–+——-+

| article | dealer | price |

+———+——–+——-+

| 0001 | B | 3.99 |

| 0002 | A | 10.99 |

| 0003 | C | 1.69 |

| 0004 | D | 19.95 |

+———+——–+——-+

最后例子当然能通过在客户程序中分割连结的列使它更有效一点。

8.3.5 使用外键

不需要外键联结2个表。

MySQL唯一不做的事情是CHECK以保证你使用的键确实在你正在引用表中存在,并且它不自动从有一个外键定义的表中删除行。如果你象平常那样使用你的键值,它将工作得很好!

CREATE TABLE persons (

id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,

name CHAR(60) 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 |

+—-+———————+

| 1 | Antonio Paz |

| 2 | Lilliana Angelovska |

+—-+———————+

SELECT * FROM shirts;

+—-+———+——–+——-+

| id | style | color | owner |

+—-+———+——–+——-+

| 1 | polo | blue | 1 |

| 2 | dress | white | 1 |

| 3 | t-shirt | blue | 1 |

| 4 | dress | orange | 2 |

| 5 | polo | red | 2 |

| 6 | dress | blue | 2 |

| 7 | t-shirt | white | 2 |

+—-+———+——–+——-+

SELECT s.* FROM persons p, shirts s

WHERE p.name LIKE ‘Lilliana%’

AND s.owner = p.id

AND s.color <> ‘white’;

+—-+——-+——–+——-+

| id | style | color | owner |

+—-+——-+——–+——-+

| 4 | dress | orange | 2 |

| 5 | polo | red | 2 |

| 6 | dress | blue | 2 |

+—-+——-+——–+——-+

本文由职坐标整理并发布,了解更多内容,请关注职坐标数据库MySQL数据库频道!

mysql api查询例子_MySQL数据库:常用查询的例子Frommysqlapi相关推荐

  1. 阿里云 mysql 强制查主库_mysql数据库权限查询

    mysql数据库权限查询 云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越.稳定可靠.弹性扩展的IaaS(Infrastructure as a Servi ...

  2. 小白 MySQL数据库链接查询语句_MySQL数据库——连接查询

    今天将用 "手" 来教大家关于MySQL连接查询的知识! ============================================================= ...

  3. mysql数据库查询游戏_MySQL数据库高级查询和多表查询

    MySQL多表查询 添加练习表 -- 用户表(user) CREATE TABLE `user`( `id` INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户id( ...

  4. mysql数据基本指令_mysql数据库常用命令(详细)

    mysql数据库常用命令(详细) *************************************************** windows下mysql的启动与停止 启动MYSQL服务 n ...

  5. mysql开源内库_MySQL数据库(查询语句)

    用户  角色  权限 select * from students1:查询这个表里的数据 select ssex from students1:在这个表里面查询ssex(性别) select dist ...

  6. mysql搜索结果去重_mysql数据库去重查询

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. mysql频繁查询出错_Mysql数据库频繁查询错误解决方案

    TcpTimedWaitDelay和MaxUserPort设置 描述:确定 TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间.关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍 ...

  8. mysql制空快捷键_mysql数据库常用操作

    show variables; --查看所有系统变量select@@autocommit--会话级别的修改set autocommit=0;set @@autocommit=0;--全局修改set g ...

  9. Mysql数据库常用查询方法及演示(where条件查询、分页、排序等)

    Mysql数据库常用查询方法及演示 where条件查询的介绍 使用where条件查询可以对表中的数据进行筛选,条件成立的记录会出现在结果集中. where语句支持的运算符: 比较运算符 逻辑运算符 模 ...

  10. MySQL学习笔记04【数据库的查询操作、今日内容、表的约束】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

最新文章

  1. 多个sphinx配置文件合并
  2. [linux]ps结果计算行数
  3. 互联网业界7月三件大事
  4. python之简单爬虫(爬取豆瓣出版社)
  5. 如何使 FlashGet 正常合法 下载 Session 中的自定义文件链接呢? JSP/Servlet 实现!
  6. 基于Spring开发的DUBBO服务接口测试
  7. [转载] Java 语言中的实例初始化块 ( IIB) 详解
  8. JavaWeb EL表达式, JSTL标签及过滤器综合学习
  9. redis缓存队列+MySQL +php任务脚本定时批量入库
  10. Web Services的基本原理
  11. 什么软件可以测试电脑硬盘速度,硬盘速度测试软件
  12. 程序员请万分珍重你的第一份工作,否则后悔了概不负责
  13. web狗之xxm实体攻击
  14. 谷歌地图网页版_【软件】谷歌地球,带你看遍全球美景,快来神游吧Google Earth...
  15. C语言中getch()的用法
  16. SQL WEEK()函数
  17. 养生医学背景PPT模板
  18. length,length(),size()详解及区别
  19. (java)水果类(增删改查)
  20. nokia6android9,诺基亚6.1推送Android 9.0:Nokia 7.1 Plus更新马上就来

热门文章

  1. python异常捕获_Python-异常捕捉
  2. java加按钮_如何从零开始对接第三方登录(Java版):QQ登录和微博登录
  3. php有个qrcode类,一个PHP的QRcode类与大家分享
  4. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...
  5. SQL | 数据分析面试必备SQL语句+语法
  6. Python2寿命只剩一个月啦!还不快赶紧学起Python3酷炫到爆的新特性!
  7. 爬虫工程师是干什么的?你真的知道了吗?
  8. 爬取《哪吒》豆瓣短评,我得到了什么?
  9. 人脸识别(三)——源码放送。opencv人脸识别
  10. halcon从入门到精通pdf_机器视觉软件开发新人入门必看 --机器视觉软件开发学习路径...