Select
SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
语法格式
- SELECT 列名称 FROM 表名称
为什么要禁止在select中禁止使用通配符*
会查询出不必要的字段,CPU cost,IO cost,Cost,宽带消耗都会增加
解析字段。数据库需要根据数据字典生成一个语法树,然后根据语法生成执行计划。如果使用select * 数据库需要解析更多的 对象,字段,权限,属性相关,在SQL语句复杂,硬解析较多的情况下,会对数据库造成沉重的负担。(SQL语句软解析时不会有影响)
影响数据库自动重写优化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 按照降序对记录进行排序
例如
- 以字母顺序显示公司名称
- SELECT Company, OrderNumber FROM Orders ORDER BY Company
- 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber)
- SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
- 以逆字母顺序显示公司名称
- SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
- 逆字母顺序显示公司名称,并以数字顺序显示顺序号
- SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
limit
1 | SELECT * FROM table LIMIT rows | offset |
例如
- 分页读取数据
1 | SELECT * FROM table LIMIT perPage OFFSET (page * perPage) |
日期查询
查询日期范围
select * from table where date_filed Between date1 And date2
例如
- 根据创建日期查询
SELECT * from table where created_date Between ‘2013-01-01’ And ‘2013-01-31’
比较日期
select * from table where date_filed >|=|< date
例如
- 查询某一天以后的数据
SELECT * from table where created_date >= ‘2013-01-01’