SQL Server 之T-SQL基本语句 (3)

继续来用例子总结sql基本语句用法。

在这里在建一个表:课

课程名 上课时间
数学 周一
数学 周二
数学 周三
语文 周一
语文 周二
英语 周一

数据分组:GROUP  BY

select  课程名,count(*)

from 课

group by 课程名;//按照课程名来分组,检索出每个课程的上课时间个数

结果为: 数学  3

            语文   2

            英语   1

注意:group by 子句必须放在where之后和order by之前。

过滤分组:HAVING

比如:

select 课程名, count(*)

from 课

group by 课程名

having count(*)>=2;//选择上课时间次数大于或等于两次的课程

结果为: 数学    3

            语文     2

where 和 having 之间差别:

where 在分组前进行过滤,having在分组或进行过滤。where排除后的行在分组中不算数,有时候会影响数据结果。

子查询 IN 操作符

比如:

select  课程名,count(*)

from   课

where  课程名  in  (select 课程名   

                            from   课

                            where  count >2);//小括号里确定了上课时间次数大于2的课程名。    等价于: where 课程名 in ('数学');

结果:数学   3

另外一种,

select  课程名,(select  count(*)

                        from  课

                       where  上课时间='星期一')//小括号里检索了各门课程上课时间为星期一的次数

from 课;

结果为:数学  1

           语文  1

            英语  1

插入数据

插入完整行

INSERT INTO  课

VALUE('体育', '星期一');

insert into 课(课程名,上课时间)

value ('体育','星期一');//这种更加安全

插入行的一部分

和上述一样,就是少插入一部分数据,没插入数据的部分默认为null。若没插入的部分不允许为null,则会报错。

插入某些查询结果

insert  into 课(课程名,上课时间)

select 课程名,上课时间

from 另一个课表;//将另一个课表查询的结果插入课表。注意:课表和另一个课表可以列名相同也可以不同。

更新数据

UPDATE     SET

比如:

update 课

set  上课时间='周五'

where 课程名='数学' and 上课时间='周一';//将课程名为数学和上课时间为周一的课程上课时间改为周五
删除数据

DELETE

比如:

delete from 课

where 课程名='英语';//删除课程名为英语的那一行

关联表在以后再仔细总结。

 

posted @ 2016-05-18 17:49  安以痕_陈  阅读(172)  评论(0编辑  收藏  举报