码迷,mamicode.com
首页 > 数据库 > 详细

SQL-T-SQL语句

时间:2015-07-13 20:38:57      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:sql   t-sql语句   

SQL-T-SQL语句
一 基本使用
1,大于,小于查询
use LtsDatabase
select 学生编号,学生年龄 from Student where 学生编号<2

2,大于等于,小于等于
use LtsDatabase
select *from 网站职员表 where 职员工资 > 5000 or 职员工资 = 5000

3,and:
use LtsDatabase
select * from 网站职员表 where 年龄=19 and 毕业院校=’NCHU’

4,!
use LtsDatabase
select * from 网站职员表 where 职员工资 !>6000 不大于

5,not
use LtsDatabase
select * from 网站职员表 where not 职员工资 >6000 不大于

6,优先级顺序由高到低:
括号
not 正 负
* /
加, 减
比较运算符
And
Or

use LtsDatabase
select * from 网站职员表 where 毕业院校=’NCHU’ and 年龄<23

7,连续使用and
use LtsDatabase
select * from 网站职员表 where 年龄=20 and 职员姓名=’橙子3’
两者都满足返回值才为true

8, 连续使用or
use LtsDatabase
select * from 网站职员表 where 年龄=20 or 职员姓名=’橙子3’
年龄满足即可,即前面一个条件满足返回值即为true,前一个不满足在检查后一个条件

9,in限制条件
use LtsDatabase
select * from 网站职员表 where 年龄 in(18, 19, 20)
查询年龄在18 19 20

10 not in限制条件
use LtsDatabase
select * from 网站职员表 where not 年龄 in(18, 19, 20)
查询年龄不在18 19 20

11,查询是null,null必须小写
use LtsDatabase
select * from 网站职员表 where 职员姓名 is null
use LtsDatabase

12,查询不是null
select * from 网站职员表 where not 职员姓名 is null

二 高级查询
13,between and
use LtsDatabase
select * from 网站职员表 where 职员工资 between 5000 and 7000

14,not between and
use LtsDatabase
select * from 网站职员表 where 职员工资 not between 5000 and 7000

15,消除重复记录
use LtsDatabase
select distinct 职员工资, 毕业院校,年龄 from 网站职员表
消除 职员工资, 毕业院校,年龄相同的记录

16,投影查询
use LtsDatabase
select 职员工资, 毕业院校,年龄 from 网站职员表
结果按照 职员工资, 毕业院校,年龄来排序

17,和某一字段的值相同的值的其他字段的值,嵌套子查询
use LtsDatabase
select * from 网站职员表 where 职员工资 in (select 职员工资 from 网站职员表 where 职员姓名=’橙子’)
查询职员工资字段和橙子相同的所有的字段值,
注意:in也可以换为=和其他的运算符号,但是当子查询返回的值不止一个的时候不可以换为=号

18,多表嵌套查询
创建带有主键,表示种子及标示增量的表
use LtsDatabase
create table 网站经营项目
(
项目编号 int identity(1, 1) primary key,
//表示种子为1,增量为1,项目编号为主键
项目名称 varchar(50),
负责人 varchar(50),
合作单位 varchar(50)
)

19,嵌套查询
use LtsDatabase
select *from 网站职员表 where 职员姓名 in(select distinct 负责人 from 网站经营项目)
从网站职员表中的人员中查询在网站经营项目的负责人中的人,去掉重复的数据(distinct)

use LtsDatabase
select *from 网站职员表 where 职员姓名 not in(select distinct 负责人 from 网站经营项目)
从网站职员表中的人员中查询不在网站经营项目的负责人中的人,去掉重复的数据(distinct)

20,查询单级排序
use LtsDatabase
select * from 网站职员表 where 职员姓名 in(select 负责人 from 网站经营项目表2) order by 职员工资 asc
查询的结果按照职员工资升序排列,小的在前,大的在后

use LtsDatabase
select * from 网站职员表 where 职员姓名 in(select 负责人 from 网站经营项目表2) order by 职员工资 desc
查询的结果按照职员工资将序排列,大的在前,小的在后

use LtsDatabase
select * from 网站职员表 where 职员姓名 in(select 负责人 from 网站经营项目表2)
不加排序条件是按照升序排列的

21,多级排序
use LtsDatabase
select * from 网站职员表 order by 年龄 asc, 职员工资 asc
当年龄相同的时候,按照职员工资来排序,并制定排序的规则

三 函数的使用
22,查询行数,用到统计函数COUNT
use LtsDatabase
select COUNT(*) as 记录行数 from 网站职员表
查询出来的列名称默认为无名列,可以用as指定列名为记录行数
*代表所有字段

23,查询每一列的个数
use LtsDatabase
select COUNT(年龄) as 记录行数 from 网站职员表
将*替换为要查询的指定的字段名称即可

24,统计函数求和SUM
use LtsDatabase
select SUM(职员工资) as 总金额 from 网站职员表

