由于近来需要用SQL Server做项目,又因原来粗浅地学过些许简单的SQL语句,故现在结合网上的一些资料写些实用的SQL语句,方便日后给自己查阅,也能和大家一起交流。
1.between的用法
select * from tableName where Field between valueMin and valueMax
select * from tableName where Field not between valueMin and valueMax
在*的地方,也可以替换成具体的字段名。
2.in的用法
select * from tableName where Field in (value1,value2,...)
select * from tableName where Field not in (value1,value2,...)
3.外连接的用法
左外连接
select tableName1.id, tableName2.id,name,sex,password from tableName1 left out join b on tableName1.id = tableName2.id
右外连接
select tableName1.id, tableName2.id,name,sex,password from tableName1 right out join b on tableName1.id = tableName2.id
全外连接
select tableName1.id, tableName2.id,name,sex,password from tableName1 all/full out join b on tableName1.id = tableName2.id
注意:当进行连接的表中有相同名字的字段,需要用表名.字段名来读取数据
4.子查询
select * from tableName1 where Field in (select Field from tableName2)
其实,式子中第一个Field和第二个Field是不同的。SQL中的子查询是非常重要的一部分,也是比较难学的一部分,因为逻辑性需要比较强,所以在这里不多做介绍,之后有时间会单独整理一篇出来。
5.查询表中前N条数据
select top 5 from tableName
这里的top 5中的数字5是可变的,可以任意改变,但注意不能超过表中的数据条数总和
select top N from tableName order by Field
这里在语句的后面加上order by这个关键字,就是按照某个字段进行排序。
6.两张关联表,删除主表中已经在副表中没有的信息
delete from tableName1 where not exists (select * from tableName2 where tableName1.Field=tableName2.Field)
7.四表联查问题
select * from tableName1 left inner join tableName2 on tableName1.Field=tableName2.Field right inner join tableName3 on tableName1.Field=tableName3.Field inner join tableName4 on tableName1.Field=tableName4.Field
其实,这里的实质就是用内外连接对四个表进行关联。innner和out的区别就在于内连接和外连接的区别。
8.一条SQL语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
这个是网上原本的一个SQL语句,这里就作为分享,也有待探究。
暂时更新这么多内容,本人还是菜鸟阶级,所以只能跟大家分享这些比较浅显的内容。有句话说得好,革命尚未成功,同志仍需努力。