单表查询

select 的语法

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}
    FROM tableexpression [, ...][IN外部数据库]
    [WHERE...]
    ]
[GROUP BY...]
    ]
[HAVING...]
    ]
[ORDER BY...]
    ]
[WITH OWNERACCESS OPTION]

SELECT 语句具有以下几个部分:

部分 说明 
predicate 下列谓词之一:ALL, DISTINCT, DISTINCTROW, 或 TOP.您可用谓词来限制返回的记录数量。如果没有指定谓词,则默认值为 ALL。 
* 从特定的表中指定全部字段。 
table 表的名称,此表中包含已被选择的记录的字段。 
field1, field2 字段的名称,该字段包含了您要获取的数据。如果数据包含多个字段,则按列举顺序依次获取它们。 
alias1, alias2 名称,用来作列标头,以代替 table.中原有的列名。 
tableexpression 表的名称,这些表包含要获取的数据。 
Externaldatabase 数据库的名称,该数据库包含 tableexpression 中的表,如果这些表不在当前数据库中的话。 


说明
为完成此运算,Microsoft Jet 数据库引擎会搜索指定的表,抽出所选择的列,并选择满足条件的行,并按指定的顺序对选出的行排序,或将它们分组。

SELECT 语句不会更改数据库的中的数据。

SELECT通常是 SQL 语句.大部分 SQL 语句或者是 SELECT 语句,或者是 SELECT...INTO 语句。

SELECT 语句的最短的语法是:

SELECT fields FROM table

可以用一个星号 (*) 选取表中所有字段。下例选择了雇员表中的全部字段:

SELECT * FROM Employees;


如果 FROM 子句中有多个表包含字段名,则字段之前为表名称和 .(点)操作符。在以下示例中,「部门」字段将出现在雇员表及超级用户表中。SQL 语句将从雇员表和超级用户表来选择部门:

SELECT Employees.Department, Supervisors.SupvName

FROM Employees INNER JOIN Supervisors

WHERE Employees.Department = Supervisors.Department;


当 Recordset 对象被创建时, Microsoft Jet 数据库引擎把表的字段名作为 Recordset对象中的 Field 对象命名。 如果想要一个不同的字段名,或想要一个不是由生成字段的表达式导出的名,则使用 AS 保留字。在下例所得到的 Recordset 对象中用 Birth 标题将返回的 Field 对象命名:

SELECT BirthDate

AS Birth FROM Employees;


无论何时使用合计函数或查询,而且该查询返回含糊的或重复的 Field 对象名称,都必须用 AS 子句来提供 Field 对象的替代名称。在以下示例所得到的 Recordset 对象中用 HeadCount 标题将返回的 Field 对象命名:

SELECT COUNT(EmployeeID)

AS HeadCount FROM Employees;


可使用 SELECT 语句中的其它子句进一步限制和组织已返回的数据。若需更多信息,参见所用子句的主题帮助
-- 查询数据  ---
select 
  * 
from
  product ;

--  指定字段的方式 效率比  * 的方式要快
select 
  pro_name,
  pro_number,
  pro_city 
from
  product ;

-- 过滤数据 where 
select 
  * 
from
  product 
where pro_number > 100 ;

-- and   并且    生成地是深圳  ,并且产品数量大于40 
select 
  * 
from
  product 
where pro_city = '深圳' 
  and pro_number > 40 ;

-- or 或者   产品价格大于 100  或者  产品的数量大于 40
select 
  * 
from
  product 
where pro_price > 100 
  or pro_number > 40 ;

--  规定要返回的记录的数目  分页处理 SQL Server  top   , MySQL  LIMIT ,   Oracle  ROWNUM
--  limit 5 取前几条数据     limit 2 ,15  从3 开始 往后去 15条记录    从 0 开始不包括2本身   0,1,2  
select 
  * 
from
  product 
where pro_number > 40 
limit 2, 15 ;

--  模糊查询 LIKE    % 一个或者多个字符  皮% 以皮开头   %皮 皮结尾    %皮%  包含皮
select 
  * 
from
  product 
where pro_name like "%帽子%" ;

--  in  查询产品的生成地  是  邵阳  深圳  
select 
  * 
from
  product 
where pro_city in ("邵阳", "深圳") ;

-- 价格在  100 -200 之间  帽子    between 100 and  2000  有区间   
select 
  * 
from
  product 
where pro_name like "%帽子%" 
  and pro_price between 100 
  and 2000 ;

-- 别名
select 
  pro_name as '产品名称',
  pro_price as '产品价格' 
from
  product ;

--  根据产品的价格排序  从  低到高     order by  默认升序     desc降序
select 
  * 
from
  product 
order by pro_price desc,
  pro_date ;

--  去重复数据   SQL SELECT DISTINCT   和  group by 
--  每种类型的产品平均价格    分组  group by   
-- 为什么?  group by 目的  求平均值  最大值   最小值
-- 一般group by  和函数一起使用  ,但是函数可以单独使用
-- 查询语句中有 group by  那么  select  字段 可以包含哪些?  1 和聚合函数使用的字段   2 group by 的字段
-- where   HAVING  过滤数据   where 在分组之前过滤数据   HAVING 分组之后 过滤数据

-- 每种类型的产品平均价格 大于  100
select 
  avg(pro_price) as pro_pric_avg,
  pro_type 
from
  product 
group by pro_type 
having pro_pric_avg > 100 ;

--   每种类型的产品平均价格 大于  100(having)  而且产品必须是上架(where)
select 
  avg(pro_price) as pro_pric_avg,
  pro_type 
from
  product 
where pro_state = 2 
group by pro_type 
having pro_pric_avg > 100 ;

--   每种类型的产品平均价格 从高到底    group by    order by  
select 
  avg(pro_price) as pro_pric_avg,
  pro_type 
from
  product 
group by pro_type 
order by pro_pric_avg desc ;

-- 每种类型的产品平均价格 大于  100   从高到底 
select 
  avg(pro_price) as pro_pric_avg,
  pro_type 
from
  product 
group by pro_type 
having pro_pric_avg > 100 
order by pro_pric_avg desc ;

-- 产品必须是上架每种类型的产品平均价格 大于  100   从高到底
select 
  avg(pro_price) as pro_pric_avg,
  pro_type 
from
  product 
where pro_state = 2 
group by pro_type 
having pro_pric_avg > 100 
order by pro_pric_avg desc ;

--  产品必须是上架每种类型的产品平均价格 大于  100   从高到底  取前2条数据
select 
  avg(pro_price) as pro_pric_avg,
  pro_type 
from
  product 
where pro_state = 2 
group by pro_type 
having pro_pric_avg > 100 
order by pro_pric_avg desc 
limit 2 ;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值