一周速学SQL Server(第三天)

相关文章链接:

一周速学SQL Server(第一天)

一周速学SQL Server(第二天)

一周速学SQL Server(第四天)​​​​​​​

一周速学SQL Server(第五天)

一周速学SQL Server(第六天)​​​​​​​

​​​​​​​一、模糊查询 

查询分为完整查询和模糊查询。

模糊查询:select 列名 from 表名 where 子句

如:select UserName,Age from 表名 where UserName like。。。

like后SQL提供了四种匹配模式:

1)% 0个或多个    %可以任意匹配类型和长度

 2)匹配单个字符  限制表达式的字符长度

如:select * from ProductType where Typename like '_dmin'

3)[ ] 范围匹配括号中所有字符中的一个

如:select * from UserInfos where UserName like ‘ad[mnd]in’

    select * from UserInfos where UserName like ‘ad[m-p]in’

4)[^] 不在括号中所有字符之内的单个字符

如:select * from UserInfos where UserName like ‘ad[^abc]in’

二、范围查询

2.1、范围查询方式一select * from where 子句 条件  --条件是一个给定范围

1)比较运算符 < >  =  <= >= 

如:select * from UserInfos where Age >= 30

2)in(2,3,4) 或not in(2,3,4)

如:select * from UserInfos where Age in(30,35,24)

3)between and 等价于 >= and <=  (推荐写法)

如:select * from UserInfos where Age between 20 and 33

2.2、范围查询方式二查询前面多少条或百分比

如:select top 10 * from UserInfos

        select top 50% * from UserInfos

三、聚合函数

3.1、聚合函数

定义:对一组值执行计算并返回单一的值,经常与select语句中group by 组合使用

一般统计一个表的记录数用count(1)写法:

        select count(1) from UserInfos  --select count(1)伪造列统计有多少条记录数

3.2、五种聚合函数

1)count 记录个数

如:select count(1)Record from UserInfos

2)sum 求和

如:select sum(Age)from UserInfos

3)avg 求平均

如:select avg(Age)from UserInfos

4)max 最大值

如:select max(Age)from UserInfos

5)min 最小值

如:select min(Age)from UserInfos

四、分组查询

4.1、group by分组

group by分组, 结合聚合函数,根据一个列或多个列对结果集进行分组。

4.2、语法

语法:select ... where... group by ... order by ...

如:select DepId,count(1)用户数 from UserInfos 

Where Age >26

group by DepId  ——统计各部门有多少个年龄大于26岁的用户

Having DeptId > 1 ——分组后的筛选条件

Order by DeptId desc ——排序

注意select出现的列名必须出现在group by 之后或包含在聚合函数之中

五、连接查询之内连接

5.1、连接查询

根据两个或多个表之间的关系,从这些表中查询数据。

目的:实现多表查询

5.2、分类

内连接 外连接(左连接、右连接、全连接) 交叉连接

5.3、内连接:inner join

1)使用比较运算符 =  >= <= > <进行表间的比较,查询与条件相匹配的数据。

2)等值连接

结果:想匹配的数据查询出来,如果没有匹配上,就没有结果。

        (1)显示连接— inner join  on 条件

        如:select UserId,UserName,Age,u.DeptId,DeptName

                from UserInfos u  ——将表UserInfos命别名为u

                inner join DeptInfos d on d.DeptId=u.DeptId ——将表DeptInfos命别名为d

                where Age >25

        (2)隐式连接—select ... from  where 关联条件

        如:select UserId,UserName,Age,u.DeptId,DeptName

                from UserInfos u, DeptInfos d

                where d.DeptId=u.DeptId and Age >25

六、连接查询之外连接

6.1、外连接分类

1)左外连接(左连接):left join on 

返回的是左表的所有行右表中没有匹配上对应的列就显示NULL

        如:select * from UserInfos u ——左表

                left join on DeptInfos d ——右表

                on u.DeptId = d.DeptId

2)右外连接(右连接):right join on

返回的结果与左连接相反返回的是右表的所有行左表进行匹配左表中没有匹配上的对应列显示NULL

        如:select * from UserInfos u ——左表

                right join on DeptInfos d ——右表

                on u.DeptId = d.DeptId        

3)全外连接(全连接):full join

返回左表和右表中所有行当某一行在另一个表中没有匹配另一个表中的列返回NULL

        如:select * from UserInfos u

                full join DeptInfos d

                on u.DeptId = d.DeptId

        结果:左表和右表所有数据都会显示出来,每一行的数据如果在另一个表里匹配不上,就会对应显示NULL。

七、连接查询之交叉连接

交叉连接(笛卡尔积):cross join

        如果不带where子句时,返回被连接的两个表的笛卡尔积返回的行数是两个表行数的乘积

        带where子句,等价于inner join返回的是匹配的数据

        如:select * from UserInfos u

                cross join DeptInfos d

                where u.DeptId = d.DeptId      

  八、类型转换函数

8.1、convert函数

convert类型长度),表达式

如:select‘cbd' + convert(varchar,2)

8.2、cast函数

cast表达式 as 类型

如:select‘cbd' + cast(2,varchar)

九、字符串操作函数

9.1、字符串操作

1)从一个字符串里找一个子串,返回该子串第一次出现的位置

如:select CHARINDEX(‘bc',’abcdc‘)——返回2,索引从1开始

如:select PATINDEX(‘%bc’,‘abcdc)——返回2,指定的子串前后必须带%。

2)取长度

如:select len(‘abc’)

3)字符串大小写转换

转换小写:如:select LOWER(‘ABCDEFG’)

转换大写:如:select UPPER(‘abcdefg’)

4)去空格

如:select LTRIM(‘   dbcd     ’)——‘dbcd    ’  去掉左边的空格

如:select RTRIM(‘   dbcd     ’)——‘    dbcd’  去掉右边的空格

5)截取字符串

如:select LEFT(‘abcdefg’,4)——abcd  返回字符串从左边起4个字符

如:select RIGHT(‘abcdefg’,6)——bcdefg  返回字符串从右边起6个字符

如:select SUBSTRING(‘abcdefg’,3,4)——cdef 返回字符串从左边起第3个位置开始4个字符

6)把其中一个子串重复n次

如:select REPLICATE(‘abc’,4)——abcabcabcabc 将指定字符串重复4

7)顺序颠倒

如:select REVERSE(‘abcdef’)——fdecba 字符串翻转

8)字符串替换

如:select REPLACE(‘abcdefg’,‘cd',’‘ss’)——abssdefg 字符串替换

如:select STUFF(‘abcdefg’,2,3,‘tt’)——attefg 用指定子串替换指定长度的子串后生成的字符串。

猜你喜欢

转载自blog.csdn.net/beiye_/article/details/127068303