sql sever之增删改查

SQL SELECT语句完整的执行顺序:

1、FROM子句组装来自不同数据源的数据;

2、WHERE子句基于指定的条件对记录进行筛选;

3、GROUP BY子句将数据划分为多个分组;

4、使用聚集函数进行计算;

5、使用HAVING子句筛选分组;

6、计算所有表达式;

7、使用ORDER BY对结果进行排序。


(一)增

(二)删

(三)改

(四)查

简单来说,今天导师让做,一个TICKET表里把三个相同字段SEAT、SHIFT、STATE,并且TIME>'2015-08-27 00:00:00' 的记录列出来。我尝试了很多最后解决如下:

1.select * from TICKET a join (

select SEAT,SHIFT,STATE from TICKET where TIME>'2015-08-27 00:00:00' group by SEAT,SHIFT,STATE having count(*)>1) b on a.SEAT = b.SEAT and a.SHIFT = b.SHIFT and a.STATE = b.STATE
order by a.SEAT,a.SHIFT(排序)

还可以这样写:

select p1.* from persons p1,persons p2 where p1.id<>p2.id 

and p1.cardid = p2.cardid and p1.pname = p2.pname 

and p1.address = p2.address   


2.TICKET表中只出现SEAT,SHIFT两个字段重复的部分

select SEAT,SHIFT from TICKET group by SEAT,SHIFT having(count(*))>1


select SEAT,SHIFT from TICKET group by SEAT,SHIFT having count(SEAT)>=2 and SHIFT in (select SHIFT from TICKET group by SHIFT having count(SHIFT)>=2)


3.TICKET表中SEAT重复出现记录列出:
select * from TICKET where SEAT in (select SEAT from TICKET group by SEAT

having(count(*))>1) 

order by SEAT


TICKET表中SEAT、SHIFT重复出现记录列出

select * from TICKET where SEAT、SHIFT in (select SEAT、SHIFT from TICKET group by SEAT、SHIFT having(count(*))>1)

4.今天导师让我以一个字段为单位,统计它出现的次数并展示出其他的字段信息

SELECT t.id,count(t.id) 
FROM table t
GROUP BY t.id
order by t.id asc
提示:用group by函数

5.关于SQL server中字段值为null的查询

select * from 表名 where 字段=null 应该可以的。但结果是没有报错,但什么也没有显示出来。

后来又试: selt * from 表名 where len(字段)=0 结果仍是什么也没有显示。

无意中,用 select * from 表名 where 字段 is null 却对了

sql server 查询不为空的字段select * from 表名 where 字段 is not null

6.sql语句:怎么根据一个字段在一段时间内把另一个字段累加?

select [SHIFTNUMBER],SUM([IN_MONEY]) AS [IN_MONEY]

from TBL_SP_TICKET where STARTTIME between '2015-08-27 00:00:00.0000000' and '2015-08-28 00:00:00.0000000' and SHIFTNUMBER is not null

group by [SHIFTNUMBER] 

order by [SHIFTNUMBER]

7.SQL语句如何使用一个表的某个字段的条件查询另外一个表符合这个条件的记录

用IN
select * from b where id in (select id from a where 条件) 
用JOIN
select b.* from b inner join a on b.ID=a.ID where 条件 (如:where a.字段1=1)
8.BUG:消息8120,级别16,状态1,第2 行 选择列表中的列 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
当使用聚集函数的时候,必须配合group by使用。select  子句中的列,除了 聚合函数 ,都要在 group by中出现:
select a,b, count(*)
from tab
group by a,b
9.不同的 SQL JOIN
除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。
JOIN(内联接): 如果表中有至少一个匹配,则返回行(注释:INNER JOIN 与 JOIN 是相同的。)
LEFT JOIN(左外联接:): 即使右表中没有匹配,也从左表返回所有的行(注释:在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN。)
RIGHT JOIN(右外联接): 即使左表中没有匹配,也从右表返回所有的行(注释:在某些数据库中, RIGHT JOIN 称为 RIGHT OUTER JOIN。)
FULL JOIN(全外联接): 只要其中一个表中存在匹配,就返回行(注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。)






写着写着自己也混乱了,基础不够好啊!要好好学SQL语句





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值