查询的基本语法

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填上.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值