27. SQL -- TSQL(SELECT语句的使用,子查询,连接,通配符 )(3)
[*] 通配符:
通配符一般是通过LIKE 使用的。
T-SQL 中支持四种通配符,如表所示:
运算 符 含 义
%
代表零个或多个任意字符
_
代表一个任意字符
[]
指定范围内的任意单个字符
[^]
不在指定范围内的任意单个字符
例如,
“AB%”表示以AB 开始的任意字符串;
“_cd”表示以cd 结尾的三个字符的字符串;
“%”表示以e 或f 开始的任意字符串;
“ing”表示开始是s 到v,结尾是ing,长度为四个字符的字符串;
“m[^c]%”表示以m 开始且第二个字符不是c 的任意字符串。
例1:查询emp_id字段以P10 开始的任意字符串
select*
from TimeRecords
where emp_id like 'P10%'
例2:查询emp_id字段以P10 开始及以10 结尾的任意字符串
select*
from TimeRecords
where emp_id like 'P10%10'
例3:查询emp_id字段以P10 开始及以9 结尾的任意字符串
select*
from TimeRecords
where emp_id like 'p10%'
例4:查询emp_id字段以P10 开始及以0-9 结尾的任意字符串
select*
from TimeRecords
where emp_id like 'p10%'
例5:查询emp_id字段以P10 开始及不以0-4 结尾的任意字符串
select*
from TimeRecords
where emp_id like 'p10%[^0-4]'
例6:查询emp_id字段不是以P10 开始的任意字符串
select*
from TimeRecords
where emp_id not like 'P10%'
[*] 常见查询类型:
查询所有的数据行和列select * from TimeRecords
查询部分行列——条件查询 加where
在查询中使用列名as 别名
查询空行is null
在查询中使用常量列demo‘ as col1
查询返回限制的行数top \TOP 50 PERCENT \TOP 接收变量
[*] select 查询语句基本使用:
SELECTselect_list
FROMtable_source
]
1)、如果查询表中所有列的信息,用“*”代替列名。
select* from TimeRecords
2)、查询指定的列,并应用别名
selectclock_id as clock,
join_idas joinid,
card_idas card
from TimeRecords
3)、为表名指定别名。
select
clock_idas clock,
card_idas card
from TimeRecords as tire
或者
selectclock_id clock,
card_idcard
from TimeRecords tire
4)、消除结果集中重复的行。
selectdistinct clock_id as clock
from TimeRecords
5)、查询返回限制的行数
返回前10 行的内容:
selecttop 10 *
from TimeRecords
返回总表的1%的内容:
selecttop 1 percent *
from TimeRecords
6)、使用带条件的查询:
a. 基于比较条件查询:
select*
from TimeRecords
where clock_id = '105'
条件:=,>,>=,'2011-06-10'
groupby CONVERT(char(10),sign_time,121),emp_id ) as a
groupby sdate
orderby sdate
语句解释:
从TimeRecords 表中,查询出匹配sign_time 字段大于‘2011-06-10 的sign_time 字段并命名别名为sdate, emp_id 字段并命名别名为userid,并对sign_time 及emp_id 字段进行分组,且将查询结果作为虚拟表为命名别名为a,从表a 中对sdate 字段进行分组,筛选出sdate 字段及对userid 字段进行count(计数)并命名别名为int,最终对查询结果
进行排序.
连接查询(等值查询):
select*
from TimeRecords as a , TimeRecords_2as b
where a.clock_id= b.clock_id
[*] 外连接,交叉连接和自连接
连接查询是关系数据库中最主要的查询,主要包括内连接、外连接和交叉连接等。通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。
内连接的连接查询结果集中仅包含满足条件的行,内连接是SQL Server 缺省的连接方式,可以把INNER JOIN 简写成JOIN,根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种;交叉连接的连接查询结果集中包含两个表中所有行的组合;
外连接的连接查询结果集中既包含那些满足条件的行,还包含其中某个表的全部行,有3种形式的外连接:左外连接、右外连接、全外连接。
a. 交叉连接(CROSS JOIN)
交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。
格式:from tablea cross join tableb
例:
select*
from Production.Productas a crossjoin Production.ProductReview as b
where a.ProductID= b.ProductID
上面查询将2 个关系表的内容组合成一个表
b. 内连接查询(INNER JOIN ON)
内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录,也就是说,在内连接查询中,只有满足条件的元组才能出现在结果关系中根据比较方式分为:
○1 、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结、果中列出被连接表中的所有列,包括其中的重复列。
○2 、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、
页:
[1]