SQL server查询扩展与视图操作
一、将查询到的内容添加到其它表中
1、INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。*注意的是字段数和数据类型要兼容
②、SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。*注意的是字段数和数据类型要兼容
②、SELECT INTO FROM语句
语句形式为:SELECT vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2
二、只查询前面的数据
①、语句形式为:select top 1 * from table;
要求查询中只查询第一条数据可在select后面添加top 1即可,查询多条数据时修改top后面的
数字
2、语句形式为:select top 40 percent * from table;
查询table中的前百分之40的数据
三、替换查询结果-将1替换为男,2替换为女,其余的为未知
语句形式为:
第一种写法:select (case 字段 when ‘1’ then ‘男’ when ‘2’ then ’女’ else ‘未知’ end) as 自定义字段名 from 表;
第二种写法:select (case when 字段=‘1’ then ‘男’ when 字段=‘2’ then ’女’ else ‘未知’ end) as 自定义字段名 from 表;
四、查询出来的字段中有子查询的字段数据
语句形式为:select '自定义字段名'=(select top 1 字段 from 表1 where tjbh=2105170054),字段 from 表2;
五、将查询出来的重复数据去除掉(完全相同数控情况下)
语句形式为:select distinct * from 表;
通过关键字Distinct将查询出来的数据去除重复的内容
六、修改查询出来的字段属性
cast 和convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式
cast一般更容易使用,convert的优点是可以格式化日期和数值.
①、cast 语句
语句形式为:select cast(字段 as int) as 自定义字段名 from table1
查询table1的字段内容并且将数据类型转换为int类型显现出来,重新附一个别名
②、Convert 语句
⑴语句形式为:select convert(int,字段) as 自定义字段名 from table2
查询table1的字段内容并且将数据类型转换为int类型显现出来,重新附一个别名
⑵语句形式为:select convert(char(10),getdate(),102)
获取当前日期,并且格式为yy.mm.dd(最多占10个字节)
第三参数如下:
日期类型 格式
100 03 19 2008 4:45PM
101 03/19/2008
102 2008.03.19
103 19/03/2008
104 19.03.2008
105 19-03-2008
106 19 03 2008
107 03 19, 2008
108 16:45:00
109 03 19 2008 4:45:00:
110 03-19-2008
111 2008/03/19
112 20080319
113 19 03 2008 16:45:00:
114 16:45:00:000
七、根据出身日期得出准确的年龄
语句形式为:select floor(datediff(dy,出身日期字段,getdate())/distinct查询365.25) from table1
使用floor函数-以时间差除以365.25得到准确的年龄
八、将字段包含指定的数据都替换为指定的值
语句形式为:select replace(age,20,18) as age from table;
使用replace函数,查询table中的age字段里面出现的20都替换为18
--不支持text数据类型
九、将两个字段进行比较,相同就返回null,不同则返回字段1
语句形式为:select nullif(字段1,字段2) from table1
使用nullif函数,函数内两字段数据一样返回null,不同则取字段1
九、查询字段的数据是null,则替换为指定的数据
语句形式为: select isnull(字段,替换的值) from table1;
使用isnull函数,字段为null,则替换为指定的数据
十、给字段一个别名(两种写法)
语句形式为:
①select 字段 as 别名,... form 表名
②select 别名=字段 from 表名
--as 可以省略,别名不能直接为数值,如1、2、3这种。别名不区分单引号和双引号,当然也可以省略!
十一、添加常量
语句形式为:select 常量 as 别名,... from 表名;
--as可以省略,常量不能直接是英文,如果是英文那就是字段名了。需添加英文这种常量,请添加单引号
--在这里的常量可以理解为:非表中查询到的数据,而是自己赋的数据
--只要给予常量,常量的条数和整条sql查询出来的条数对应
十二、将两个或者多个字段拼接(两种方法)
①直接使用 ‘+’符号拼接
语句形式为:select 字段1+字段2+字段3... from 表名
②concat函数拼接
语句形式为:select concat(字段1,字段2,字段3,...) from 表名
有时候需要将多个字段内容拼接为一列数据,就可以使用以上两种方法,当然最好给个别名
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论