From 628d266e4949344125e7847b07cbede3eb55eaa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= <1924969174@qq.com> Date: Thu, 22 Sep 2022 02:50:09 +0000 Subject: [PATCH 1/6] =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘永潘 <1924969174@qq.com> --- .../2022-9-22\344\275\234\344\270\232.sql" | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 "16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-22\344\275\234\344\270\232.sql" diff --git "a/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-22\344\275\234\344\270\232.sql" "b/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-22\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..2049095 --- /dev/null +++ "b/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-22\344\275\234\344\270\232.sql" @@ -0,0 +1,46 @@ +use TEST04; +select * from Student; +select * from Course; +select * from Teacher; +select * from SC; +--13. ƽɼӸߵʾѧпγ̵ijɼԼƽɼ +select st.SId,st.Sname ,sc1.score ,sc2.score ѧ,sc3.score Ӣ,ƽɼ from Student St +left join SC sc1 on st.SId=SC1.SId and SC1.CId='01' +left join SC sc2 on st.SId=SC2.SId and SC2.CId='02' +left join SC sc3 on st.SId=SC3.SId and SC3.CId='03' +left join ( +select st.SId,AVG(score) ƽɼ from Student st +left join SC on st.SId=sc.SId +group by st.sid +)a +on st.SId=a.SId +order by ƽɼ desc + + +select a1.*,avg1 from sc a1 left join +(select sid,avg(score) as avg1 from sc group by sid +)b on a1.SId=b.sid + order by avg1 desc +--14. ѯƳɼ߷֡ͷֺƽ֣ +--ʽʾγ IDγ name߷֣ͷ֣ƽ֣ʣеʣʣ +--Ϊ>=60еΪ70-80Ϊ80-90Ϊ>=90 +--Ҫγ̺źѡѯУͬγ̺ +SELECT co.cid AS γid ,co.Cname AS γ,MAX(sc.score) AS ߷, MIN(sc.score)AS ͷ ,AVG(sc.score) AS ƽ , + SUM(CASE WHEN sc.score >= 60 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS , + SUM(CASE WHEN sc.score >= 70 AND sc.score< 80 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS е, + SUM(CASE WHEN sc.score >= 80 AND sc.score<90 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS , + SUM(CASE WHEN sc.score >= 90 THEN 1 ELSE 0 END)/COUNT(sc.[SId]) AS +FROM Course co +inner join SC on co.CId=sc.CId +group by co.cid ,co.Cname + +--15. Ƴɼ򣬲ʾ Score ظʱοȱ +select *,RANK() over(partition by cid order by score desc) rank from sc +--15.1 Ƴɼ򣬲ʾ Score ظʱϲ +select *,DENSE_RANK() over(partition by cid order by score desc) rank from sc +--16. ѯѧܳɼܷظʱοȱ +select sid,sum(score),rank() over(partition by sid order by sum(score) desc) rank from sc +group by sid +--16.1 ѯѧܳɼܷظʱοȱ +select sid,sum(score),ROW_NUMBER() over(partition by sid order by sum(score)desc) rank from sc +group by sid \ No newline at end of file -- Gitee From 30ffec104055a2695424b8b026787b0caf268774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= <1924969174@qq.com> Date: Thu, 22 Sep 2022 02:52:55 +0000 Subject: [PATCH 2/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2016?= =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98/=E4=BD=9C=E4=B8=9A/2022-09-18?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=AC=94=E8=AE=B0.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\350\257\242\347\254\224\350\256\260.txt" | 198 ------------------ 1 file changed, 198 deletions(-) delete mode 100644 "16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-09-18\346\237\245\350\257\242\347\254\224\350\256\260.txt" diff --git "a/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-09-18\346\237\245\350\257\242\347\254\224\350\256\260.txt" "b/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-09-18\346\237\245\350\257\242\347\254\224\350\256\260.txt" deleted file mode 100644 index 0b3764e..0000000 --- "a/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-09-18\346\237\245\350\257\242\347\254\224\350\256\260.txt" +++ /dev/null @@ -1,198 +0,0 @@ -#### 基础查询 - -1. 查询所有行所有列 -2. 指定列查询(姓名,性别,月薪,电话) -3. 指定列查询,并自定义中文列名(姓名,性别,月薪,电话) -4. 查询公司员工所在城市(不需要重复数据) -5. 假设工资普调10%,查询原始工资和调整后的工资,显示(姓名,性别,月薪,加薪后的月薪)(添加列查询)。 - -#### 条件查询 - -**SQL中常用运算符** - -```sql -=:等于,比较是否相等及赋值 -!=:比较不等于 ->:比较大于 -<:比较小于 ->=:比较大于等于 -<=:比较小于等于 -IS NULL:比较为空 -IS NOT NULL:比较不为空 -in:比较是否在其中 -like:模糊查询 -BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 -and:逻辑与(两个条件同时成立表达式成立) -or:逻辑或(两个条件有一个成立表达式成立) -not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) -``` - -1. 根据指定列(姓名,性别,月薪,电话)查询性别为女的员工信息,并自定义中文列名 -2. 查询月薪大于等于10000 的员工信息( 单条件 ) -3. 查询月薪大于等于10000 的女员工信息(多条件) -4. 显示出出身年月在1980-1-1之后,而且月薪大于等于10000的女员工信息。 -5. 显示出月薪大于等于15000 的员工,或者月薪大于等于8000的女员工信息。 -6. 查询月薪在10000-20000 之间员工信息( 多条件 ) -7. 查询出地址在北京或者上海的员工信息 -8. 查询所有员工信息(根据工资排序,降序排列) -9. 显示所有的员工信息,按照名字的长度进行倒序排列 -10. 查询工资最高的5个人的信息 -11. 查询工资最高的10%的员工信息 -12. 查询出地址没有填写的员工信息 -13. 查询出地址已经填写的员工信息 -14. 查询所有的80后员工信息 -15. 查询年龄在30-40 之间,并且工资在15000-30000 之间的员工信息 -16. 查询出巨蟹 6.22--7.22 的员工信息 -17. 查询工资比赵云高的人 -18. 查询出和赵云在同一个城市的人 -19. 查询出生肖为鼠的人员信息 -20. 查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) - -#### 模糊查询 - -模糊查询使用like关键字和通配符结合来实现,通配符具体含义如下: - -```sql -%:代表匹配0个字符、1个字符或多个字符。 -_:代表匹配有且只有1个字符。 -[]:代表匹配范围内 -[^]:代表匹配不在范围内 -``` - -1. 查询姓刘的员工信息 -2. 查询名字中含有 " 尚 " 的员工信息 -3. 显示名字中含有“尚”或者“史”的员工信息 -4. 查询姓刘的员工,名字是2个字 -5. 查询出名字最后一个字是香,名字一共三个字的员工信息 -6. 查询出电话号码开头138的员工信息 -7. 查询出电话号码开头138的员工信息,第4位可能是7,可能8 ,最后一个号码是5 -8. 查询出电话号码开头133的员工信息,第4位是2-5之间的数字 ,最后一个号码不是2和3 - -#### 聚合函数 - -SQL SERVER中聚合函数主要有: - -```sql -count:求数量 -max:求最大值 -min:求最小值 -sum:求和 -avg:求平均值 -``` - -1. 求员工总人数 -2. 求最大值,求最高工资 -3. 求最小值,求最小工资 -4. 求和,求所有员工的工资总和 -5. 求平均值,求所有员工的平均工资 -6. 求数量,最大值,最小值,总和,平均值,在一行显示 -7. 查询出武汉地区的员工人数,总工资,最高工资,最低工资和平均工资 -8. 求出工资比平均工资高的人员信息 -9. 求数量,年龄最大值,年龄最小值,年龄总和,年龄平均值,在一行显示 -10. 计算出月薪在10000 以上的男性员工的最大年龄,最小年龄和平均年龄 -11. 统计出所在地在“武汉或上海”的所有女员工数量以及最大年龄,最小年龄和平均年龄 -12. 求出年龄比平均年龄高的人员信息 - -ROUND函数用法: - -```sql -round(num,len,[type]) -其中: -num表示需要处理的数字,len表示需要保留的长度,type处理类型(0是默认值代表四舍五入,非0代表直接截取) -select ROUND(123.45454,3) --123.45500 -select ROUND(123.45454,3,1) --123.45400 -``` - -CONVERT()与CAST()函数: - -```sql ---1.保留小数 -convert(decimal(13,2),12.45454) -cast(12.45454 as decimal(13,2)) ---2.强制转换类型 -``` - - - -#### SQL中常用的时间函数 - -```sql -select DATEDIFF(day, '2019-08-20', getDate()); --获取指定时间单位的差值 -SELECT DATEADD(MINUTE,-5,GETDATE()) --加减时间,此处为获取五分钟前的时间,MINUTE 表示分钟,可为 YEAR,MONTH,DAY,HOUR -select DATENAME(month, getDate()); --当前月份 -select DATENAME(WEEKDAY, getDate()); --当前星期几 -select DATEPART(month, getDate()); --当前月份 -select DAY(getDate()); --返回当前日期天数 -select MONTH(getDate()); --返回当前日期月数 -select YEAR(getDate()); --返回当前日期年数 - -SELECT CONVERT(VARCHAR(22),GETDATE(),20) --2020-01-09 14:46:46 -SELECT CONVERT(VARCHAR(24),GETDATE(),21) --2020-01-09 14:46:55.91 -SELECT CONVERT(VARCHAR(22),GETDATE(),23) --2020-01-09 -SELECT CONVERT(VARCHAR(22),GETDATE(),24) --15:04:07 -Select CONVERT(varchar(20),GETDATE(),14) --15:05:49:330 -``` - -**时间格式控制字符串:** - -| 名称 | 日期单位 | 缩写 | -| ------------ | ----------- | --------- | -| 年 | year | yyyy 或yy | -| 季度 | quarter | qq,q | -| 月 | month | mm,m | -| 一年中第几天 | dayofyear | dy,y | -| 日 | day | dd,d | -| 一年中第几周 | week | wk,ww | -| 星期 | weekday | dw | -| 小时 | Hour | hh | -| 分钟 | minute | mi,n | -| 秒 | second | ss,s | -| 毫秒 | millisecond | ms | - -#### 分组查询 group by - -1. 根据员工所在地区分组统计员工人数 ,员工工资总和 ,平均工资,最高工资和最低工资 -2. 根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,1985 年及以后出身的员工不参与统计。 -3. 根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,要求筛选出员工人数至少在2人及以上的记录,并且1985年及以后出身的员工不参与统计。 - -#### 多表查询 - -##### 简单多表 - -1. **查询员工信息,同时显示部门名称** -2. **查询员工信息,同时显示职级名称** -3. **查询员工信息,同时显示部门名称,职位名称** - -##### 内连接 题目同上 - -##### 综合示例 - -1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 -2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 -3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 -4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 -5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 - - - -**其他链接:左外连接,右外链接,自连接等** - - - -SQL语句执行顺序: - -```sql -(7) SELECT -(8) DISTINCT -(1) FROM -(3) JOIN -(2) ON -(4) WHERE -(5) GROUP BY -(6) HAVING -(9) ORDER BY -(10) LIMIT -``` - - - -- Gitee From a76d1764de9b328270b1fe4911d4af2d8f9f1413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= <1924969174@qq.com> Date: Thu, 22 Sep 2022 02:55:41 +0000 Subject: [PATCH 3/6] =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘永潘 <1924969174@qq.com> --- .../2022-9-22\347\254\224\350\256\260.txt" | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 "16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-22\347\254\224\350\256\260.txt" diff --git "a/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-22\347\254\224\350\256\260.txt" "b/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-22\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..1218f26 --- /dev/null +++ "b/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-22\347\254\224\350\256\260.txt" @@ -0,0 +1,15 @@ +row_number 不跳跃式排序 +80 1 +78 2 +78 3 +60 4 +rank 跳跃式排序 +80 1 +78 2 +78 2 +60 4 +danse_rank 连续式排序 +80 1 +78 2 +78 2 +60 3 \ No newline at end of file -- Gitee From 00a4d4ef108e8b80893662993309e18fd3e95d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= <1924969174@qq.com> Date: Thu, 22 Sep 2022 02:55:59 +0000 Subject: [PATCH 4/6] =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘永潘 <1924969174@qq.com> --- .../2022-9-18\344\275\234\344\270\232.sql" | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 "16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-18\344\275\234\344\270\232.sql" diff --git "a/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-18\344\275\234\344\270\232.sql" "b/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-18\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..db3852e --- /dev/null +++ "b/16\345\210\230\346\260\270\346\275\230/\344\275\234\344\270\232/2022-9-18\344\275\234\344\270\232.sql" @@ -0,0 +1,48 @@ +--1. ѯ人еԱϢҪʾԼԱϸ +select d.DepartmentName,p.* from People p +inner join Department d on d.DepartmentId=p.DepartmentId +where p.PeopleAddress='人'; + +--2. ѯ人еԱϢҪʾƣְԼԱϸ +select d.DepartmentName,r.RankName,p.* from People p +inner join Department d on d.DepartmentId=p.DepartmentId +inner join Rank r on r.RankId=p.RankId +where p.PeopleAddress='人'; + + +--3. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʡ +select count(*),sum(PeopleSalary)Աܺ,avg(PeopleSalary)ƽ,max(PeopleSalary)߹,min(PeopleSalary)͹ from People +group by DepartmentId +--4. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʣ +--ƽ10000 µIJͳƣҸƽʽС +select count(*),sum(PeopleSalary)Աܺ,avg(PeopleSalary)ƽ,max(PeopleSalary)߹,min(PeopleSalary)͹ from People p +inner join Department d on d.DepartmentId=p.DepartmentId +group by d.DepartmentName +having avg(PeopleSalary)>=10000 +order by avg(PeopleSalary) asc +--5. ݲƣȻְλƣͳԱԱܺͣƽʣ߹ʺ͹ +select COUNT(*)ͳԱ,avg(p.PeopleSalary)ƽ,max(p.PeopleSalary)߹,min(p.PeopleSalary)͹ from People p +inner join Department d on d.DepartmentId=p.DepartmentId +inner join Rank r on r.RankId=p.RankId +group by d.DepartmentName,r.RankName + +--6.ѯз 6.22--7.22 ԱϢ +select * from people where +(MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22) or +(MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22) +--7.ѯԱϢһʾ(,ţ,,,,,,,,,,) +select * , +case when datepart(YY,PeopleBirth)%12=0 then'' +when datepart(YY,PeopleBirth)%12=1 then'ţ' +when datepart(YY,PeopleBirth)%12=2 then'' +when datepart(YY,PeopleBirth)%12=3 then'' +when datepart(YY,PeopleBirth)%12=4 then'' +when datepart(YY,PeopleBirth)%12=5 then'' +when datepart(YY,PeopleBirth)%12=6 then'' +when datepart(YY,PeopleBirth)%12=7 then'' +when datepart(YY,PeopleBirth)%12=8 then'' +when datepart(YY,PeopleBirth)%12=9 then'' +when datepart(YY,PeopleBirth)%12=10 then'' +when datepart(YY,PeopleBirth)%12=11 then'' +end as +from people \ No newline at end of file -- Gitee From 5cc10bf2a3401d09e0ac66abea113176fffb595f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= <1924969174@qq.com> Date: Thu, 22 Sep 2022 02:56:11 +0000 Subject: [PATCH 5/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2016?= =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98/=E7=AC=94=E8=AE=B0/2022-9-18?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2022-9-18\344\275\234\344\270\232.sql" | 48 ------------------- 1 file changed, 48 deletions(-) delete mode 100644 "16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\344\275\234\344\270\232.sql" diff --git "a/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\344\275\234\344\270\232.sql" "b/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\344\275\234\344\270\232.sql" deleted file mode 100644 index aaad133..0000000 --- "a/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\344\275\234\344\270\232.sql" +++ /dev/null @@ -1,48 +0,0 @@ ---1. ѯ人еԱϢҪʾԼԱϸ -select d.DepartmentName,p.* from People p -inner join Department d on d.DepartmentId=p.DepartmentId -where p.PeopleAddress='人'; - ---2. ѯ人еԱϢҪʾƣְԼԱϸ -select d.DepartmentName,r.RankName,p.* from People p -inner join Department d on d.DepartmentId=p.DepartmentId -inner join Rank r on r.RankId=p.RankId -where p.PeopleAddress='人'; - - ---3. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʡ -select count(*),sum(PeopleSalary)Աܺ,avg(PeopleSalary)ƽ,max(PeopleSalary)߹,min(PeopleSalary)͹ from People -group by DepartmentId ---4. ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʣ ---ƽ10000 µIJͳƣҸƽʽС -select count(*),sum(PeopleSalary)Աܺ,avg(PeopleSalary)ƽ,max(PeopleSalary)߹,min(PeopleSalary)͹ from People p -inner join Department d on d.DepartmentId=p.DepartmentId -group by d.DepartmentName -having avg(PeopleSalary)>=10000 -order by avg(PeopleSalary) asc ---5. ݲƣȻְλƣͳԱԱܺͣƽʣ߹ʺ͹ -select COUNT(*)ͳԱ,avg(p.PeopleSalary)ƽ,max(p.PeopleSalary)߹,min(p.PeopleSalary)͹ from People p -inner join Department d on d.DepartmentId=p.DepartmentId -inner join Rank r on r.RankId=p.RankId -group by d.DepartmentName,r.RankName - ---6.ѯз 6.22--7.22 ԱϢ -select * from people where -(MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22) or -(MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22) ---7.ѯԱϢһʾ(,ţ,,,,,,,,,,) -select * , -case when datepart(YY,PeopleBirth)%12=0 then'' -when datepart(YY,PeopleBirth)%12=1 then'ţ' -when datepart(YY,PeopleBirth)%12=2 then'' -when datepart(YY,PeopleBirth)%12=3 then'' -when datepart(YY,PeopleBirth)%12=4 then'' -when datepart(YY,PeopleBirth)%12=5 then'' -when datepart(YY,PeopleBirth)%12=6 then'' -when datepart(YY,PeopleBirth)%12=7 then'' -when datepart(YY,PeopleBirth)%12=8 then'' -when datepart(YY,PeopleBirth)%12=9 then'' -when datepart(YY,PeopleBirth)%12=10 then'' -when datepart(YY,PeopleBirth)%12=11 then'' -end as -from people -- Gitee From efc4bb985c901f4d8331c956b21463b8bdae320a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= <1924969174@qq.com> Date: Thu, 22 Sep 2022 02:56:22 +0000 Subject: [PATCH 6/6] =?UTF-8?q?=E5=88=98=E6=B0=B8=E6=BD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 刘永潘 <1924969174@qq.com> --- .../2022-9-18\347\254\224\350\256\260.txt" | 195 ++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 "16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\347\254\224\350\256\260.txt" diff --git "a/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\347\254\224\350\256\260.txt" "b/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..dcc5a3c --- /dev/null +++ "b/16\345\210\230\346\260\270\346\275\230/\347\254\224\350\256\260/2022-9-18\347\254\224\350\256\260.txt" @@ -0,0 +1,195 @@ +#### 基础查询 + +1. 查询所有行所有列 +2. 指定列查询(姓名,性别,月薪,电话) +3. 指定列查询,并自定义中文列名(姓名,性别,月薪,电话) +4. 查询公司员工所在城市(不需要重复数据) +5. 假设工资普调10%,查询原始工资和调整后的工资,显示(姓名,性别,月薪,加薪后的月薪)(添加列查询)。 + +#### 条件查询 + +**SQL中常用运算符** + +```sql +=:等于,比较是否相等及赋值 +!=:比较不等于 +>:比较大于 +<:比较小于 +>=:比较大于等于 +<=:比较小于等于 +IS NULL:比较为空 +IS NOT NULL:比较不为空 +in:比较是否在其中 +like:模糊查询 +BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +and:逻辑与(两个条件同时成立表达式成立) +or:逻辑或(两个条件有一个成立表达式成立) +not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) +``` + +1. 根据指定列(姓名,性别,月薪,电话)查询性别为女的员工信息,并自定义中文列名 +2. 查询月薪大于等于10000 的员工信息( 单条件 ) +3. 查询月薪大于等于10000 的女员工信息(多条件) +4. 显示出出身年月在1980-1-1之后,而且月薪大于等于10000的女员工信息。 +5. 显示出月薪大于等于15000 的员工,或者月薪大于等于8000的女员工信息。 +6. 查询月薪在10000-20000 之间员工信息( 多条件 ) +7. 查询出地址在北京或者上海的员工信息 +8. 查询所有员工信息(根据工资排序,降序排列) +9. 显示所有的员工信息,按照名字的长度进行倒序排列 +10. 查询工资最高的5个人的信息 +11. 查询工资最高的10%的员工信息 +12. 查询出地址没有填写的员工信息 +13. 查询出地址已经填写的员工信息 +14. 查询所有的80后员工信息 +15. 查询年龄在30-40 之间,并且工资在15000-30000 之间的员工信息 +16. 查询出巨蟹 6.22--7.22 的员工信息 +17. 查询工资比赵云高的人 +18. 查询出和赵云在同一个城市的人 +19. 查询出生肖为鼠的人员信息 +20. 查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) + +#### 模糊查询 + +模糊查询使用like关键字和通配符结合来实现,通配符具体含义如下: + +```sql +%:代表匹配0个字符、1个字符或多个字符。 +_:代表匹配有且只有1个字符。 +[]:代表匹配范围内 +[^]:代表匹配不在范围内 +``` + +1. 查询姓刘的员工信息 +2. 查询名字中含有 " 尚 " 的员工信息 +3. 显示名字中含有“尚”或者“史”的员工信息 +4. 查询姓刘的员工,名字是2个字 +5. 查询出名字最后一个字是香,名字一共三个字的员工信息 +6. 查询出电话号码开头138的员工信息 +7. 查询出电话号码开头138的员工信息,第4位可能是7,可能8 ,最后一个号码是5 +8. 查询出电话号码开头133的员工信息,第4位是2-5之间的数字 ,最后一个号码不是2和3 + +#### 聚合函数 + +SQL SERVER中聚合函数主要有: + +```sql +count:求数量 +max:求最大值 +min:求最小值 +sum:求和 +avg:求平均值 +``` + +1. 求员工总人数 +2. 求最大值,求最高工资 +3. 求最小值,求最小工资 +4. 求和,求所有员工的工资总和 +5. 求平均值,求所有员工的平均工资 +6. 求数量,最大值,最小值,总和,平均值,在一行显示 +7. 查询出武汉地区的员工人数,总工资,最高工资,最低工资和平均工资 +8. 求出工资比平均工资高的人员信息 +9. 求数量,年龄最大值,年龄最小值,年龄总和,年龄平均值,在一行显示 +10. 计算出月薪在10000 以上的男性员工的最大年龄,最小年龄和平均年龄 +11. 统计出所在地在“武汉或上海”的所有女员工数量以及最大年龄,最小年龄和平均年龄 +12. 求出年龄比平均年龄高的人员信息 + +ROUND函数用法: + +```sql +round(num,len,[type]) +其中: +num表示需要处理的数字,len表示需要保留的长度,type处理类型(0是默认值代表四舍五入,非0代表直接截取) +select ROUND(123.45454,3) --123.45500 +select ROUND(123.45454,3,1) --123.45400 +``` + +CONVERT()与CAST()函数: + +```sql +--1.保留小数 +convert(decimal(13,2),12.45454) +cast(12.45454 as decimal(13,2)) +--2.强制转换类型 +``` + + + +#### SQL中常用的时间函数 + +```sql +select DATEDIFF(day, '2019-08-20', getDate()); --获取指定时间单位的差值 +SELECT DATEADD(MINUTE,-5,GETDATE()) --加减时间,此处为获取五分钟前的时间,MINUTE 表示分钟,可为 YEAR,MONTH,DAY,HOUR +select DATENAME(month, getDate()); --当前月份 +select DATENAME(WEEKDAY, getDate()); --当前星期几 +select DATEPART(month, getDate()); --当前月份 +select DAY(getDate()); --返回当前日期天数 +select MONTH(getDate()); --返回当前日期月数 +select YEAR(getDate()); --返回当前日期年数 + +SELECT CONVERT(VARCHAR(22),GETDATE(),20) --2020-01-09 14:46:46 +SELECT CONVERT(VARCHAR(24),GETDATE(),21) --2020-01-09 14:46:55.91 +SELECT CONVERT(VARCHAR(22),GETDATE(),23) --2020-01-09 +SELECT CONVERT(VARCHAR(22),GETDATE(),24) --15:04:07 +Select CONVERT(varchar(20),GETDATE(),14) --15:05:49:330 +``` + +**时间格式控制字符串:** + +| 名称 | 日期单位 | 缩写 | +| ------------ | ----------- | --------- | +| 年 | year | yyyy 或yy | +| 季度 | quarter | qq,q | +| 月 | month | mm,m | +| 一年中第几天 | dayofyear | dy,y | +| 日 | day | dd,d | +| 一年中第几周 | week | wk,ww | +| 星期 | weekday | dw | +| 小时 | Hour | hh | +| 分钟 | minute | mi,n | +| 秒 | second | ss,s | +| 毫秒 | millisecond | ms | + +#### 分组查询 group by + +1. 根据员工所在地区分组统计员工人数 ,员工工资总和 ,平均工资,最高工资和最低工资 +2. 根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,1985 年及以后出身的员工不参与统计。 +3. 根据员工所在地区分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,要求筛选出员工人数至少在2人及以上的记录,并且1985年及以后出身的员工不参与统计。 + +#### 多表查询 + +##### 简单多表 + +1. **查询员工信息,同时显示部门名称** +2. **查询员工信息,同时显示职级名称** +3. **查询员工信息,同时显示部门名称,职位名称** + +##### 内连接 题目同上 + +##### 综合示例 + +1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 +2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 + + + +**其他链接:左外连接,右外链接,自连接等** + + + +SQL语句执行顺序: + +```sql +(7) SELECT +(8) DISTINCT +(1) FROM +(3) JOIN +(2) ON +(4) WHERE +(5) GROUP BY +(6) HAVING +(9) ORDER BY +(10) LIMIT +``` \ No newline at end of file -- Gitee