SQL select

Select

SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。

语法格式

  • SELECT 列名称 FROM 表名称

为什么要禁止在select中禁止使用通配符*

  1. 会查询出不必要的字段,CPU cost,IO cost,Cost,宽带消耗都会增加

  2. 解析字段。数据库需要根据数据字典生成一个语法树,然后根据语法生成执行计划。如果使用select * 数据库需要解析更多的 对象,字段,权限,属性相关,在SQL语句复杂,硬解析较多的情况下,会对数据库造成沉重的负担。(SQL语句软解析时不会有影响)

  3. 影响数据库自动重写优化SQL

使用举例

简单查询举例

查询表的所有列内容

select * from table


查询指定列的内容

select column1, column2 from table


过滤重复值 distinct

select distinct column from table


条件过滤 where

select column from table where column operator value

例如

  • SELECT * FROM Persons WHERE City=’Beijing’

注意:SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。


and or 运算符

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

例如

  • SELECT * FROM Persons WHERE FirstName=’Thomas’ AND LastName=’Carter’

  • SELECT * FROM Persons WHERE firstname=’Thomas’ OR lastname=’Carter’


order by 排序

ORDER BY 语句用于根据指定的列对结果集进行排序。

默认按照升序对记录进行排序。DESC 按照降序对记录进行排序

例如

  1. 以字母顺序显示公司名称
  • SELECT Company, OrderNumber FROM Orders ORDER BY Company
  1. 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber)
  • SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
  1. 以逆字母顺序显示公司名称
  • SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
  1. 逆字母顺序显示公司名称,并以数字顺序显示顺序号
  • SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
limit
1
SELECT * FROM table  LIMIT rows | offset

例如

  1. 分页读取数据
1
SELECT * FROM table  LIMIT perPage OFFSET (page * perPage)

日期查询

查询日期范围

select * from table where date_filed Between date1 And date2

例如

  1. 根据创建日期查询

SELECT * from table where created_date Between ‘2013-01-01’ And ‘2013-01-31’

比较日期

select * from table where date_filed >|=|< date

例如

  1. 查询某一天以后的数据

SELECT * from table where created_date >= ‘2013-01-01’