查询数据表中的记录(SELECT)

时间:2009-02-27 16:06:00 

摘要:SELECT 语句可以帮助我们从MySQL中取出数据。SELECT 大概是 SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。本节介绍Select语句关于查询的最基本功能。

除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是 SELECT 语句的用途,即帮助取出数据。SELECT 大概是 SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。本节介绍Select语句关于查询的最基本功能。

SELECT 语句的语法如下:

SELECT selection_list 选择哪些列

FROM table_list 从何处选择行

WHERE primary_constraint 行必须满足什么条件

GROUP BY grouping_columns 怎样对结果分组

HAVING secondary_constraint 行必须满足的第二条件

ORDER BY sorting_columns 怎样对结果排序

LIMIT count 结果限定

注意:所有使用的关键词必须精确地以上面的顺序给出。例如,一个HAVING子句必须跟在GROUP BY子句之后和ORDER BY子句之前。

除了词“SELECT”和说明希望检索什么的 column_list 部分外,语法中的每样东西都是可选的。有的数据库还需要 FROM 子句。MySQL 有所不同,它允许对表达式求值而不引用任何表。

普通查询

SELECT最简单的形式是从一张表中检索每样东西:

mysql> SELECT * FROM pet;

其结果为:

+----------+--------+---------+------+------------+------------+

| name     | owner  | species | sex  | birth      | death      |

+----------+--------+---------+------+------------+------------+

| Fluffy   | Harold | cat     | f    | 1993-02-04 | NULL       |

| Claws    | Gwen   | cat     | m    | 1994-03-17 | NULL       |

| Buffy    | Harold | dog     | f    | 1989-05-13 | NULL       |

| Chirpy   | Gwen   | bird    | f    | 1998-09-11 | NULL       |

| Fang     | Benny  | dog     | m    | 1990-08-27 | NULL       |

| Bowser   | Diane  | dog     | m    | 1990-08-31 | 1995-07-29 |

| Whistler | Gwen   | bird    | NULL | 1997-12-09 | NULL       |

| Slim     | Benny  | snake   | m    | 1996-04-29 | NULL       |

| Puffball | Diane  | hamster | f    | 1999-03-30 | NULL       |

+----------+--------+---------+------+------------+------------+

查询特定行:

你能从你的表中只选择特定的行。例如,如果你想要验证你对Bowser的出生日期所做的改变,像这样精选Bowser的记录:

mysql> SELECT * FROM pet WHERE name = "Bowser";

其结果为:

+--------+-------+---------+------+------------+------------+

| name   | owner | species | sex  | birth      | death      |

+--------+-------+---------+------+------------+------------+

| Bowser | Diane | dog     | m    | 1990-08-31 | 1995-07-29 |

+--------+-------+---------+------+------------+------------+

你可以对照前一个例子来验证。

查询特定列

如果你不想要看到你的表的整个行,就命名你感兴趣的列,用逗号分开。例如,如果你想要知道你的动物什么时候出生的,精选name和birth列:

mysql> SELECT name, birth FROM pet where owner="Gwen";

其结果为:

+----------+------------+

| name     | birth      |

+----------+------------+

| Claws    | 1994-03-17 |

| Chirpy   | 1998-09-11 |

| Whistler | 1997-12-09 |

+----------+------------+

进行表达式计算

前面的多数查询通过从表中检索值已经产生了输出结果。MySQL 还允许作为一个公式的结果来计算输出列的值。表达式可以简单也可以复杂。下面的查询求一个简单表达式的值(常量)以及一个涉及几个算术运算符和两个函数调用的较复杂的表达式的值。例如,计算Browser生活的天数:

mysql> SELECT death-birth FROM pet WHERE name="Bowser";

其结果是:

+-------------+

| death-birth |

+-------------+

|       49898 |

+-------------+

由于MySQL允许对表达式求值而不引用任何表。所以也可以这样使用:

mysql>select (2+3*4.5)/2.5;

其结果为:

+---------------+

| (2+3*4.5)/2.5 |

+---------------+

|         6.200 |

+---------------+

 


条件查询

不必每次查询都返回所有的行记录,你能从你的表中只选择特定的行。为此你需要使用WHERE或者HAVING从句。HAVING从句与WHERE从句的区别是,HAVING表达的是第二条件,在与其他从句配合使用,显然不能在WHERE子句中的项目使用HAVING。因此本小节紧介绍WHERE从句的使用,HAVING从句的使用方法类似。另外WHERE从句也可以实现HAVING从句的绝大部分功能。

标签:查询,数据库,表,select
0
投稿

猜你喜欢

  • Python I/O与进程的详细讲解

    2022-11-27 14:07:15
  • Python实现的简单万年历例子分享

    2021-01-09 14:56:54
  • Javascript优化五大原则

    2007-10-30 13:49:00
  • python3人脸识别的两种方法

    2021-07-09 23:12:52
  • 基于canvas的二维码邀请函生成插件

    2024-04-17 10:40:53
  • 浏览器tab的设计

    2008-08-11 13:03:00
  • Python 恐龙跑跑小游戏实现流程

    2021-10-23 19:42:59
  • Python爬虫实例——scrapy框架爬取拉勾网招聘信息

    2023-01-20 19:06:45
  • bootstrapValidator表单验证插件学习

    2024-04-10 13:53:34
  • JS页内查找关键词的高亮显示

    2013-07-18 21:13:54
  • web开发以HTML为中心

    2008-02-13 08:14:00
  • Python字符串中查找子串小技巧

    2022-04-16 10:58:04
  • python进阶之协程你了解吗

    2022-11-04 19:04:48
  • Mysql巧用join优化sql的方法详解

    2024-01-16 01:19:34
  • sqlserver中去除字符串中连续的分隔符的sql语句

    2012-06-06 20:07:39
  • 保姆级官方yolov7训练自己的数据集及项目部署详解

    2023-09-16 14:19:45
  • Python getattr()函数使用方法代码实例

    2022-03-04 03:30:51
  • vue实现简单全选和反选功能

    2024-05-09 09:29:47
  • JS截取与分割字符串常用技巧总结

    2024-02-26 13:48:45
  • Python代码实现删除一个list里面重复元素的方法

    2022-06-02 15:31:02
  • asp之家 网络编程 m.aspxhome.com