Select 字段列表 --⽤用于指定输出字段 [ INTO 新表 ] --将检索结果存储到⼀一个新的数据库表中 [FROM 数据源]--⽤用于指定检索的数据来源 [ WHERE 搜索条件 ] --⽤用于指定对记录的过滤条件 [ Group by 分组表达式 ] --对检索到的记录进⾏行分组 [ Having 搜索表达式 ] --也⽤用于指定对记录的过滤条 件,但要与Group By⼦子句⼀一块儿使⽤用 [ORDER By 排序表达式[ASC|DESC]] --对检 索到的记录进⾏行排序处理
(1) ALL:默认关键字,将返回符合条件的所有记录,并且容许在查询结果中包含重复记录。sql
Select ALL work_id From worker 数据库
(2) TOP关键字: TOP关键字⽤用于限制查询结果显⽰示的⾏行数,其能够返回表中前n⾏行或 前一个百分数的数据。 函数
SELECT TOP 3 (PERCENT) * from Worker order by worker_id desc spa
(3) DISTINCT:⽤用于去除查询的结果集中重复的记录
SELECT DISTINCT Ware_Name from Ware code
SQL提供了内链接、外链接、交叉链接、多表 链接等多种链接⽅方式 orm
1> 内部联接查询 排序
两表链接查询: --显⽰示职⼯工信息及每一个职⼯工对应的货物销售状况 Inner join 语句: select 字段列表 from 表1 inner join 表2 on 主表.主键 = 从表.外键 SELECT *(word_id,…) FROM Worker INNER JOIN SellON Worker.Work_id=Sell.Work_Id (where word.id='500' 带条件) Where 语句 select 字段列表 from 表1,表2 where 主表.主键 = 从表.外键 select * from worker ,sell where worker.work_id=sell.work_id 多表链接查询: SELECT 字段列表 FROM 表1 , 表2 ,表3 Where 表1.字段=表2.字段 and 表2.字段=表3.字段
2> 外部联接查询 it
SELECT 字段列表 FROM 表1 <FULL/LEFT/RIGHT> OUTER JOIN 表2 ON 条件表达式 io
向左链接 :返回左表全部行,及左表中每行在右表中的匹配行,若无,返回NULLform
向右链接:返回右表全部行,及左表中每行在右表中的匹配行,若无,返回NULL
全外链接:返回左右表全部行,及左表中每行在右表中的匹配行,若无,返回NULL
select *from sell right outer join ware on ware.ware_id = sell.ware_id
交叉链接:两个表的记录交叉组合,无论有无匹配,左表每一行和右表每一行均结合,其结果中的记录⾏行数=左表⾏行数*右表⾏行数
select *from worker cross join sell
若是⼀一个Select语句可以返回⼀一个单值或⼀一列值,并嵌套在⼀一 个Select、Insert、Update或Delete语句中,则称之为⼦子查询或内层查询
格式⼀:
Select * from 表名 where 字段名 关系运算符 (⼦子查询)
select *from sell where sell_price = (select max(sell_price) from sell)
格式二:
Select * from 表名 where 字段名 [not] in (⼦子查询)
select * from sell where word_id in (select work_id form worker where position = ‘副经理
格式三:
Select * from 表名 where [not] exists (⼦子查询)
原字段名 [ AS ] ‘字段别名’ Use CPMSgoSELECT Work_id as '职⼯工编号',Work_name '职⼯工姓名',Sex '性别' from Worker
SELECT * from Sell ORDER BY Sell_Price DESC(降序)/ASC升序
Sum() 返回字段和 Avg() 返回字段平均值
Max() 返回字段最大值 Min() 返回字段最小值 Count() 返回字段数量
select sum(sell_price) from sell
例子: 1,统计男女职业的总人数 select sex as '性别',count (*) as '人数' from worker group by sex 2,统计每种货物的货物编号、名称及销售总计 ps: 货物名称和销售总计不在⼀一个表中,因此该题须要使⽤用多表查询、集合函数及分组汇总。 select a.ware_id,ware_name,sum(sell_price) from ware a inner join sell b on a.ware_id=b.ware_id group by a.ware_id,ware_name
做用:用来计算总计或进⾏行分组⼩小计,总计值或⼩小计值将做为附加新⾏行出如今检索结果中,⼀通常⽤用在WHERE⼦子句以后。
select *from worker compute count(work_id)
compute by
以前统计男女的至关于创个新表,表示sex和count,若要分别展现男,女职员的全部的信息,而且统计他们的数量
select * from worker order by sex computer count(word_id) by sex 注意:使用computer by前必须有order by字句,并且先后的的字段必须相同 order by sex 将男女分开两个表显示数据,而且在表下还有他们的cnt 数量