25,求平均值AVG
use LtsDatabase
select AVG(职员工资) as 平均工资 from 网站职员表

26,求最大值max
use LtsDatabase
select max(职员工资) as 平均工资 from 网站职员表

27,求最小值min
use LtsDatabase
select min(职员工资) as 平均工资 from 网站职员表

28,统计值作为查询条件
use LtsDatabase
select * from 网站职员表 where 职员工资 > (select AVG(职员工资) from 网站职员表)

29,组合查询
use LtsDatabase
select 职员编号,职员姓名,职员工资+职员奖金 as 总收入 from 网站职员表

30,like模糊查询
use LtsDatabase
select * from 网站职员表 where 毕业院校 like ‘C%’
所查询的字在哪个位置,就代表查询哪个地方
C%代表查询以C开头的记录
%C%代表查询含有C的记录
%C代表查询以C为结尾的记录

31,分组查询 汇总查询
use LtsDatabase
select * from 网站职员表 order by 年龄 compute max(职员工资), min(职员工资), sum(职员工资), avg(职员工资) by 年龄
max(职员工资), min(职员工资), sum(职员工资), avg(职员工资)汇总信息
order by 年龄 汇总条件
by 年龄 排序字段,必须出现在汇总条件中

32,分组查询
use LtsDatabase
select 毕业院校, MAX(职员工资) as 最高工资, MIN(职员工资) as 最低工资, AVG(职员工资) as 平均工资 from 网站职员表 group by 毕业院校
按照毕业院校分组

33,分组条件
use LtsDatabase
select 毕业院校, MAX(职员工资) as 最高工资, MIN(职员工资) as 最低工资, AVG(职员工资) as 平均工资 from 网站职员表 group by 毕业院校 having SUM(职员工资) > 7500
having SUM(职员工资) > 7500为分组的筛选条件

34,分组嵌套查询
use LtsDatabase
select * from 网站职员表 where 毕业院校 in(select 毕业院校 from 网站职员表 group by 毕业院校 having SUM(职员工资) > 20000)

35,谓词查询
(in , not in)后面的条件符合前面的记录,只查询符合的表的记录
(exist, not exist )只要后面的查询条件符合前面的记录,就查询出表全部的记录
use LtsDatabase
select * from 网站职员表 where not exists (select * from 网站职员表 where 毕业院校=’清华’)

use LtsDatabase
select * from 网站职员表 where exists (select * from 网站职员表 where 毕业院校=’清华’)

36,量词查询any
use LtsDatabase
select * from 网站职员表 where 职员工资 > any(select 职员工资 from 网站职员表 where 职员姓名=’橙子’)
查询任何大于橙子(其他字段,可能有多个值)工资的任何一条的记录,大于其中一个就符合条件
查询的指定字段的值必须大于查询的集合中的任意一个值即可

37,量词查询all
use LtsDatabase
select * from 网站职员表 where 职员工资 > all(select 职员工资 from 网站职员表 where 职员姓名=’小明’)
查询的指定字段的值必须大于查询的集合中的所有的值

38,查询指定多少条记录
use LtsDatabase
select top 10 percent * from 网站职员表
查询10%

use LtsDatabase
select top 10 * from 网站职员表
查询前10条记录

39,查询保存到其他表
use LtsDatabase
select * into 第二网站职员表 from 网站职员表 where 职员工资 > 7000

40,并集查询
use LtsDatabase
select * from 网站职员表 union select * from 第二网站职员表

41,交集查询
use LtsDatabase
select * from 网站职员表 interset select * from 第二网站职员表

42,连接查询
use LtsDatabase
select * from 网站职员表 ,网站经营项目
后面的表的每一条记录分别连接前一个表的全部记录

43,条件连接
use LtsDatabase
select * from 网站职员表 ,网站经营项目 where 网站职员表.职员姓名=负责人

44,超链接查询
use LtsDatabase
select * from 网站经营项目 inner join 网站职员表 on 网站经营项目.负责人=网站职员表.职员姓名

45,左连接
use LtsDatabase
select * from 网站经营项目表2 left join 网站职员表 on 网站经营项目表2.负责人=网站职员表.职员姓名
左边的表全部显示,右边没有相对应字段的值为NULL

45,右连接
use LtsDatabase
select * from 网站经营项目表2 right join 网站职员表 on 网站经营项目表2.负责人=网站职员表.职员姓名
右边的表全部显示,左边没有相对应字段的值为NULL

46,全连接
use LtsDatabase
select * from 网站经营项目表2 full join 网站职员表 on 网站经营项目表2.负责人=网站职员表.职员姓名
左边和右边都显示全部,没有相对应字段的值全部为NULL

版权声明:欢迎交流指正文章的错误,必定虚心接受,QQ872785786

SQL-T-SQL语句

标签:sql   t-sql语句   

原文地址:http://blog.csdn.net/qq_22075977/article/details/46867173

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!