Mysql 中文参考手册(摘录5) --MySQL操作之获取数据库和表信息

如果你忘记了数据库或表的名字,或者表的结构(例如,表的列名叫什么),MySQL通过一些语句,提供了关于数据库和表的信息,解决了这些问题。

SHOW DATABASES, 这会列出数据库。要找到当前正选择的数据库,使用DATABASE()方法:

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie  |
+------------+

如果你还没有任何数据库,结果是NULL。

要找到默认数据库包含的表(例如,当你对一个表的名字不太确定时),使用这个语句:

mysql> SHOW TABLES;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| event               |
| pet                 |
+---------------------+

在输出中,列的名字为Tables_in_db_name,其中db_name部分为当前数据库名字。

如果你想看一个表的结构,DESCRIBE语句是有用的,它显示一个表的每一个列的信息:

mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(20) | YES  |     | NULL    |       |
| owner   | varchar(20) | YES  |     | NULL    |       |
| species | varchar(20) | YES  |     | NULL    |       |
| sex     | char(1)     | YES  |     | NULL    |       |
| birth   | date        | YES  |     | NULL    |       |
| death   | date        | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

 Field表示列名,Type表示对应列的数据类型,NULL表示此列是否NULL值,Key代表此列是否为索引,Default指定列的默认值。Extra显示关于列的指定信息。如果一个列是被创建为AUTO_INCREMENT,则这个值将为auto_increment,而不是空。

例子,创建表后显示以下结果:

mysql> 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 |
+---------+--------+-------+

查询特定列中的最大值

SELECT MAX(article) AS article FROM shop;
+---------+
| article |
+---------+
| 4       |
+---------+

 简单的子查询:

SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop);
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0004    | D      | 19.95 |
+---------+--------+-------+

也可以通过以下方式来达到同样的效果

SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.price < s2.price
WHERE s2.article IS NULL;
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1;

每个分组里的最大值

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 |
+---------+-------+

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值