select [ALL|DISTINCT] [TOP(
1:SELECT 语句 和FROM 语句
从Product 表中 更具goodId 取得 startMoney 字段 并将startMoney 赋值给变量 @price
SELECT @price = startMoneyFROMProductWHEREid = @goodsId
从Product 表中 更具goodId 取得 startMoney 字段 并将startMoney 赋值给变量 @price
SELECT startMoneyFROMProductWHEREid = @goodsId
select 哪一列 返回哪一列
SELECT startMoneyFROMProductWHEREid = 60
执行结果
注意:INFORMATION_SCHEMA 特定路径 可以查出数据库系统信息
查出来所有的表:
SELECT 列表由查询中SELECT查询中要求输出的列名组成
2:WHERE 子句
返回记录的限制条件 where 子句运算符
例子:
SELECT id , categoryIdFROMProductWHERE[state] <> 3AND productType &#61; &#64;typeAND convert(VARCHAR(10), productDate, 120) BETWEEN convert(VARCHAR(10), getdate(), 120) AND convert(VARCHAR(10), getdate() &#43; 3, 120)
上面使用了<> AND &#61; BETWEEN AND
简单点说&#xff1a;where 控制的是某个列的值要满足某种条件
3&#xff1a;ORDER BY 子句
order by
SELECT * --相同的state 按照电话号码降序排列FROM Employee ORDER BY state ,phoneNo DESC
小结一下&#xff1a;
1&#xff1a;select 控制查询结果
2&#xff1a;from 控制查询数据的源头&#xff08;哪个表&#xff09;
3&#xff1a;where&#xff1a;控制查询的条件&#xff08;满足什么样条件的数据&#xff09;
4&#xff1a;order by &#xff1a;控制查询结果的排序
4&#xff1a;使用GROUP BY 子句聚合数据
group by 和order by 很像
order by 是 单个 为单位进行排序
group&#xff1a;群 &#xff0c;组 group by 是以群&#xff0c;组&#xff0c;为单位进行排序 &#xff0c;输出结果也是 &#xff1a;一组只能占一个记录
先看&#xff1a;没有group by 的 搜索结果
使用了group by 之后 &#xff0c;group之后sum求和返回的是某一组的和 否则 返回所有列的和&#xff08;只有一个select的情况下&#xff09;
记住以下例子&#xff1a;
小结一下 select 的其中一项是对一组数据的一个处理结果。
比如 sum &#xff08;productID&#xff09;是对以employeeID分组的的结果 一个组的productid的相加和
注意&#xff1a;
1&#xff1a;使用GROUP BY 子句中&#xff0c;select 列表只有两种1&#xff1a;聚合列2&#xff1a;group by中的包括的列
2&#xff1a;反之 如果在select 列表中使用了聚合列 有两种选择&#xff1a;1&#xff1a;所有的列都必须是聚合列 2&#xff1a;必须得有order by 子句 &#xff0c;oder by 的列不要求是聚合列----也就是说不是聚合语句的必须包含在group by 里面
也可以基于多列分组&#xff1a;只需要在多列列名之间加逗号 即可
聚合函数
聚合函数常用于Group BY 子句 用于聚合分组的数据。
AVG
MAX/MIN
COUNT&#xff08;&#xff09;计算返回的行数 count &#xff08;&#xff09;不会忽略NULL值
等
聚合信息
先补充下AS的基本知识&#xff1a;给返回结果提供一个列名&#xff08;返回的是一个表&#xff09;返回max&#xff08;buyMoney&#xff09;值 在buyMoney列名下
SELECT max(buyMoney) AS buyMoneyFROMBuyHistoryWHEREproductId &#61; &#64;goodsId
SELECT &#64;price AS buyMoney, &#64;state AS [state], &#64;zongCount AS zongCount, &#64;date AS endTime, &#64;delayNo AS delayNo
END
前面的操作 都是对五个变量进行赋值 最后这个操作是提取出select列表。
public IList
Reader 读出来的是一个&#xff08;数据块&#xff09;表&#xff0c;where 循环是对这个数据块进行操作&#xff0c;一次取一条&#xff0c;直到最终取完&#xff0c;reader.read()为null
5&#xff1a;使用 HAVING 子句给分组设置条件
查询条件放到分组之后 用 HAVING 仅用于带有Group By的子句中
Having 是对组的内容的条件限制
6&#xff1a;使用 FOR XML 子句输出XML
输出XML结果 第十六章详细介绍
7&#xff1a;通过 OPTION子句 利用提示
最优化运行SQL查询
8&#xff1a;DISTINCT 和ALL谓词
这两个谓词和 重复数据有关
COUNT&#xff08;DISTINCT[state]&#xff09;
INSERT INTO [Artist] ([name] ,[dateofbirth] ,[sex] ,[photo] ,[artistContent] ,[phoneNo] ,[qqNo] ,[email] ,[state] ,[createDate] ,[modifyDate] ,[description]) VALUES (&#64;name ,&#64;dateofbirth ,&#64;sex ,&#64;photo ,&#64;artistContent ,&#64;phoneNo ,&#64;qqNo ,&#64;email ,1 ,GETDATE() ,null ,&#64;description)
INTO 没有太大意义&#xff0c;只是增强可读性。
显式列列表&#xff1a;则值列对应&#xff0c;不显示列表 则默认一一对应。例外的是IDENTITY(ID 自动填充)&#xff0c;注意&#xff1a;数据类型要匹配
1&#xff1a;多行插入
仅需逗号将括号隔开即可&#xff1a;&#xff08;&#xff09;&#xff0c;&#xff08;&#xff09;&#xff0c;&#xff08;&#xff09;
2&#xff1a;insert into ... select语句
一次插入一个数据块
--------注意第十一章的批处理操作
update 基本语法
每次删除都是删除整个记录&#xff0c;所以不存在列名
delete [Look]
where id &#61; 8
delete FROM [Look]
where id &#61; 8
都是一样
T_SQL是SQL的方言版&#xff0c;大部分都相同