文章目录
Sql Server查询语句
对于Sql Server创建的表中的数据进行查询,可以进行,基础查询,条件查询,模糊查询
基础查询
基础查询语句为:select *from 表名
select *from 表名
表示查询表中的所有数据
-- 查询指定列(姓名、生日、月薪、电话)
select PeopleName,PeopleSex,PeopleBirth,PeopleSalary,PeoplePhone from People
-- 表示从People表中查询指定的列
-- 当我们需要查询指定列,并显示别名的时候(自定义别名)
select PeopleName 姓名,PeopleSex 性别,PeopleBirth 生日,PeopleSalary 薪水,PeoplePhone 电话 from People
-- 查询出员工所在的城市(不需要重复的数据显示) 关键字 distinct
select distinct (PeopleAddress) from People
-- 假设查询出来加工资前和加工资后员工数据对比
select PeopleName 姓名, PeopleSex 性别,PeopleSalary 原始工资,PeopleSalary*1.2 加薪后的工资 from People
条件查询
对于查询的列或者表,进行条件赛选,得到我们所需的数据
SQL语句基础的运算符
-- SQL常用的运算符
= :等于表示是否相等或者赋值
!=:表示不相等
>,<,>=,<= :分别表示大于,小于,大于等于,小于等于
is null:表示为空
is not null:表示不为空
in:表示是否在其中
like:模糊查询
between...and...:比较是否在两者之间
and:逻辑与(两者必须都成立,条件才成立)
or:逻辑或(两者成立一个则条件成立)
not:逻辑非(条件成立,加not后表示表达式不成立)
-- and or not 其实相当于C语言中的&& || !
对于上述的运算符的合理运用,便能组合成条件,进行条件查询
上述运算符是基础,必须要掌握,下面是演示代码
-- 根据指定列(姓名,性别)查询女性员工
select PeopleName 姓名,PeopleSex 性别 from People where PeopleSex='女'
-- 查询月薪在10000-15000范围的男性员工
select PeopleName 姓名,PerPleSex 性别,PeopleSalary 薪水 from People where PeopleSex='男' and PeopleSalary >=10000 and PeopleSalary<=15000
-- 使用between....and...来实现上述语句
select PeopleName 姓名,PerPleSex 性别,PeopleSalary 薪水 from People where PeopleSex='男' and PeopleSalary between 10000 and 15000
-- 查询女性员工的薪水,并按照降序排序
-- 排序查询的语法,select *from 表名 order by 列(被排名的基准列)desc(默认是asc)
-- asc:升序(默认值,可以不写)desc:降序
select PeopleName 姓名,PerPleSex 性别,PeopleSalary 薪水 from People where PeopleSex='女' order by PeopleSalary desc
-- 我们对于员工的生日日期,规范使用的是“1988-1-1”(模板)
-- 三个内置函数,year(PeopleBirth),month(PeopleBirth),day(PeopleBirth),分别表示取得PeopleBirth的年月日
-- 如果我们需要查询员工是00后,并按照薪水的升序排列
select PeopleName 姓名,PeopleSex 性别,PeopleSalary 薪水,PeopleBirth 生日 from People where year(PeopleBirth) between 2000 and 2009 order by
-- 如果我们要得到员工的年龄:year(gettime())-year(PeopleBirth)
select PeopleName 姓名,PeopleBirth 生日 from People year(gettime())-year(PeopleBirth) between 30 and 40
-- 上述查询30-40岁的员工信息
-- 查询和某一员工相同地址的所有员工信息
select *from People where PeopleAddress=(select PeopleAddress from People where PeopleName='xxx')
-- 上述语句说明,查询语句本身就是可以作为一个条件,将查询的内容,作为条件
如果我们想要得到同一属性的员工数据,可以根据年龄,使用case end语句
-- case 相当于C语言中switch
-- end是结尾关键字
-- 在case后面可以输入数据,然后在case里,使用when...then来表示C语言中的if语句,else表示为C语言中的default
-- 比如我们这个员工的表格年份是从1984年开始的,1984年是鼠
-- 鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪
-- 0 1 2 3 4 5 6 7 8 9 10 11
-- 如果我们想要员工属鼠的数据
select *from People where year(PeopleBirth)%12=0
-- 我们显示所有人的属象,那么就根据%以及case...end语句来判断
select *,
case (year(PeopleBirth)%12)
when 0 then '鼠'
when 1 then '牛'
when 2 then '虎'
when 3 then '兔'
when 4 then '龙'
when 5 then '蛇'
when 6 then '马'
when 7 then '羊'
when 8 then '猴'
when 9 then '鸡'
when 11 then '狗'
when 12 then '猪'
else''
end 生肖
from People
模糊查询
模糊查询使用like关键字以及通配符来实现,下面是通配符
-- % :代表匹配任意字符(包括0)
-- _:表示匹配的字符有且只有一个
-- []: 代表匹配范围内 [1,2,3] 表示匹配数据中相关列的1 2 3数据的成员
-- [^]:表示匹配不在该范围内
下面是详细例子使用like和通配符来实现模糊查询
1.查询员工中姓王的员工
select *from People where PeopleName like '王%' --可以是王磊,王二狗等,以王头即可
2.查询电话号码,以138开头,以5181结尾
select *from People where PeoplePhone like '138%5181' and len(PeoplePhone)=13 --中间字符是任意的,且保证为13位数字
3.找到名字里面有’红‘的员工
select *from People where PeopleName like '%红%'
-- substring(PeopleName,1,1) 表示在PeopleName数据中从第一个位置,选择一个字符的数据