sql的基本查询语句

Posted 安挚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql的基本查询语句相关的知识,希望对你有一定的参考价值。

--------------------------------------------基本常用查询--------------------------------------

自己简单练习做了个表。今天看了下hoojo大神的SQL Server T-SQL高级查询,我现在程度只能理解基础,所以就分享一下自己所联系的和理解的部分。

--查询所有 
select * from [dbo].[Table]
--查询出所有名字
select all name from [dbo].[Table]
--过滤掉重复的性别
select distinct sex from [dbo].[Table]
--统计出表中有多少条信息
select count(*) from [dbo].[Table]
--统计出表中所有名字有多少条信息
select count(name) from [dbo].[Table]
--统计出过滤掉重复性别有多少条信息
select COUNT(distinct sex) from [dbo].[Table]
--排行前5名的姓名
select top 5 name from [dbo].[Table]
--如果要知道所有信息就将name替换成*----------------------
--列重命名(三种方式空格,as,单引号) --常用的是空格
select id 编号 , name as 姓名 , sex \'性别\' from [dbo].[Table]
--表重命名(俩种方式空格,as) --常用的是空格
select * from [dbo].[Table] as t
select * from [dbo].[Table] t
--列运算(俩列相加)
select (id+age) 总数 from [Table]
--将俩列合并显示在一列中用-隔开
select name +\'-\'+ age 个人信息 from [Table]
--where条件 (后面接列名 运算符 值)
select id 编号, name 姓名 from [Table] where id =2
select * from [Table] where id <=8
select * from [Table] where id >=2 
select * from [Table] where id !=3
select * from [Table] where id !<7 
select * from [Table] where id !>8
--将名字包含郑竹的信息不显示
select * from [Table] where name<>\'郑竹\'
--and 和 or 用法
--and 的用法是并且(满足所有条件)
select * from [Table] where id=3 and age=14 
--or的用法是或者(满足其中一个条件)
select * from [Table] where age=13 or age=14
--between ...and...用法是俩者之间(显示条件中俩者之间的所有信息)
select * from [Table] where id between 2 and 8
--模糊查询(%替换所有输入字符,_替换一个输入字符) 关键字like替换运算符
select * from [Table] where name like \'%\'
select * from [Table] where name like \'%电\'
select * from [Table] where name like \'_雨\'
--子查询 关键字in (在条件之中)
select * from [Table] where id in (2,3,4,7)
select * from [Table] where name in(\'钱雨\',\'李电\',\'郑竹\')
--not in (不在条件之中)
select * from [Table] where age not in (17,18,19)
select * from [Table] where name not in(\'钱雨\',\'李电\',\'郑竹\')
--is null (显示条件中值为空的信息)
select * from [Table] where age is null 
--is not null (显示条件中值不为空的信息)
select * from [Table] where age is not null
--order by 排序 (desc 降序,asc升序)
select * from [Table] order by age
select * from [Table] order by age desc 
select * from [Table] order by age asc
--group by 分组 
--(查询时将一列或n列分开查询并显示,查询条件一一对应后面group by)
select age from [Table] group by age
select id ,name, age from [Table] group by id,name, age
--按照年龄进行分组统计
select count(*) age from [Table] group by age
--按照性别进行分组统计
select count(*) sex from [Table] group by sex
--按照年龄和性别组合分组统计,并排序
select COUNT(*) age,sex from [Table] group by age,sex order by age
--按照性别分组,并且是id大于2的记录最后按照性别排序
select COUNT(*) id大于2的人数, sex from [Table] where id>2 group by sex order by sex 
--查询id大于2的数据,并完成运算后的结果进行分组和排序
select COUNT(*) id大于2的人数,(age+id) 合计数 from [Table] where id>2 group by (age+id) order by (age+id)
--group by all 
--按照年龄分组,是所有的年龄
select age from [Table] group by all age
--having 分组过滤条件
--按照年龄分组,过滤年龄为空的数据,并且统计分组的条数和现实年龄信息
select COUNT(*) 分组的条数, age from [Table] group by age having age is not null
--按照年龄和id组合分组,过滤条件是id大于1的记录
select id,age from [Table] group by id,age having id >1
--按照年龄分组,过滤条件是分组后的记录条数大于等于1
select COUNT(*) 分组后的记录条数, age from [Table] group by age having COUNT(*) >=1
--按照id和性别组合分组,过滤条件是id大于1,id的最大值大于2
select id,sex from [Table] group by id,sex having id>1 and max(id)>2

 

--------------------------------------------嵌套子查询--------------------------------------
--子查询就是内部查询或者说是内部选择,在子查询外部的是外部查询或者说是外部选择。
--这个是基础理论,我个人觉得子查询就是中心,外部查询就是外围,中心查询的语句都是基础语句演变而来,外部查询就是结合子查询一块查询结果
--下面就是简单的子查询格式
select * from /* 这个就是外部查询*/
(select id ,name ,age from [Table] where id >1) t /*内部查询*/
where t.age >15/* 这个就是外部查询*/
--内部查询中运用的语句就是基本常用查询语句
--外部查询可以包含基本常用查询语句
--例如where,group by,having,count,select查询,多个表或者视图的from语句

以上是关于sql的基本查询语句的主要内容,如果未能解决你的问题,请参考以下文章

sql语句 嵌套查询 排序

程序中使用嵌套的sql语句和在数据库中写存储过程调用它,有啥区别?

使用 with as 优化SQL

.NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

SQL Select 语句的用法

MyBatis高级特性