您的位置:首页 > 其它

查询的基本语法

2004-12-14 15:30 211 查看
1.Select的基本语法
Select col1,col2.....coln
[into newTable] '将查到的数据插入到新表中
[From tab1,tab2....tab3] '目标表
[where @condition] '查询条件
[Group by col1,col2....coln] '按指定列分组
[Having @condition] '在使用函数(Avg,Count)时使用having
[Order by col1,col2.....coln] '按指定的列排序
* 列(col)可以是表中的所有列,也可以是派生的列(有数个表列运算后产生的列)
* 新的表 在select 命令中被选择的数据库的表。
* 条件 数据选择时的筛选条件,你可以设定大于,小于或等于基本判断条件。
*Order by Group by 当选定要选择的列和条件后,可以对选取的数据进行排序和分组
*Having 通常和Group by 搭配使用,用来当做条件选择,就象Where条件一样。

2 基本查询
2-1 选取全部的数据 Select * from table
2-2 选取指定列 Select col from table
2-3 选取不重复的 Select distinct col from table
2-4 指定某一列的显示格式 Select emp_Name ,Convert(char(8),birthDay,11)---将birthDay字段显示为char形式
2-5 数据排序 Select emp_Name from employee Order by emp_Name DESC | ASC -----Desc为降序,Asc为升序,默 认为升序
2-6 使用函数 Select Count(*) from sales where tot_amt >5000 ---定单金额大于5000的行数
2-7选取前几行数据 Select Top 10 OrderId from Oders
2-8 数据分组
可以利用Group by 子句对Select 命令所选取得到的数据做分组,分组后的数据可显示出来,或是利用
Sum(),Avg()等函数针对特定的列计算每组数据总和或平均值。
Select col1 ,col2
form tab
group by col1
在group by 子句中的字段必须是在Select 中出现的,例如
Select pro_id, Sum(qty*unit_price) as tot_amt
form sailes ----显示产品销售明细表中的每个产品的订贷金额总和,
group by pro_id -----并按从大到小排序
order by tot_amt DESC

Select pro_id ,Count(*) From stock
group by prod_id ----Group by 子句经常和Having搭配,用来找出
Having Count(*)>1 -----每一个组中满足指定条件的数据。该命令显示同一型号产品有两家
order by Prod_id ------以上的供应商

3 加上选择条件 当你只想选取表的部分数据时可以加上选择条件,也就是加上WHERE子句
逻辑运算符 等于 = ,不等于 <> 或 != ,大于 > ,小于<,大于等于 >=,小于等于 <= ,介于 Between ,
不介于 Not Between , In (Not In) 列值是否存在于所列的清单内,Is null 列值是否为Null
4 使用统配符
% 零个或多个字符
_ 单一任何字符
/ 特殊字符
[] 在某一范围内的字符,如[0-9] 或[acfk]
[^] 不在某一范围内的字符,如[^0-9] 或[^acfk]
注意:当使用统配符来比较数据时,由于在这种情况下SQL SERVER 无法使用主键值和索引加快数据的查询
而是一个一个的查询。

5 表的Join
在多个表之间查询时就要对多个表进行Jion查询
如: select * from stock
join product
on stock.prod_id =product.prod_id

join 两个以上的表,在stock ,product我们显示了产品的中文名称,也希望把供应商的名字显示出来。
那就必须将供应商表(supplier)也拉过来一起做join
select product.prod_name,supplier.sup_name,stock.stk_qty
From stock
Join product on stock.prod_id = product.prod_id
Join supplier on stock.sup_id = supplier.sup_id

Self Join
在表的Join 中,在同一个表中也可以做join,这种和自己Join的情形我们称之为self-join.
由于self-join涉及的是两个相同的表,因此可以利用别名把同一个表当做不同的表做Join
以下命令找出同一天进入公司的员工

Select A.emp_no ,A.emp_name,B.emp_no,B.emp_name,A.date_hired
From employee A
Join employee B
On (A.emp_no!=B.emp_no and A.emp_name>B.emp_name and A.date_hired >B.date_hired)
Order by A.date_hired

Out Join
Join 的结果是由两个或两个以上的表组合挑出合乎Join条件的数据。但是来自不同表的数据无法满足Join
条件则丢弃,通常我们将这种叫inner join.
另外一种叫out join ,这种方式的表有主从之分。他的处理方式是用主表的每行数据去match从属表的列,
合乎条件和不合乎条件的都是我们得到的数据,只是不合乎条件的数据会被以null填上.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: