From 6db860c2f206996e3abc6efa23c2908fc52197fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 06:18:11 +0000 Subject: [PATCH 1/8] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=2001=E6=9D=8E?= =?UTF-8?q?=E9=9F=A6=E5=B3=B02/2022-09-16=20=E6=9F=A5=E8=AF=A2=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A/SQLQuery1.sql=20=E4=B8=BA=2001=E6=9D=8E=E9=9F=A6?= =?UTF-8?q?=E5=B3=B02/2022-09-16=20=E6=9F=A5=E8=AF=A2=E4=BD=9C=E4=B8=9A/20?= =?UTF-8?q?22-09-16=20=E6=9F=A5=E8=AF=A2=E4=BD=9C=E4=B8=9A.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...22-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/SQLQuery1.sql" => "01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" (100%) diff --git "a/01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/SQLQuery1.sql" "b/01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" similarity index 100% rename from "01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/SQLQuery1.sql" rename to "01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" -- Gitee From bd7659515dff6bcac92a754023b01d04d709ab96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 06:25:06 +0000 Subject: [PATCH 2/8] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=2001=E6=9D=8E?= =?UTF-8?q?=E9=9F=A6=E5=B3=B0/2022-09-16=20=E5=BB=BA=E5=BA=93=E5=BB=BA?= =?UTF-8?q?=E8=A1=A8=E4=BD=9C=E4=B8=9A=20=E4=B8=BA=2001=E6=9D=8E=E9=9F=A6?= =?UTF-8?q?=E5=B3=B0/2022-09-15=20=E5=BB=BA=E5=BA=93=E5=BB=BA=E8=A1=A8?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work.sql" | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename "01\346\235\216\351\237\246\345\263\260/2022-09-16 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" => "01\346\235\216\351\237\246\345\263\260/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" (100%) diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" "b/01\346\235\216\351\237\246\345\263\260/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" similarity index 100% rename from "01\346\235\216\351\237\246\345\263\260/2022-09-16 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" rename to "01\346\235\216\351\237\246\345\263\260/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" -- Gitee From 568454f8e81698287e11dcffde64942255874c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 06:25:21 +0000 Subject: [PATCH 3/8] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=2001=E6=9D=8E?= =?UTF-8?q?=E9=9F=A6=E5=B3=B0/2022-09-16=20=E7=AC=94=E8=AE=B0=20=E4=B8=BA?= =?UTF-8?q?=2001=E6=9D=8E=E9=9F=A6=E5=B3=B0/2022-09-15=20=E7=AC=94?= =?UTF-8?q?=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...45\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "01\346\235\216\351\237\246\345\263\260/2022-09-16 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" => "01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" (100%) diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" "b/01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" similarity index 100% rename from "01\346\235\216\351\237\246\345\263\260/2022-09-16 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" rename to "01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" -- Gitee From 0cea9ed1438f0832fab444877fe8774b21e471b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 06:25:47 +0000 Subject: [PATCH 4/8] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2001?= =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B02?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\350\257\242\344\275\234\344\270\232.sql" | 62 ------- ...45\350\257\242\347\254\224\350\256\260.md" | 160 ------------------ 2 files changed, 222 deletions(-) delete mode 100644 "01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" delete mode 100644 "01\346\235\216\351\237\246\345\263\2602/2022-09-16\347\254\224\350\256\260/\346\237\245\350\257\242\347\254\224\350\256\260.md" diff --git "a/01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" "b/01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" deleted file mode 100644 index d5aeeb7..0000000 --- "a/01\346\235\216\351\237\246\345\263\2602/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" +++ /dev/null @@ -1,62 +0,0 @@ ---1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 -select D.DepartmentName,P.* from People P -join Department D on D.DepartmentId = P.DepartmentId -where P.PeopleAddress = '武汉'; - - ---2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 -select D.DepartmentName,R.RankName,P.* from People P -join Department D on D.DepartmentId = P.DepartmentId -join [Rank] R on R.RankId = P.RankId -where P.PeopleAddress = '武汉'; - - ---3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 -select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People -join Department D on D.DepartmentId = People.DepartmentId -group by D.DepartmentName - ---4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 -select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People -join Department D on D.DepartmentId = People.DepartmentId -where People.PeopleSalary >= 10000 -group by D.DepartmentName -order by 平均工资 desc - - ---5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 -select D.DepartmentName,R.RankName,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People P -join Department D on D.DepartmentId = P.DepartmentId -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) between 6 and 7 ; - - ---7.查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) -select *,( -CASE convert(int,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 '10' then '马' -WHEN '11' then '羊' -end)生肖 -from People - -select *,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(year(PeopleBirth)%12 ,10,'马'),11,'羊'),9,'蛇'),8,'龙'),7,'兔'),6,'虎') ,5,'牛'),4,'鼠'),3,'猪'),2,'狗'),1,'鸡'),0,'猴')生肖 from People - - - - -select *,replace(PeopleSalary,9000,'九千') from People \ No newline at end of file diff --git "a/01\346\235\216\351\237\246\345\263\2602/2022-09-16\347\254\224\350\256\260/\346\237\245\350\257\242\347\254\224\350\256\260.md" "b/01\346\235\216\351\237\246\345\263\2602/2022-09-16\347\254\224\350\256\260/\346\237\245\350\257\242\347\254\224\350\256\260.md" deleted file mode 100644 index 9b1e4e5..0000000 --- "a/01\346\235\216\351\237\246\345\263\2602/2022-09-16\347\254\224\350\256\260/\346\237\245\350\257\242\347\254\224\350\256\260.md" +++ /dev/null @@ -1,160 +0,0 @@ -#### 鍩虹鏌ヨ - -#### 1.鏉′欢鏌ヨ - -**SQL涓父鐢ㄨ繍绠楃** - -```sql -=锛氱瓑浜庯紝姣旇緝鏄惁鐩哥瓑鍙婅祴鍊 -!=锛氭瘮杈冧笉绛変簬 ->锛氭瘮杈冨ぇ浜 -<锛氭瘮杈冨皬浜 ->=锛氭瘮杈冨ぇ浜庣瓑浜 -<=锛氭瘮杈冨皬浜庣瓑浜 -IS NULL锛氭瘮杈冧负绌 -IS NOT NULL锛氭瘮杈冧笉涓虹┖ -in锛氭瘮杈冩槸鍚﹀湪鍏朵腑 -like锛氭ā绯婃煡璇 -BETWEEN...AND...锛氭瘮杈冩槸鍚﹀湪涓よ呬箣闂 50-100 BETWEEN 50 AND 100 -and锛氶昏緫涓庯紙涓や釜鏉′欢鍚屾椂鎴愮珛琛ㄨ揪寮忔垚绔嬶級 -or锛氶昏緫鎴栵紙涓や釜鏉′欢鏈変竴涓垚绔嬭〃杈惧紡鎴愮珛锛 -not锛氶昏緫闈烇紙鏉′欢鎴愮珛锛岃〃杈惧紡鍒欎笉鎴愮珛锛涙潯浠朵笉鎴愮珛锛岃〃杈惧紡鍒欐垚绔嬶級 -``` - - - -#### 2.妯$硦鏌ヨ - -妯$硦鏌ヨ浣跨敤like鍏抽敭瀛楀拰閫氶厤绗︾粨鍚堟潵瀹炵幇锛岄氶厤绗﹀叿浣撳惈涔夊涓嬶細 - -```sql -%锛氫唬琛ㄥ尮閰0涓瓧绗︺1涓瓧绗︽垨澶氫釜瀛楃銆 -_锛氫唬琛ㄥ尮閰嶆湁涓斿彧鏈1涓瓧绗︺ -[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 -[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 -渚嬪锛 ---鏌ヨ鍑虹數璇濆彿鐮佸紑澶138鐨勫憳宸ヤ俊鎭,绗4浣嶅彲鑳芥槸7锛屽彲鑳8 锛屾渶鍚庝竴涓彿鐮佹槸5 -select * from people -where PeoplePhone like '138[7-9]%5' --789 - ---鏌ヨ鍑虹數璇濆彿鐮佸紑澶133鐨勫憳宸ヤ俊鎭,绗4浣嶆槸2-5涔嬮棿鐨勬暟瀛 锛屾渶鍚庝竴涓彿鐮佷笉鏄2鍜3 -select * from people -where PeoplePhone like '138[2-5]%[^23]' - -``` - - - -#### 3.鑱氬悎鍑芥暟 - -SQL SERVER涓仛鍚堝嚱鏁颁富瑕佹湁锛 - -```sql -count:姹傛暟閲 -max:姹傛渶澶у -min:姹傛渶灏忓 -sum:姹傚拰 -avg:姹傚钩鍧囧 -``` - -ROUND鍑芥暟鐢ㄦ硶锛 - -```sql -round(num,len,[type]) -鍏朵腑: -num琛ㄧず闇瑕佸鐞嗙殑鏁板瓧锛宭en琛ㄧず闇瑕佷繚鐣欑殑闀垮害锛宼ype澶勭悊绫诲瀷(0鏄粯璁ゅ间唬琛ㄥ洓鑸嶄簲鍏ワ紝闈0浠h〃鐩存帴鎴彇) -select ROUND(123.45454,3) --123.45500 -select ROUND(123.45454,3,1) --123.45400 -``` - -CONVERT()涓嶤AST()鍑芥暟: - -```sql ---1.淇濈暀灏忔暟 -convert(decimal(13,2),12.45454) -cast(12.45454 as decimal(13,2)) ---2.寮哄埗杞崲绫诲瀷 - - -``` - - - -#### 4.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 鎴杫y | -| 瀛e害 | 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 | - -#### 5.鍒嗙粍鏌ヨ group by - -#### 澶氳〃鏌ヨ - -##### 绠鍗曞琛 - -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 61212b87c9f95978298b25bdfd2accacaa5c0560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 06:26:16 +0000 Subject: [PATCH 5/8] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 鏉庨煢宄 <2669441367@qq.com> --- ...5\350\257\242\344\275\234\344\270\232.sql" | 62 +++++++ ...45\350\257\242\347\254\224\350\256\260.md" | 160 ++++++++++++++++++ 2 files changed, 222 insertions(+) create mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" create mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" "b/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..d40696d --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" @@ -0,0 +1,62 @@ +--1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 +select D.DepartmentName,P.* from People P +join Department D on D.DepartmentId = P.DepartmentId +where P.PeopleAddress = '武汉'; + + +--2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +select D.DepartmentName,R.RankName,P.* from People P +join Department D on D.DepartmentId = P.DepartmentId +join [Rank] R on R.RankId = P.RankId +where P.PeopleAddress = '武汉'; + + +--3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People +join Department D on D.DepartmentId = People.DepartmentId +group by D.DepartmentName + +--4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People +join Department D on D.DepartmentId = People.DepartmentId +where People.PeopleSalary >= 10000 +group by D.DepartmentName +order by 平均工资 desc + + +--5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 +select D.DepartmentName,R.RankName,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People P +join Department D on D.DepartmentId = P.DepartmentId +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) between 6 and 7 ; + + +--7.查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) +select *,( +CASE convert(int,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 '10' then '马' +WHEN '11' then '羊' +end)生肖 +from People + +select *,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(year(PeopleBirth)%12 ,10,'马'),11,'羊'),9,'蛇'),8,'龙'),7,'兔'),6,'虎') ,5,'牛'),4,'鼠'),3,'猪'),2,'狗'),1,'鸡'),0,'猴')生肖 from People + + + + +select *,replace(PeopleSalary,9000,'九千') from People \ No newline at end of file diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" "b/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" new file mode 100644 index 0000000..e32178a --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" @@ -0,0 +1,160 @@ +#### 鍩虹鏌ヨ + +#### 1.鏉′欢鏌ヨ + +**SQL涓父鐢ㄨ繍绠楃** + +```sql +=锛氱瓑浜庯紝姣旇緝鏄惁鐩哥瓑鍙婅祴鍊 +!=锛氭瘮杈冧笉绛変簬 +>锛氭瘮杈冨ぇ浜 +<锛氭瘮杈冨皬浜 +>=锛氭瘮杈冨ぇ浜庣瓑浜 +<=锛氭瘮杈冨皬浜庣瓑浜 +IS NULL锛氭瘮杈冧负绌 +IS NOT NULL锛氭瘮杈冧笉涓虹┖ +in锛氭瘮杈冩槸鍚﹀湪鍏朵腑 +like锛氭ā绯婃煡璇 +BETWEEN...AND...锛氭瘮杈冩槸鍚﹀湪涓よ呬箣闂 50-100 BETWEEN 50 AND 100 +and锛氶昏緫涓庯紙涓や釜鏉′欢鍚屾椂鎴愮珛琛ㄨ揪寮忔垚绔嬶級 +or锛氶昏緫鎴栵紙涓や釜鏉′欢鏈変竴涓垚绔嬭〃杈惧紡鎴愮珛锛 +not锛氶昏緫闈烇紙鏉′欢鎴愮珛锛岃〃杈惧紡鍒欎笉鎴愮珛锛涙潯浠朵笉鎴愮珛锛岃〃杈惧紡鍒欐垚绔嬶級 +``` + + + +#### 2.妯$硦鏌ヨ + +妯$硦鏌ヨ浣跨敤like鍏抽敭瀛楀拰閫氶厤绗︾粨鍚堟潵瀹炵幇锛岄氶厤绗﹀叿浣撳惈涔夊涓嬶細 + +```sql +%锛氫唬琛ㄥ尮閰0涓瓧绗︺1涓瓧绗︽垨澶氫釜瀛楃銆 +_锛氫唬琛ㄥ尮閰嶆湁涓斿彧鏈1涓瓧绗︺ +[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 +[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 +渚嬪锛 +--鏌ヨ鍑虹數璇濆彿鐮佸紑澶138鐨勫憳宸ヤ俊鎭,绗4浣嶅彲鑳芥槸7锛屽彲鑳8 锛屾渶鍚庝竴涓彿鐮佹槸5 +select * from people +where PeoplePhone like '138[7-9]%5' --789 + +--鏌ヨ鍑虹數璇濆彿鐮佸紑澶133鐨勫憳宸ヤ俊鎭,绗4浣嶆槸2-5涔嬮棿鐨勬暟瀛 锛屾渶鍚庝竴涓彿鐮佷笉鏄2鍜3 +select * from people +where PeoplePhone like '138[2-5]%[^23]' + +``` + + + +#### 3.鑱氬悎鍑芥暟 + +SQL SERVER涓仛鍚堝嚱鏁颁富瑕佹湁锛 + +```sql +count:姹傛暟閲 +max:姹傛渶澶у +min:姹傛渶灏忓 +sum:姹傚拰 +avg:姹傚钩鍧囧 +``` + +ROUND鍑芥暟鐢ㄦ硶锛 + +```sql +round(num,len,[type]) +鍏朵腑: +num琛ㄧず闇瑕佸鐞嗙殑鏁板瓧锛宭en琛ㄧず闇瑕佷繚鐣欑殑闀垮害锛宼ype澶勭悊绫诲瀷(0鏄粯璁ゅ间唬琛ㄥ洓鑸嶄簲鍏ワ紝闈0浠h〃鐩存帴鎴彇) +select ROUND(123.45454,3) --123.45500 +select ROUND(123.45454,3,1) --123.45400 +``` + +CONVERT()涓嶤AST()鍑芥暟: + +```sql +--1.淇濈暀灏忔暟 +convert(decimal(13,2),12.45454) +cast(12.45454 as decimal(13,2)) +--2.寮哄埗杞崲绫诲瀷 + + +``` + + + +#### 4.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 鎴杫y | +| 瀛e害 | 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 | + +#### 5.鍒嗙粍鏌ヨ group by + +#### 澶氳〃鏌ヨ + +##### 绠鍗曞琛 + +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 81b8314d36f92276d8716cbdf8fb08fc7c838c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98=E6=9D=8E=E9=9F=A6=E5=B3=B0=E2=80=99?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 19:27:56 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...9-\345\255\220\346\237\245\350\257\242.md" | 271 ++++++++++++++++++ ...-\345\255\220\346\237\245\350\257\242.sql" | 61 ++++ 2 files changed, 332 insertions(+) create mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" create mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" "b/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000..3f010cd --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,271 @@ +## 鍥為【 + +1. 鍙橀噺鐨勪娇鐢ㄣ傝鍏堢敤DECLARE 鍏抽敭瀛楀0鏄庯紝鐒跺悗鐢⊿ET鎴朣ELECT璧嬪笺傚眬閮ㄥ彉閲忓墠蹇呴』鏈 鈥淍鈥 浣滃墠缂锛屽叏灞鍙橀噺蹇呴』鏈 鈥淍@鈥 浣滃墠缂銆 +2. 鍙橀噺鐨勮緭鍑哄彲浠ョ敤锛歅RINT鎴朣ELECT璇彞銆 +3. 閫昏緫鎺у埗璇彞鎻愪緵浜嗘潯浠舵搷浣滄墍闇鐨勯『搴忓拰閫昏緫銆 +4. 鎵瑰鐞嗗彲浠ユ彁楂樿鍙ユ墽琛岀殑鏁堢巼锛屼娇鐢ㄢ淕O鈥濅綔涓虹粨鏉熸爣蹇椼 + + + +## 宓屽/瀛愭煡璇 + +#### 浠涔堟槸瀛愭煡璇紵 + +**闂:缂栧啓T-SQL璇彞锛屾煡璇⑩滈粍鐐滄澃鈥濆悓瀛︾殑鍒嗘暟澶т簬80 鍒嗙殑鑰冭瘯鎴愮哗璁板綍锛** + +```sql +--瀹炵幇鏂瑰紡1锛氳繛鎺ユ煡璇 + +--瀹炵幇鏂瑰紡2: 瀛愭煡璇 + +``` + + + +#### 瀛愭煡璇㈢殑鐗圭偣鍜屼紭鍔 + +1锛変娇鐢ㄧ伒娲汇 + +1. 鍙互鎴愪负SQL 璇彞鐨勫涓儴鍒嗐 +2. **瀛愭煡璇綔涓烘煡璇㈡潯浠朵娇鐢**銆 + +```sql +--缁冧範:鏌ヨ瀛﹀彿鍦ㄦ浘楣忓墠闈㈢殑鍚屽淇℃伅 +``` + +1. **瀛愭煡璇綔涓轰复鏃惰〃浣跨敤**銆 from () + +```sql +--缁冧範:鏌ヨ鎵鏈夊鐢熺殑HTML鎴愮哗锛屽鏋滃鐢熸病鏈夋垚缁╂樉绀簄ull +``` + +1. **瀛愭煡璇綔涓哄垪浣跨敤**銆 + +```sql +--缁冧範:鏌ヨ鎵鏈夊鐢熺殑HTML鎴愮哗锛屽鏋滃鐢熸病鏈夋垚缁╂樉绀簄ull +``` + +2锛夐檷浣嶴QL 鐨勮鍙ョ殑澶嶆潅搴︼紝鎻愰珮SQL 璇彞鐨勫彲璇绘с + +#### 瀛愭煡璇 + +![](https://gitee.com/snailclass/tuchuang/raw/master/img/image-20220906173549480-2022-9-1913:24:45.png) + +##### 鎸夌粨鏋滃垎绫 + +###### 鏍囬噺瀛愭煡璇 锛 + +**閫氬父鍙互浣跨敤杩炴帴鏌ヨ鏇夸唬** + +鏍囬噺瀛愭煡璇㈡槸鎸囧瓙鏌ヨ杩斿洖鐨勬槸**鍗曚竴鍊**锛屽涓涓暟瀛楁垨涓涓瓧绗︿覆銆 + +```sql +--1.鏌ヨ涔︾洰琛(tb_bibliography)涓紝鏉$爜鍙(barcode)涓"TP311锛13"鍥句功锛堥渶瑕佸湪鍥句功琛ㄤ腑鍏堟煡鎵"TP31L13"鐨処SBN鍙凤級鐨勫浘涔﹀悕绉(name)鍜屼綔鑰(author) + + +--2.鏌ヨ鍊熼槄琛(tb-record锛変腑濮撳悕涓"閭撴壙鏄"锛堥渶瑕佸湪瀛︾敓琛ㄤ腑鍏堟煡鎵"閭撴壙鏄'鐨勫鍙凤級鐨勫鐢熺殑鍊熼槄淇℃伅锛屾樉绀哄鍙(stu-num)鍜屾潯鐮佸彿(barcode) +``` + + + +###### 鍒楀瓙鏌ヨ + +**鍒楀瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炵殑缁撴灉闆嗘槸N琛1鍒**锛岃缁撴灉閫氬父鏉ヨ嚜瀵硅〃鏌愪釜瀛楁鐨勬煡璇㈢粨鏋滐紝甯**in鍏抽敭瀛**鐨勫瓙鏌ヨ鏄渶甯哥敤鐨勪竴绫诲瓙鏌ヨ锛屽湪浣跨敤in鍏抽敭瀛楄繘琛屾煡璇㈡椂锛屽瓙鏌ヨ璇彞杩斿洖鐨勭粨鏋滃簲璇ユ槸涓涓暟鎹垪涓殑澶氫釜鍊硷紝濡傛灉浠呰繑鍥1涓暟鍊硷紝鍒欏彲鐢ㄦ爣閲忓瓙鏌ヨ浠f浛銆 + +```sql +--in涔犻 +--鏌ヨ瀛︾敓琛(tb-student)涓拰榛勫紭鐩稿悓涓撲笟瀛︾敓璇昏呯殑瀛﹀彿(stu-num)濮撳悕(name)鍜屼笓涓(major) +--鍏堟煡璇 榛勫畯鐨 涓撲笟 +select major from tb_student where name='榛勫紭' +--in浠h〃:鍙绗﹀悎鍚庨潰鐨勬潯浠跺氨绛涢夊嚭鏉 +select * from tb_student where major in (select major from tb_student where name='榛勫紭') + + +--鏌ヨ瀛︾敓琛(tb-student)涓繕鏈繕涔︾殑璇昏呯殑瀛﹀彿(stu-num)鍜屽鍚(name) +--鏌ヨ鏈繕涔﹀鐢熺殑瀛﹀彿 +select stu_num from tb_record where return_time is null +--閫氳繃瀛﹀彿鏌ヨ瀛︾敓濮撳悕 +select * from tb_student where stu_num in (select stu_num from tb_record where return_time is null) + + +--all any some 涔犻 +--1.鏌ヨ瀛︾敓琛(tb-student)涓紝姣斾俊鎭闄㈠嚭鐢熸棩鏈熸渶澶х殑杩樿澶х殑鎵鏈夊鐢熻褰曪紝鍗虫瘮淇℃伅瀛﹂櫌骞撮緞鏈灏忕殑杩樿灏忕殑鎵鏈夎褰曪紝浣跨敤ALL鍏抽敭瀛楋紝鏄剧ず瀛︾敓鐨勫鍚(name)銆佸嚭鐢熸棩鏈(birth)鍜屾墍灞炲闄(school)锛屽悓鏍风殑缁撴灉灏濊瘯鐢╩ax()鍑芥暟鍐嶅疄鐜颁竴娆° +--淇℃伅瀛﹂櫌瀛︾敓鏈灏忓勾榫 +select birth from tb_student where school='淇℃伅瀛﹂櫌' +select max(birth) from tb_student where school='淇℃伅瀛﹂櫌' + +select * from tb_student where birth>(select max(birth) from tb_student where school='淇℃伅瀛﹂櫌' ) + +--all鍏抽敭瀛楋細>,<,= +select * from tb_student where birth>all(select birth from tb_student where school='淇℃伅瀛﹂櫌') +--2.鏌ヨ瀛︾敓琛(tb-student)涓紝姣斾俊鎭闄㈠嚭鐢熸棩鏈熸渶灏忕殑杩樿澶х殑鎵鏈夊鐢熻褰曪紝鍗虫瘮淇℃伅瀛﹂櫌骞撮緞鏈澶х殑杩樿灏忕殑鎵鏈夎褰曪紝浣跨敤ANY鍏抽敭瀛楋紝鏄剧ず瀛︾敓鐨勫鍚(name)銆佸嚭鐢熸棩鏈(birth)鍜屾墍灞炲闄(school)銆傚皾璇曠敤SOME鍏抽敭瀛椾唬鏇緼NY锛岄噸鏂版墽琛屽悗瑙傚療鏌ヨ缁撴灉銆 +select * from tb_student where birth>any(select birth from tb_student where school='淇℃伅瀛﹂櫌') +select * from tb_student where birth>some(select birth from tb_student where school='淇℃伅瀛﹂櫌') +--3.鏌ヨ涔︾洰琛(tb-bibliography)涓紝浣跨敤ANY鍏抽敭瀛楋紝姣忕绫诲瀷涓渶璐电殑鍥 涔﹀悕绉(name)鍜屼环鏍(price) +-- =any 涓 in 绛変环 +select max(price) 鏈璐电殑浠锋牸 from tb_bibliography group by category +select name 鍥句功鍚嶇О,price 浠锋牸 from tb_bibliography +where price in (select max(price) 鏈璐电殑浠锋牸 from tb_bibliography group by category) + +``` + + + +###### 琛屽瓙鏌ヨ + +琛屽瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炵殑缁撴灉闆嗘槸1琛孨鍒楋紝璇ュ瓙鏌ヨ鐨勭粨鏋滈氬父鏄琛ㄧ殑鏌愯鏁版嵁杩涜鏌ヨ鑰岃繑鍥炵殑缁撴灉闆嗐 + +```sql +--锛1锛夋煡璇功鐩〃(tb_bibliography)涓笌銆婄鐞嗕俊鎭郴缁熷疄鐢ㄦ暀绋嬶紙绗3鐗堬級銆嬪悓浣滆(author)锛屽悓绫诲瀷(category)鐨勪功銆 +--锛2锛夋煡璇㈠鐢熻〃(tb_student)涓笌"閭圭澘鐫'鍦ㄥ悓涓涓闄(school)涓斿悓涓骞寸骇锛堝鍙峰ご涓や綅鐩稿悓鍒欒〃鏄庡湪鍚屼竴骞寸骇锛夊鐢熺殑瀛﹀彿銆佸鍚嶅拰瀛﹂櫌銆 +``` + + + +###### 琛ㄥ瓙鏌ヨ(from瀛愭煡璇) + +琛ㄥ瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炴槸M琛孨鍒楃殑缁撴灉闆嗭紝鏌ヨ璇彞鍙祵濂楀湪FROM鍏 +閿瓧鍚庯紝涓旈渶瑕佸畾涔夊埆鍚嶃 + +```sql +--鏌ヨ姣忕鍥句功鍦ㄩ鐨勬湰鏁帮紝鏄剧ずISBN鍙(ISBN)銆佸浘涔﹀悕绉(name)鍜岃鍥句功鐨勫湪棣嗘暟閲忋 +``` + + + +##### 鎸変綅缃垎绫 + +###### exists瀛愭煡璇 + +鍏抽敭瀛桬XISTS鏋勯犲瓙鏌ヨ鏃讹紝褰撳瓙鏌ヨ鐨勭粨鏋滈泦涓嶄负绌烘椂锛屽垯EXISTS杩斿洖鐨勭粨鏋滀负TRUE锛屽灞傛煡璇㈣鍙ヨ繘琛屾煡璇紱褰撳瓙鏌ヨ鐨勭粨鏋滈泦涓虹┖鏃讹紝鍒橢XISTS杩斿洖鐨勭粨鏋滀负FALSE锛屽灞傛煡璇㈣鍙ヤ笉杩涜鏌ヨ銆 + +```sql +--锛1锛夋煡璇㈠鐢熻〃(tb-student)涓紝鏄惁鏈夊鐢熻鑰呯殑濮撳悕鏄"榛勫紭" +if exists(select stu_num from tb_record where stu_num in (select stu_num from tb_student where name='榛勫紭') and return_time is null) + print '鏈' +else + print '娌℃湁' + +--锛2锛夋煡璇功鐩〃(tb-bibliography)涓紝搴撳瓨鏁颁负0鐨勪功鐩悕绉(name) +``` + +## 鎺掑簭鍑芥暟 + +**鎺掑簭鍑芥暟 OVER( [鍒嗙粍瀛愬彞] 鎺掑簭瀛愬彞[DESC][ASC] )** + +**鎺掑簭瀛愬彞 锛歄RDER BY 鎺掑簭鍒,鎺掑簭鍒椻** + +缁冧範:浣跨敤鍚勪釜鎺掑悕鍑芥暟瀵瑰鍛樼殑Java 鎴愮哗杩涜鎺掑悕锛屽苟浠旂粏浣撲細鍏朵腑鎺掑簭鍑芥暟鐨勫叿浣撶敤娉曚笌鍏朵腑鐨勫尯鍒 + +```sql + +``` + +- ROW_NUMBER()鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑杩炵画鐨勫簭鍙** +- RANK()鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑鐨勫簭鍙凤紝浣嗘槸瀛樺湪骞跺垪骞朵笖璺崇┖** +- DENSE_RANK() 鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑鐨勫簭鍙凤紝浣嗘槸瀛樺湪骞跺垪涓嶈烦绌** + +鏍规嵁涓婇潰涓変釜鍑芥暟锛屾垜浠彲浠ュ鍔犱竴涓簭鍒楋紝浣嗘槸鏈夋椂鍊欐垜浠渶瑕佸鏁版嵁杩涜鍒嗙粍锛岀劧鍚庡鍒嗙粍鍚庣殑鏁版嵁杩涜澧炲姞搴忓垪锛孭ARTITION BY鍙互涓庝互涓婁笁涓嚱鏁拌仈鍚堜娇鐢 + +```sql +--瀛︾敓鐨凧ava鎴愮哗锛屽苟鏍规嵁鎴愮哗鎺掑悕 +--row_number() +select StuName 濮撳悕,ROW_NUMBER() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +--rank() +select StuName 濮撳悕,rank() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +--DENSE_RANK() + select StuName 濮撳悕,dense_rank() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +``` + + + + + +## 鍒嗛〉鏌ヨ + +#### 鍒嗛〉鏂规涓 + +**浣跨敤top鍒嗛〉** + +```sql +declare @PageSize int = 5 -- 姣忛〉5鏉 +declare @PageIndex int = 2 --绗2椤 +select top(@PageSize) * from Student +where Stuid not in (select top(@PageSize)*(@PageIndex-1)) StuId from Student +``` + + + +#### 鍒嗛〉鏂规浜 + +**浣跨敤row_number鍒嗛〉** + +```sql +declare @PageSize int = 5 +declare @PageIndex int = 3 +select * from +(select ROW_NUMBER() over(order by StuId) RowId,*from Student) as Temp +where RowId between (@PageIndex-1)*@PageSize+1 and @PageIndex*PageSize +``` + + + + + + + +#### 鍒嗛〉鏌ヨ缁冧範 + +```sql +--鏁版嵁缁撴瀯鍜屾暟鎹涓嬶細 +create table Student +( + StuId int primary key identity(1,2), --鑷姩缂栧彿 + StuName varchar(20), + StuSex varchar(4) +) +insert into Student(StuName,StuSex) values('鍒樺','鐢') +insert into Student(StuName,StuSex) values('鍏崇窘','鐢') +insert into Student(StuName,StuSex) values('寮犻','鐢') +insert into Student(StuName,StuSex) values('璧典簯','鐢') +insert into Student(StuName,StuSex) values('椹秴','鐢') +insert into Student(StuName,StuSex) values('榛勫繝','鐢') +insert into Student(StuName,StuSex) values('榄忓欢','鐢') +insert into Student(StuName,StuSex) values('绠闆','鐢') +insert into Student(StuName,StuSex) values('璇歌憶浜','鐢') +insert into Student(StuName,StuSex) values('寰愬憾','鐢') +insert into Student(StuName,StuSex) values('鍛ㄤ粨','鐢') +insert into Student(StuName,StuSex) values('鍏冲钩','鐢') +insert into Student(StuName,StuSex) values('寮犺嫗','鐢') +insert into Student(StuName,StuSex) values('鏇规搷','鐢') +insert into Student(StuName,StuSex) values('鏇逛粊','鐢') +insert into Student(StuName,StuSex) values('鏇逛笗','鐢') +insert into Student(StuName,StuSex) values('鏇规','鐢') +insert into Student(StuName,StuSex) values('鏇瑰桨','鐢') +insert into Student(StuName,StuSex) values('鍏搁煢','鐢') +insert into Student(StuName,StuSex) values('璁歌','鐢') +insert into Student(StuName,StuSex) values('澶忎警鏁','鐢') +insert into Student(StuName,StuSex) values('閮槈','鐢') +insert into Student(StuName,StuSex) values('鑽褰','鐢') +insert into Student(StuName,StuSex) values('璐捐','鐢') +insert into Student(StuName,StuSex) values('瀛欐潈','鐢') +insert into Student(StuName,StuSex) values('瀛欏潥','鐢') +insert into Student(StuName,StuSex) values('瀛欑瓥','鐢') +insert into Student(StuName,StuSex) values('澶彶鎱','鐢') +insert into Student(StuName,StuSex) values('澶т箶','濂') +insert into Student(StuName,StuSex) values('灏忎箶','濂') +``` + +**鏂瑰紡涓锛氫娇鐢╮ow_number** + +**鏂瑰紡浜岋細浣跨敤top鍒嗛〉** + diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" "b/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" new file mode 100644 index 0000000..13b6846 --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" @@ -0,0 +1,61 @@ +--1. 关羽的银行卡号为"6225547858741263",查询出余额比关羽多的银行卡信息,显示卡号,身份证,姓名,余额。 +select BankCard.CardNo,a.AccountCode,a.RealName,BankCard.CardMoney from BankCard +join AccountInfo A on a.AccountId = BankCard.AccountId +where CardMoney>( + select CardMoney from BankCard where CardNo = '6225547858741263' +) + +--2. 从所有账户信息中查询出余额最高的交易明细(存钱取钱信息)。 +select * from CardExchange where CardNo = ( + select top 1 CardNo from CardExchange order by MoneyInBank desc +) + +--3. 查询有取款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 + +select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A +join BankCard B on A.AccountId = B.AccountId +where B.CardNo in ( select CardNo from CardExchange where MoneyOutBank <> 0) + + +--4. 查询出没有存款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 +select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A +join (select * from BankCard where CardNo not in ( + select CardNo from CardExchange where MoneyInBank <>0 + ) +)B on A.AccountId = B.AccountId + + +--5. 关羽的银行卡号为"6225547858741263",查询当天是否有收到转账。 +if exists( + select * from CardTransfer where CardNoIn = '6225547858741263' + and CONVERT(varchar(15),TransferTime,20) = CONVERT(varchar(15),getdate(),20) +) + print '有' +else + print '没有' + + +--6. 查询出交易次数(存款取款操作)最多的银行卡账户信息,显示:卡号,身份证,姓名,余额,交易次数。 + +select top 1 B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额,temp.交易次数 from AccountInfo A +join BankCard B on B.AccountId = A.AccountId +join ( + select CardNo,COUNT(CardNo)交易次数 from CardExchange + group by CardNo +)temp on temp.CardNo = B.CardNo +order by temp.交易次数 desc + + +--7. 查询出没有转账交易记录的银行卡账户信息,显示卡号,身份证,姓名,余额。 +select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A +join BankCard B on A.AccountId = B.AccountId +where B.CardNo not in ( + select CardNoOut from CardTransfer +)and B.CardNo not in ( + select CardNoIn from CardTransfer +) + + + + + -- Gitee From dbe54f4a0e33745d7825d40d3df381db6e9fbf2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 11:35:38 +0000 Subject: [PATCH 7/8] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2001?= =?UTF-8?q?=E6=9D=8E=E9=9F=A6=E5=B3=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work.sql" | Bin 9826 -> 0 bytes ...72\350\241\250\347\272\246\346\235\237.md" | 37 --- ...5\350\257\242\344\275\234\344\270\232.sql" | 62 ---- ...45\350\257\242\347\254\224\350\256\260.md" | 160 ----------- ...9-\345\255\220\346\237\245\350\257\242.md" | 271 ------------------ ...-\345\255\220\346\237\245\350\257\242.sql" | 61 ---- 6 files changed, 591 deletions(-) delete mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" delete mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" delete mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" delete mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" delete mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" delete mode 100644 "01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" "b/01\346\235\216\351\237\246\345\263\260/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232/work.sql" deleted file mode 100644 index ba5eadb55904e923780945c6dbd38660c4aac817..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9826 zcmeHN&2k$>5bkTJf-4+#vz$sCOP1_7MW_<`F)G_DTR(1Z@kt6v^p36PV&0xkO^nHguuGGWxQ>?Lq=fQB? zF?vp=j{9r%jfQCnCkJPGpS(QAlJF!{jLz{8v zx`|Pwn*6l!rX&HL>(WKrksVwu^fvIH%bOX!k1-9!e+4t@prneCZ9LU*SEV^-uKm&; zzFNUm$J{N?j55}#VhrU>sg)q}9rc_}YFS154Ub$akT+$23<*D1&n^#bc_3Lx>=y22 zj0+U6Y_()=C9E4@KTfb8dhPG=UmyGRM74)%#nmzE?Sb36?1IZCzMqk8aLTp}o~d_~ z0_9ObANOPucO}dztC7p{IaY4VXPB84Ep_f%p!V$x^xntaz~0rsGqsGe=5F$-j#XMp zFB9VnXI zvE*P&t?wJn9i!fIf1@(hb~@?3Pv6JsET!honaBRm6aw@i^M&Q7vHZBatW}tI!4N^` zw|2YYJa$ezGAp%!7B3RTjDr<@(S`l7HBcw(~KWzu6AGZ9|k$?I{?eFwgTq<3>joR`w_-J@Cny^5| ztA~s~z>53w?E)Ec^zGh*~bQHGv2 zaKOe-yJ40tLfMAqqbAqXU+oAeiPY8drdSx+8d3vqi;uJWFHb(t0j?WlOI<+9<(eeA7Nwj zS$u?VHnGt5^W;N3v3^6J0(74lXU{s({-pDZ5A}1um-=tIsju!Q&})nGP9&T$6r6KHq%6zhR;!-Vf!y$PTEUq zU0%q^cb?Gtq`jub!fE7m7j>pJ=-3LhZ3Fjp*C%apTB{avO4cW>Nweuw0TJp7wCU~) z`ZSx*u?Xe*hf$w1t|Fvsru2I0Yr@3I9&%SNl;`NkK5Am!@Z@1olzr>CDyWgwfapcE ztcq>|#ml((hIzNQRV`-zLDwP2)nk3}pRV*~ki7_yH(~vlwL|9f0?<9F!f95t`4H`? zF226m0>#W3=?qd=NrTl;{vNm($cjDTf`EQHs}8-P-5H)k%%+&c5dvr|w)v z^|^|j-iBO^F4UAPt3x@NijI4-jGujJRje)7aI>ZM=zLh(93IynMCwk=4jvBU)akhP zVa5Dh>v&Pe&1rZw)?rYB2;fRl=PmSl)A8q9c@lr_PLmFo5|jV<1hswUFB#PmN%@-w z8!wwt9}h<{#$8sIi>Yrqa0PAn2Fi{^%z6khL&Mk_y)d%BMZjM*RNt@(=_ z|A@f@#`Ck#J&X3oWoyq)NoODOq0b$b6Z7qHbN)V(moE2d=KOxPwKwgY^I-Zp<{TB3 F`~NhLvGxD} diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" "b/01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" deleted file mode 100644 index b032041..0000000 --- "a/01\346\235\216\351\237\246\345\263\260/2022-09-15 \347\254\224\350\256\260/\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" +++ /dev/null @@ -1,37 +0,0 @@ -### 1.鍒涘缓鏁版嵁搴 - -```sql --- database 鏁版嵁搴 --- 鏍煎紡 锛 --- create database 琛ㄥ悕 --- 浣跨敤褰撳墠鏁版嵁搴 锛 use 琛ㄥ悕 -``` - -### 2.鍒涘缓琛ㄦ牸 - -```sql --- 鏍煎紡锛 crate table 琛ㄥ悕锛 --- 瀛楁鍚1 绫诲瀷 路路路路 --- 锛 -``` - -### 3.浜斿ぇ绾︽潫 - -- 澶栭敭 : foreign key锛堝彲鐪佺暐锛 **references** - - - 鍦ㄨ〃鏍间腑璁剧疆澶栭敭 - - ```sql - -- 瀛楁鍚 绫诲瀷 foreign key references 涓婚敭琛ㄥ悕锛 寮曠敤瀛楁 锛 - -- 瀛楁鍚 绫诲瀷 references 涓婚敭琛ㄥ悕锛 寮曠敤瀛楁 锛 - ``` - -- 涓婚敭锛歱rimary key - - - 鑷(鏍囪瘑鍒)锛 identity( 浠庣涓涓暟寮濮 , 鑷鏁 ) - -- 榛樿锛 default - -- 鍞竴锛歶nique - -- check妫鏌 \ No newline at end of file diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" "b/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" deleted file mode 100644 index d40696d..0000000 --- "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" +++ /dev/null @@ -1,62 +0,0 @@ ---1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 -select D.DepartmentName,P.* from People P -join Department D on D.DepartmentId = P.DepartmentId -where P.PeopleAddress = '武汉'; - - ---2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 -select D.DepartmentName,R.RankName,P.* from People P -join Department D on D.DepartmentId = P.DepartmentId -join [Rank] R on R.RankId = P.RankId -where P.PeopleAddress = '武汉'; - - ---3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 -select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People -join Department D on D.DepartmentId = People.DepartmentId -group by D.DepartmentName - ---4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 -select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People -join Department D on D.DepartmentId = People.DepartmentId -where People.PeopleSalary >= 10000 -group by D.DepartmentName -order by 平均工资 desc - - ---5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 -select D.DepartmentName,R.RankName,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People P -join Department D on D.DepartmentId = P.DepartmentId -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) between 6 and 7 ; - - ---7.查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) -select *,( -CASE convert(int,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 '10' then '马' -WHEN '11' then '羊' -end)生肖 -from People - -select *,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(year(PeopleBirth)%12 ,10,'马'),11,'羊'),9,'蛇'),8,'龙'),7,'兔'),6,'虎') ,5,'牛'),4,'鼠'),3,'猪'),2,'狗'),1,'鸡'),0,'猴')生肖 from People - - - - -select *,replace(PeopleSalary,9000,'九千') from People \ No newline at end of file diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" "b/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" deleted file mode 100644 index e32178a..0000000 --- "a/01\346\235\216\351\237\246\345\263\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" +++ /dev/null @@ -1,160 +0,0 @@ -#### 鍩虹鏌ヨ - -#### 1.鏉′欢鏌ヨ - -**SQL涓父鐢ㄨ繍绠楃** - -```sql -=锛氱瓑浜庯紝姣旇緝鏄惁鐩哥瓑鍙婅祴鍊 -!=锛氭瘮杈冧笉绛変簬 ->锛氭瘮杈冨ぇ浜 -<锛氭瘮杈冨皬浜 ->=锛氭瘮杈冨ぇ浜庣瓑浜 -<=锛氭瘮杈冨皬浜庣瓑浜 -IS NULL锛氭瘮杈冧负绌 -IS NOT NULL锛氭瘮杈冧笉涓虹┖ -in锛氭瘮杈冩槸鍚﹀湪鍏朵腑 -like锛氭ā绯婃煡璇 -BETWEEN...AND...锛氭瘮杈冩槸鍚﹀湪涓よ呬箣闂 50-100 BETWEEN 50 AND 100 -and锛氶昏緫涓庯紙涓や釜鏉′欢鍚屾椂鎴愮珛琛ㄨ揪寮忔垚绔嬶級 -or锛氶昏緫鎴栵紙涓や釜鏉′欢鏈変竴涓垚绔嬭〃杈惧紡鎴愮珛锛 -not锛氶昏緫闈烇紙鏉′欢鎴愮珛锛岃〃杈惧紡鍒欎笉鎴愮珛锛涙潯浠朵笉鎴愮珛锛岃〃杈惧紡鍒欐垚绔嬶級 -``` - - - -#### 2.妯$硦鏌ヨ - -妯$硦鏌ヨ浣跨敤like鍏抽敭瀛楀拰閫氶厤绗︾粨鍚堟潵瀹炵幇锛岄氶厤绗﹀叿浣撳惈涔夊涓嬶細 - -```sql -%锛氫唬琛ㄥ尮閰0涓瓧绗︺1涓瓧绗︽垨澶氫釜瀛楃銆 -_锛氫唬琛ㄥ尮閰嶆湁涓斿彧鏈1涓瓧绗︺ -[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 -[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 -渚嬪锛 ---鏌ヨ鍑虹數璇濆彿鐮佸紑澶138鐨勫憳宸ヤ俊鎭,绗4浣嶅彲鑳芥槸7锛屽彲鑳8 锛屾渶鍚庝竴涓彿鐮佹槸5 -select * from people -where PeoplePhone like '138[7-9]%5' --789 - ---鏌ヨ鍑虹數璇濆彿鐮佸紑澶133鐨勫憳宸ヤ俊鎭,绗4浣嶆槸2-5涔嬮棿鐨勬暟瀛 锛屾渶鍚庝竴涓彿鐮佷笉鏄2鍜3 -select * from people -where PeoplePhone like '138[2-5]%[^23]' - -``` - - - -#### 3.鑱氬悎鍑芥暟 - -SQL SERVER涓仛鍚堝嚱鏁颁富瑕佹湁锛 - -```sql -count:姹傛暟閲 -max:姹傛渶澶у -min:姹傛渶灏忓 -sum:姹傚拰 -avg:姹傚钩鍧囧 -``` - -ROUND鍑芥暟鐢ㄦ硶锛 - -```sql -round(num,len,[type]) -鍏朵腑: -num琛ㄧず闇瑕佸鐞嗙殑鏁板瓧锛宭en琛ㄧず闇瑕佷繚鐣欑殑闀垮害锛宼ype澶勭悊绫诲瀷(0鏄粯璁ゅ间唬琛ㄥ洓鑸嶄簲鍏ワ紝闈0浠h〃鐩存帴鎴彇) -select ROUND(123.45454,3) --123.45500 -select ROUND(123.45454,3,1) --123.45400 -``` - -CONVERT()涓嶤AST()鍑芥暟: - -```sql ---1.淇濈暀灏忔暟 -convert(decimal(13,2),12.45454) -cast(12.45454 as decimal(13,2)) ---2.寮哄埗杞崲绫诲瀷 - - -``` - - - -#### 4.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 鎴杫y | -| 瀛e害 | 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 | - -#### 5.鍒嗙粍鏌ヨ group by - -#### 澶氳〃鏌ヨ - -##### 绠鍗曞琛 - -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 -``` - - - diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" "b/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" deleted file mode 100644 index 3f010cd..0000000 --- "a/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" +++ /dev/null @@ -1,271 +0,0 @@ -## 鍥為【 - -1. 鍙橀噺鐨勪娇鐢ㄣ傝鍏堢敤DECLARE 鍏抽敭瀛楀0鏄庯紝鐒跺悗鐢⊿ET鎴朣ELECT璧嬪笺傚眬閮ㄥ彉閲忓墠蹇呴』鏈 鈥淍鈥 浣滃墠缂锛屽叏灞鍙橀噺蹇呴』鏈 鈥淍@鈥 浣滃墠缂銆 -2. 鍙橀噺鐨勮緭鍑哄彲浠ョ敤锛歅RINT鎴朣ELECT璇彞銆 -3. 閫昏緫鎺у埗璇彞鎻愪緵浜嗘潯浠舵搷浣滄墍闇鐨勯『搴忓拰閫昏緫銆 -4. 鎵瑰鐞嗗彲浠ユ彁楂樿鍙ユ墽琛岀殑鏁堢巼锛屼娇鐢ㄢ淕O鈥濅綔涓虹粨鏉熸爣蹇椼 - - - -## 宓屽/瀛愭煡璇 - -#### 浠涔堟槸瀛愭煡璇紵 - -**闂:缂栧啓T-SQL璇彞锛屾煡璇⑩滈粍鐐滄澃鈥濆悓瀛︾殑鍒嗘暟澶т簬80 鍒嗙殑鑰冭瘯鎴愮哗璁板綍锛** - -```sql ---瀹炵幇鏂瑰紡1锛氳繛鎺ユ煡璇 - ---瀹炵幇鏂瑰紡2: 瀛愭煡璇 - -``` - - - -#### 瀛愭煡璇㈢殑鐗圭偣鍜屼紭鍔 - -1锛変娇鐢ㄧ伒娲汇 - -1. 鍙互鎴愪负SQL 璇彞鐨勫涓儴鍒嗐 -2. **瀛愭煡璇綔涓烘煡璇㈡潯浠朵娇鐢**銆 - -```sql ---缁冧範:鏌ヨ瀛﹀彿鍦ㄦ浘楣忓墠闈㈢殑鍚屽淇℃伅 -``` - -1. **瀛愭煡璇綔涓轰复鏃惰〃浣跨敤**銆 from () - -```sql ---缁冧範:鏌ヨ鎵鏈夊鐢熺殑HTML鎴愮哗锛屽鏋滃鐢熸病鏈夋垚缁╂樉绀簄ull -``` - -1. **瀛愭煡璇綔涓哄垪浣跨敤**銆 - -```sql ---缁冧範:鏌ヨ鎵鏈夊鐢熺殑HTML鎴愮哗锛屽鏋滃鐢熸病鏈夋垚缁╂樉绀簄ull -``` - -2锛夐檷浣嶴QL 鐨勮鍙ョ殑澶嶆潅搴︼紝鎻愰珮SQL 璇彞鐨勫彲璇绘с - -#### 瀛愭煡璇 - -![](https://gitee.com/snailclass/tuchuang/raw/master/img/image-20220906173549480-2022-9-1913:24:45.png) - -##### 鎸夌粨鏋滃垎绫 - -###### 鏍囬噺瀛愭煡璇 锛 - -**閫氬父鍙互浣跨敤杩炴帴鏌ヨ鏇夸唬** - -鏍囬噺瀛愭煡璇㈡槸鎸囧瓙鏌ヨ杩斿洖鐨勬槸**鍗曚竴鍊**锛屽涓涓暟瀛楁垨涓涓瓧绗︿覆銆 - -```sql ---1.鏌ヨ涔︾洰琛(tb_bibliography)涓紝鏉$爜鍙(barcode)涓"TP311锛13"鍥句功锛堥渶瑕佸湪鍥句功琛ㄤ腑鍏堟煡鎵"TP31L13"鐨処SBN鍙凤級鐨勫浘涔﹀悕绉(name)鍜屼綔鑰(author) - - ---2.鏌ヨ鍊熼槄琛(tb-record锛変腑濮撳悕涓"閭撴壙鏄"锛堥渶瑕佸湪瀛︾敓琛ㄤ腑鍏堟煡鎵"閭撴壙鏄'鐨勫鍙凤級鐨勫鐢熺殑鍊熼槄淇℃伅锛屾樉绀哄鍙(stu-num)鍜屾潯鐮佸彿(barcode) -``` - - - -###### 鍒楀瓙鏌ヨ - -**鍒楀瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炵殑缁撴灉闆嗘槸N琛1鍒**锛岃缁撴灉閫氬父鏉ヨ嚜瀵硅〃鏌愪釜瀛楁鐨勬煡璇㈢粨鏋滐紝甯**in鍏抽敭瀛**鐨勫瓙鏌ヨ鏄渶甯哥敤鐨勪竴绫诲瓙鏌ヨ锛屽湪浣跨敤in鍏抽敭瀛楄繘琛屾煡璇㈡椂锛屽瓙鏌ヨ璇彞杩斿洖鐨勭粨鏋滃簲璇ユ槸涓涓暟鎹垪涓殑澶氫釜鍊硷紝濡傛灉浠呰繑鍥1涓暟鍊硷紝鍒欏彲鐢ㄦ爣閲忓瓙鏌ヨ浠f浛銆 - -```sql ---in涔犻 ---鏌ヨ瀛︾敓琛(tb-student)涓拰榛勫紭鐩稿悓涓撲笟瀛︾敓璇昏呯殑瀛﹀彿(stu-num)濮撳悕(name)鍜屼笓涓(major) ---鍏堟煡璇 榛勫畯鐨 涓撲笟 -select major from tb_student where name='榛勫紭' ---in浠h〃:鍙绗﹀悎鍚庨潰鐨勬潯浠跺氨绛涢夊嚭鏉 -select * from tb_student where major in (select major from tb_student where name='榛勫紭') - - ---鏌ヨ瀛︾敓琛(tb-student)涓繕鏈繕涔︾殑璇昏呯殑瀛﹀彿(stu-num)鍜屽鍚(name) ---鏌ヨ鏈繕涔﹀鐢熺殑瀛﹀彿 -select stu_num from tb_record where return_time is null ---閫氳繃瀛﹀彿鏌ヨ瀛︾敓濮撳悕 -select * from tb_student where stu_num in (select stu_num from tb_record where return_time is null) - - ---all any some 涔犻 ---1.鏌ヨ瀛︾敓琛(tb-student)涓紝姣斾俊鎭闄㈠嚭鐢熸棩鏈熸渶澶х殑杩樿澶х殑鎵鏈夊鐢熻褰曪紝鍗虫瘮淇℃伅瀛﹂櫌骞撮緞鏈灏忕殑杩樿灏忕殑鎵鏈夎褰曪紝浣跨敤ALL鍏抽敭瀛楋紝鏄剧ず瀛︾敓鐨勫鍚(name)銆佸嚭鐢熸棩鏈(birth)鍜屾墍灞炲闄(school)锛屽悓鏍风殑缁撴灉灏濊瘯鐢╩ax()鍑芥暟鍐嶅疄鐜颁竴娆° ---淇℃伅瀛﹂櫌瀛︾敓鏈灏忓勾榫 -select birth from tb_student where school='淇℃伅瀛﹂櫌' -select max(birth) from tb_student where school='淇℃伅瀛﹂櫌' - -select * from tb_student where birth>(select max(birth) from tb_student where school='淇℃伅瀛﹂櫌' ) - ---all鍏抽敭瀛楋細>,<,= -select * from tb_student where birth>all(select birth from tb_student where school='淇℃伅瀛﹂櫌') ---2.鏌ヨ瀛︾敓琛(tb-student)涓紝姣斾俊鎭闄㈠嚭鐢熸棩鏈熸渶灏忕殑杩樿澶х殑鎵鏈夊鐢熻褰曪紝鍗虫瘮淇℃伅瀛﹂櫌骞撮緞鏈澶х殑杩樿灏忕殑鎵鏈夎褰曪紝浣跨敤ANY鍏抽敭瀛楋紝鏄剧ず瀛︾敓鐨勫鍚(name)銆佸嚭鐢熸棩鏈(birth)鍜屾墍灞炲闄(school)銆傚皾璇曠敤SOME鍏抽敭瀛椾唬鏇緼NY锛岄噸鏂版墽琛屽悗瑙傚療鏌ヨ缁撴灉銆 -select * from tb_student where birth>any(select birth from tb_student where school='淇℃伅瀛﹂櫌') -select * from tb_student where birth>some(select birth from tb_student where school='淇℃伅瀛﹂櫌') ---3.鏌ヨ涔︾洰琛(tb-bibliography)涓紝浣跨敤ANY鍏抽敭瀛楋紝姣忕绫诲瀷涓渶璐电殑鍥 涔﹀悕绉(name)鍜屼环鏍(price) --- =any 涓 in 绛変环 -select max(price) 鏈璐电殑浠锋牸 from tb_bibliography group by category -select name 鍥句功鍚嶇О,price 浠锋牸 from tb_bibliography -where price in (select max(price) 鏈璐电殑浠锋牸 from tb_bibliography group by category) - -``` - - - -###### 琛屽瓙鏌ヨ - -琛屽瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炵殑缁撴灉闆嗘槸1琛孨鍒楋紝璇ュ瓙鏌ヨ鐨勭粨鏋滈氬父鏄琛ㄧ殑鏌愯鏁版嵁杩涜鏌ヨ鑰岃繑鍥炵殑缁撴灉闆嗐 - -```sql ---锛1锛夋煡璇功鐩〃(tb_bibliography)涓笌銆婄鐞嗕俊鎭郴缁熷疄鐢ㄦ暀绋嬶紙绗3鐗堬級銆嬪悓浣滆(author)锛屽悓绫诲瀷(category)鐨勪功銆 ---锛2锛夋煡璇㈠鐢熻〃(tb_student)涓笌"閭圭澘鐫'鍦ㄥ悓涓涓闄(school)涓斿悓涓骞寸骇锛堝鍙峰ご涓や綅鐩稿悓鍒欒〃鏄庡湪鍚屼竴骞寸骇锛夊鐢熺殑瀛﹀彿銆佸鍚嶅拰瀛﹂櫌銆 -``` - - - -###### 琛ㄥ瓙鏌ヨ(from瀛愭煡璇) - -琛ㄥ瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炴槸M琛孨鍒楃殑缁撴灉闆嗭紝鏌ヨ璇彞鍙祵濂楀湪FROM鍏 -閿瓧鍚庯紝涓旈渶瑕佸畾涔夊埆鍚嶃 - -```sql ---鏌ヨ姣忕鍥句功鍦ㄩ鐨勬湰鏁帮紝鏄剧ずISBN鍙(ISBN)銆佸浘涔﹀悕绉(name)鍜岃鍥句功鐨勫湪棣嗘暟閲忋 -``` - - - -##### 鎸変綅缃垎绫 - -###### exists瀛愭煡璇 - -鍏抽敭瀛桬XISTS鏋勯犲瓙鏌ヨ鏃讹紝褰撳瓙鏌ヨ鐨勭粨鏋滈泦涓嶄负绌烘椂锛屽垯EXISTS杩斿洖鐨勭粨鏋滀负TRUE锛屽灞傛煡璇㈣鍙ヨ繘琛屾煡璇紱褰撳瓙鏌ヨ鐨勭粨鏋滈泦涓虹┖鏃讹紝鍒橢XISTS杩斿洖鐨勭粨鏋滀负FALSE锛屽灞傛煡璇㈣鍙ヤ笉杩涜鏌ヨ銆 - -```sql ---锛1锛夋煡璇㈠鐢熻〃(tb-student)涓紝鏄惁鏈夊鐢熻鑰呯殑濮撳悕鏄"榛勫紭" -if exists(select stu_num from tb_record where stu_num in (select stu_num from tb_student where name='榛勫紭') and return_time is null) - print '鏈' -else - print '娌℃湁' - ---锛2锛夋煡璇功鐩〃(tb-bibliography)涓紝搴撳瓨鏁颁负0鐨勪功鐩悕绉(name) -``` - -## 鎺掑簭鍑芥暟 - -**鎺掑簭鍑芥暟 OVER( [鍒嗙粍瀛愬彞] 鎺掑簭瀛愬彞[DESC][ASC] )** - -**鎺掑簭瀛愬彞 锛歄RDER BY 鎺掑簭鍒,鎺掑簭鍒椻** - -缁冧範:浣跨敤鍚勪釜鎺掑悕鍑芥暟瀵瑰鍛樼殑Java 鎴愮哗杩涜鎺掑悕锛屽苟浠旂粏浣撲細鍏朵腑鎺掑簭鍑芥暟鐨勫叿浣撶敤娉曚笌鍏朵腑鐨勫尯鍒 - -```sql - -``` - -- ROW_NUMBER()鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑杩炵画鐨勫簭鍙** -- RANK()鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑鐨勫簭鍙凤紝浣嗘槸瀛樺湪骞跺垪骞朵笖璺崇┖** -- DENSE_RANK() 鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑鐨勫簭鍙凤紝浣嗘槸瀛樺湪骞跺垪涓嶈烦绌** - -鏍规嵁涓婇潰涓変釜鍑芥暟锛屾垜浠彲浠ュ鍔犱竴涓簭鍒楋紝浣嗘槸鏈夋椂鍊欐垜浠渶瑕佸鏁版嵁杩涜鍒嗙粍锛岀劧鍚庡鍒嗙粍鍚庣殑鏁版嵁杩涜澧炲姞搴忓垪锛孭ARTITION BY鍙互涓庝互涓婁笁涓嚱鏁拌仈鍚堜娇鐢 - -```sql ---瀛︾敓鐨凧ava鎴愮哗锛屽苟鏍规嵁鎴愮哗鎺掑悕 ---row_number() -select StuName 濮撳悕,ROW_NUMBER() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore -join stuinfo on StuInfo.StuID = StuScore.StuID -where subject = 'Java' - ---rank() -select StuName 濮撳悕,rank() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore -join stuinfo on StuInfo.StuID = StuScore.StuID -where subject = 'Java' - ---DENSE_RANK() - select StuName 濮撳悕,dense_rank() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore -join stuinfo on StuInfo.StuID = StuScore.StuID -where subject = 'Java' - -``` - - - - - -## 鍒嗛〉鏌ヨ - -#### 鍒嗛〉鏂规涓 - -**浣跨敤top鍒嗛〉** - -```sql -declare @PageSize int = 5 -- 姣忛〉5鏉 -declare @PageIndex int = 2 --绗2椤 -select top(@PageSize) * from Student -where Stuid not in (select top(@PageSize)*(@PageIndex-1)) StuId from Student -``` - - - -#### 鍒嗛〉鏂规浜 - -**浣跨敤row_number鍒嗛〉** - -```sql -declare @PageSize int = 5 -declare @PageIndex int = 3 -select * from -(select ROW_NUMBER() over(order by StuId) RowId,*from Student) as Temp -where RowId between (@PageIndex-1)*@PageSize+1 and @PageIndex*PageSize -``` - - - - - - - -#### 鍒嗛〉鏌ヨ缁冧範 - -```sql ---鏁版嵁缁撴瀯鍜屾暟鎹涓嬶細 -create table Student -( - StuId int primary key identity(1,2), --鑷姩缂栧彿 - StuName varchar(20), - StuSex varchar(4) -) -insert into Student(StuName,StuSex) values('鍒樺','鐢') -insert into Student(StuName,StuSex) values('鍏崇窘','鐢') -insert into Student(StuName,StuSex) values('寮犻','鐢') -insert into Student(StuName,StuSex) values('璧典簯','鐢') -insert into Student(StuName,StuSex) values('椹秴','鐢') -insert into Student(StuName,StuSex) values('榛勫繝','鐢') -insert into Student(StuName,StuSex) values('榄忓欢','鐢') -insert into Student(StuName,StuSex) values('绠闆','鐢') -insert into Student(StuName,StuSex) values('璇歌憶浜','鐢') -insert into Student(StuName,StuSex) values('寰愬憾','鐢') -insert into Student(StuName,StuSex) values('鍛ㄤ粨','鐢') -insert into Student(StuName,StuSex) values('鍏冲钩','鐢') -insert into Student(StuName,StuSex) values('寮犺嫗','鐢') -insert into Student(StuName,StuSex) values('鏇规搷','鐢') -insert into Student(StuName,StuSex) values('鏇逛粊','鐢') -insert into Student(StuName,StuSex) values('鏇逛笗','鐢') -insert into Student(StuName,StuSex) values('鏇规','鐢') -insert into Student(StuName,StuSex) values('鏇瑰桨','鐢') -insert into Student(StuName,StuSex) values('鍏搁煢','鐢') -insert into Student(StuName,StuSex) values('璁歌','鐢') -insert into Student(StuName,StuSex) values('澶忎警鏁','鐢') -insert into Student(StuName,StuSex) values('閮槈','鐢') -insert into Student(StuName,StuSex) values('鑽褰','鐢') -insert into Student(StuName,StuSex) values('璐捐','鐢') -insert into Student(StuName,StuSex) values('瀛欐潈','鐢') -insert into Student(StuName,StuSex) values('瀛欏潥','鐢') -insert into Student(StuName,StuSex) values('瀛欑瓥','鐢') -insert into Student(StuName,StuSex) values('澶彶鎱','鐢') -insert into Student(StuName,StuSex) values('澶т箶','濂') -insert into Student(StuName,StuSex) values('灏忎箶','濂') -``` - -**鏂瑰紡涓锛氫娇鐢╮ow_number** - -**鏂瑰紡浜岋細浣跨敤top鍒嗛〉** - diff --git "a/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" "b/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" deleted file mode 100644 index 13b6846..0000000 --- "a/01\346\235\216\351\237\246\345\263\260/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" +++ /dev/null @@ -1,61 +0,0 @@ ---1. 关羽的银行卡号为"6225547858741263",查询出余额比关羽多的银行卡信息,显示卡号,身份证,姓名,余额。 -select BankCard.CardNo,a.AccountCode,a.RealName,BankCard.CardMoney from BankCard -join AccountInfo A on a.AccountId = BankCard.AccountId -where CardMoney>( - select CardMoney from BankCard where CardNo = '6225547858741263' -) - ---2. 从所有账户信息中查询出余额最高的交易明细(存钱取钱信息)。 -select * from CardExchange where CardNo = ( - select top 1 CardNo from CardExchange order by MoneyInBank desc -) - ---3. 查询有取款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 - -select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A -join BankCard B on A.AccountId = B.AccountId -where B.CardNo in ( select CardNo from CardExchange where MoneyOutBank <> 0) - - ---4. 查询出没有存款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 -select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A -join (select * from BankCard where CardNo not in ( - select CardNo from CardExchange where MoneyInBank <>0 - ) -)B on A.AccountId = B.AccountId - - ---5. 关羽的银行卡号为"6225547858741263",查询当天是否有收到转账。 -if exists( - select * from CardTransfer where CardNoIn = '6225547858741263' - and CONVERT(varchar(15),TransferTime,20) = CONVERT(varchar(15),getdate(),20) -) - print '有' -else - print '没有' - - ---6. 查询出交易次数(存款取款操作)最多的银行卡账户信息,显示:卡号,身份证,姓名,余额,交易次数。 - -select top 1 B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额,temp.交易次数 from AccountInfo A -join BankCard B on B.AccountId = A.AccountId -join ( - select CardNo,COUNT(CardNo)交易次数 from CardExchange - group by CardNo -)temp on temp.CardNo = B.CardNo -order by temp.交易次数 desc - - ---7. 查询出没有转账交易记录的银行卡账户信息,显示卡号,身份证,姓名,余额。 -select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A -join BankCard B on A.AccountId = B.AccountId -where B.CardNo not in ( - select CardNoOut from CardTransfer -)and B.CardNo not in ( - select CardNoIn from CardTransfer -) - - - - - -- Gitee From ed53aadafee02399828097e001ea262e0b54fd13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98=E6=9D=8E=E9=9F=A6=E5=B3=B0=E2=80=99?= <2669441367@qq.com> Date: Tue, 20 Sep 2022 19:37:42 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...2\350\241\250\344\275\234\344\270\232.sql" | Bin 0 -> 9826 bytes ...5\350\257\242\344\275\234\344\270\232.sql" | 62 ++++ ...-\345\255\220\346\237\245\350\257\242.sql" | 61 ++++ ...72\350\241\250\347\272\246\346\235\237.md" | 37 +++ ...45\350\257\242\347\254\224\350\256\260.md" | 160 +++++++++++ ...9-\345\255\220\346\237\245\350\257\242.md" | 271 ++++++++++++++++++ 6 files changed, 591 insertions(+) create mode 100644 "01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232.sql" create mode 100644 "01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" create mode 100644 "01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" create mode 100644 "01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-15-\347\254\224\350\256\260\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" create mode 100644 "01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" create mode 100644 "01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" diff --git "a/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232.sql" "b/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-15 \345\273\272\345\272\223\345\273\272\350\241\250\344\275\234\344\270\232.sql" new file mode 100644 index 0000000000000000000000000000000000000000..ba5eadb55904e923780945c6dbd38660c4aac817 GIT binary patch literal 9826 zcmeHN&2k$>5bkTJf-4+#vz$sCOP1_7MW_<`F)G_DTR(1Z@kt6v^p36PV&0xkO^nHguuGGWxQ>?Lq=fQB? zF?vp=j{9r%jfQCnCkJPGpS(QAlJF!{jLz{8v zx`|Pwn*6l!rX&HL>(WKrksVwu^fvIH%bOX!k1-9!e+4t@prneCZ9LU*SEV^-uKm&; zzFNUm$J{N?j55}#VhrU>sg)q}9rc_}YFS154Ub$akT+$23<*D1&n^#bc_3Lx>=y22 zj0+U6Y_()=C9E4@KTfb8dhPG=UmyGRM74)%#nmzE?Sb36?1IZCzMqk8aLTp}o~d_~ z0_9ObANOPucO}dztC7p{IaY4VXPB84Ep_f%p!V$x^xntaz~0rsGqsGe=5F$-j#XMp zFB9VnXI zvE*P&t?wJn9i!fIf1@(hb~@?3Pv6JsET!honaBRm6aw@i^M&Q7vHZBatW}tI!4N^` zw|2YYJa$ezGAp%!7B3RTjDr<@(S`l7HBcw(~KWzu6AGZ9|k$?I{?eFwgTq<3>joR`w_-J@Cny^5| ztA~s~z>53w?E)Ec^zGh*~bQHGv2 zaKOe-yJ40tLfMAqqbAqXU+oAeiPY8drdSx+8d3vqi;uJWFHb(t0j?WlOI<+9<(eeA7Nwj zS$u?VHnGt5^W;N3v3^6J0(74lXU{s({-pDZ5A}1um-=tIsju!Q&})nGP9&T$6r6KHq%6zhR;!-Vf!y$PTEUq zU0%q^cb?Gtq`jub!fE7m7j>pJ=-3LhZ3Fjp*C%apTB{avO4cW>Nweuw0TJp7wCU~) z`ZSx*u?Xe*hf$w1t|Fvsru2I0Yr@3I9&%SNl;`NkK5Am!@Z@1olzr>CDyWgwfapcE ztcq>|#ml((hIzNQRV`-zLDwP2)nk3}pRV*~ki7_yH(~vlwL|9f0?<9F!f95t`4H`? zF226m0>#W3=?qd=NrTl;{vNm($cjDTf`EQHs}8-P-5H)k%%+&c5dvr|w)v z^|^|j-iBO^F4UAPt3x@NijI4-jGujJRje)7aI>ZM=zLh(93IynMCwk=4jvBU)akhP zVa5Dh>v&Pe&1rZw)?rYB2;fRl=PmSl)A8q9c@lr_PLmFo5|jV<1hswUFB#PmN%@-w z8!wwt9}h<{#$8sIi>Yrqa0PAn2Fi{^%z6khL&Mk_y)d%BMZjM*RNt@(=_ z|A@f@#`Ck#J&X3oWoyq)NoODOq0b$b6Z7qHbN)V(moE2d=KOxPwKwgY^I-Zp<{TB3 F`~NhLvGxD} literal 0 HcmV?d00001 diff --git "a/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" "b/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..d5aeeb7 --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-16 \346\237\245\350\257\242\344\275\234\344\270\232.sql" @@ -0,0 +1,62 @@ +--1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 +select D.DepartmentName,P.* from People P +join Department D on D.DepartmentId = P.DepartmentId +where P.PeopleAddress = '武汉'; + + +--2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +select D.DepartmentName,R.RankName,P.* from People P +join Department D on D.DepartmentId = P.DepartmentId +join [Rank] R on R.RankId = P.RankId +where P.PeopleAddress = '武汉'; + + +--3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People +join Department D on D.DepartmentId = People.DepartmentId +group by D.DepartmentName + +--4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +select D.DepartmentName 部门,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People +join Department D on D.DepartmentId = People.DepartmentId +where People.PeopleSalary >= 10000 +group by D.DepartmentName +order by 平均工资 desc + + +--5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 +select D.DepartmentName,R.RankName,count(PeopleName)员工人数,SUM(PeopleSalary)员工工资总和,round(AVG(PeopleSalary),2)平均工资,MAX(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People P +join Department D on D.DepartmentId = P.DepartmentId +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) between 6 and 7 ; + + +--7.查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) +select *,( +CASE convert(int,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 '10' then '马' +WHEN '11' then '羊' +end)生肖 +from People + +select *,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(year(PeopleBirth)%12 ,10,'马'),11,'羊'),9,'蛇'),8,'龙'),7,'兔'),6,'虎') ,5,'牛'),4,'鼠'),3,'猪'),2,'狗'),1,'鸡'),0,'猴')生肖 from People + + + + +select *,replace(PeopleSalary,9000,'九千') from People \ No newline at end of file diff --git "a/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" "b/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" new file mode 100644 index 0000000..13b6846 --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/\344\275\234\344\270\232/2022-09-19-\345\255\220\346\237\245\350\257\242.sql" @@ -0,0 +1,61 @@ +--1. 关羽的银行卡号为"6225547858741263",查询出余额比关羽多的银行卡信息,显示卡号,身份证,姓名,余额。 +select BankCard.CardNo,a.AccountCode,a.RealName,BankCard.CardMoney from BankCard +join AccountInfo A on a.AccountId = BankCard.AccountId +where CardMoney>( + select CardMoney from BankCard where CardNo = '6225547858741263' +) + +--2. 从所有账户信息中查询出余额最高的交易明细(存钱取钱信息)。 +select * from CardExchange where CardNo = ( + select top 1 CardNo from CardExchange order by MoneyInBank desc +) + +--3. 查询有取款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 + +select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A +join BankCard B on A.AccountId = B.AccountId +where B.CardNo in ( select CardNo from CardExchange where MoneyOutBank <> 0) + + +--4. 查询出没有存款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 +select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A +join (select * from BankCard where CardNo not in ( + select CardNo from CardExchange where MoneyInBank <>0 + ) +)B on A.AccountId = B.AccountId + + +--5. 关羽的银行卡号为"6225547858741263",查询当天是否有收到转账。 +if exists( + select * from CardTransfer where CardNoIn = '6225547858741263' + and CONVERT(varchar(15),TransferTime,20) = CONVERT(varchar(15),getdate(),20) +) + print '有' +else + print '没有' + + +--6. 查询出交易次数(存款取款操作)最多的银行卡账户信息,显示:卡号,身份证,姓名,余额,交易次数。 + +select top 1 B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额,temp.交易次数 from AccountInfo A +join BankCard B on B.AccountId = A.AccountId +join ( + select CardNo,COUNT(CardNo)交易次数 from CardExchange + group by CardNo +)temp on temp.CardNo = B.CardNo +order by temp.交易次数 desc + + +--7. 查询出没有转账交易记录的银行卡账户信息,显示卡号,身份证,姓名,余额。 +select B.CardNo 卡号,A.AccountCode 身份证,A.RealName 姓名,B.CardMoney 余额 from AccountInfo A +join BankCard B on A.AccountId = B.AccountId +where B.CardNo not in ( + select CardNoOut from CardTransfer +)and B.CardNo not in ( + select CardNoIn from CardTransfer +) + + + + + diff --git "a/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-15-\347\254\224\350\256\260\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" "b/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-15-\347\254\224\350\256\260\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" new file mode 100644 index 0000000..ece5da5 --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-15-\347\254\224\350\256\260\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.md" @@ -0,0 +1,37 @@ +### 1.鍒涘缓鏁版嵁搴 + +```sql +-- database 鏁版嵁搴 +-- 鏍煎紡 锛 +-- create database 琛ㄥ悕 +-- 浣跨敤褰撳墠鏁版嵁搴 锛 use 琛ㄥ悕 +``` + +### 2.鍒涘缓琛ㄦ牸 + +```sql +-- 鏍煎紡锛 crate table 琛ㄥ悕锛 +-- 瀛楁鍚1 绫诲瀷 路路路路 +-- 锛 +``` + +### 3.浜斿ぇ绾︽潫 + +- 澶栭敭 : foreign key锛堝彲鐪佺暐锛 **references** + + - 鍦ㄨ〃鏍间腑璁剧疆澶栭敭 + + ```sql + -- 瀛楁鍚 绫诲瀷 foreign key references 涓婚敭琛ㄥ悕锛 寮曠敤瀛楁 锛 + -- 瀛楁鍚 绫诲瀷 references 涓婚敭琛ㄥ悕锛 寮曠敤瀛楁 锛 + ``` + +- 涓婚敭锛歱rimary key + + - 鑷(鏍囪瘑鍒)锛 identity( 浠庣涓涓暟寮濮 , 鑷鏁 ) + +- 榛樿锛 default + +- 鍞竴锛歶nique + +- check妫鏌 \ No newline at end of file diff --git "a/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" "b/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" new file mode 100644 index 0000000..9b1e4e5 --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-16 \346\237\245\350\257\242\347\254\224\350\256\260.md" @@ -0,0 +1,160 @@ +#### 鍩虹鏌ヨ + +#### 1.鏉′欢鏌ヨ + +**SQL涓父鐢ㄨ繍绠楃** + +```sql +=锛氱瓑浜庯紝姣旇緝鏄惁鐩哥瓑鍙婅祴鍊 +!=锛氭瘮杈冧笉绛変簬 +>锛氭瘮杈冨ぇ浜 +<锛氭瘮杈冨皬浜 +>=锛氭瘮杈冨ぇ浜庣瓑浜 +<=锛氭瘮杈冨皬浜庣瓑浜 +IS NULL锛氭瘮杈冧负绌 +IS NOT NULL锛氭瘮杈冧笉涓虹┖ +in锛氭瘮杈冩槸鍚﹀湪鍏朵腑 +like锛氭ā绯婃煡璇 +BETWEEN...AND...锛氭瘮杈冩槸鍚﹀湪涓よ呬箣闂 50-100 BETWEEN 50 AND 100 +and锛氶昏緫涓庯紙涓や釜鏉′欢鍚屾椂鎴愮珛琛ㄨ揪寮忔垚绔嬶級 +or锛氶昏緫鎴栵紙涓や釜鏉′欢鏈変竴涓垚绔嬭〃杈惧紡鎴愮珛锛 +not锛氶昏緫闈烇紙鏉′欢鎴愮珛锛岃〃杈惧紡鍒欎笉鎴愮珛锛涙潯浠朵笉鎴愮珛锛岃〃杈惧紡鍒欐垚绔嬶級 +``` + + + +#### 2.妯$硦鏌ヨ + +妯$硦鏌ヨ浣跨敤like鍏抽敭瀛楀拰閫氶厤绗︾粨鍚堟潵瀹炵幇锛岄氶厤绗﹀叿浣撳惈涔夊涓嬶細 + +```sql +%锛氫唬琛ㄥ尮閰0涓瓧绗︺1涓瓧绗︽垨澶氫釜瀛楃銆 +_锛氫唬琛ㄥ尮閰嶆湁涓斿彧鏈1涓瓧绗︺ +[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 +[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 +渚嬪锛 +--鏌ヨ鍑虹數璇濆彿鐮佸紑澶138鐨勫憳宸ヤ俊鎭,绗4浣嶅彲鑳芥槸7锛屽彲鑳8 锛屾渶鍚庝竴涓彿鐮佹槸5 +select * from people +where PeoplePhone like '138[7-9]%5' --789 + +--鏌ヨ鍑虹數璇濆彿鐮佸紑澶133鐨勫憳宸ヤ俊鎭,绗4浣嶆槸2-5涔嬮棿鐨勬暟瀛 锛屾渶鍚庝竴涓彿鐮佷笉鏄2鍜3 +select * from people +where PeoplePhone like '138[2-5]%[^23]' + +``` + + + +#### 3.鑱氬悎鍑芥暟 + +SQL SERVER涓仛鍚堝嚱鏁颁富瑕佹湁锛 + +```sql +count:姹傛暟閲 +max:姹傛渶澶у +min:姹傛渶灏忓 +sum:姹傚拰 +avg:姹傚钩鍧囧 +``` + +ROUND鍑芥暟鐢ㄦ硶锛 + +```sql +round(num,len,[type]) +鍏朵腑: +num琛ㄧず闇瑕佸鐞嗙殑鏁板瓧锛宭en琛ㄧず闇瑕佷繚鐣欑殑闀垮害锛宼ype澶勭悊绫诲瀷(0鏄粯璁ゅ间唬琛ㄥ洓鑸嶄簲鍏ワ紝闈0浠h〃鐩存帴鎴彇) +select ROUND(123.45454,3) --123.45500 +select ROUND(123.45454,3,1) --123.45400 +``` + +CONVERT()涓嶤AST()鍑芥暟: + +```sql +--1.淇濈暀灏忔暟 +convert(decimal(13,2),12.45454) +cast(12.45454 as decimal(13,2)) +--2.寮哄埗杞崲绫诲瀷 + + +``` + + + +#### 4.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 鎴杫y | +| 瀛e害 | 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 | + +#### 5.鍒嗙粍鏌ヨ group by + +#### 澶氳〃鏌ヨ + +##### 绠鍗曞琛 + +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 +``` + + + diff --git "a/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" "b/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000..3f010cd --- /dev/null +++ "b/01\346\235\216\351\237\246\345\263\260/\347\254\224\350\256\260/2022-09-19-\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,271 @@ +## 鍥為【 + +1. 鍙橀噺鐨勪娇鐢ㄣ傝鍏堢敤DECLARE 鍏抽敭瀛楀0鏄庯紝鐒跺悗鐢⊿ET鎴朣ELECT璧嬪笺傚眬閮ㄥ彉閲忓墠蹇呴』鏈 鈥淍鈥 浣滃墠缂锛屽叏灞鍙橀噺蹇呴』鏈 鈥淍@鈥 浣滃墠缂銆 +2. 鍙橀噺鐨勮緭鍑哄彲浠ョ敤锛歅RINT鎴朣ELECT璇彞銆 +3. 閫昏緫鎺у埗璇彞鎻愪緵浜嗘潯浠舵搷浣滄墍闇鐨勯『搴忓拰閫昏緫銆 +4. 鎵瑰鐞嗗彲浠ユ彁楂樿鍙ユ墽琛岀殑鏁堢巼锛屼娇鐢ㄢ淕O鈥濅綔涓虹粨鏉熸爣蹇椼 + + + +## 宓屽/瀛愭煡璇 + +#### 浠涔堟槸瀛愭煡璇紵 + +**闂:缂栧啓T-SQL璇彞锛屾煡璇⑩滈粍鐐滄澃鈥濆悓瀛︾殑鍒嗘暟澶т簬80 鍒嗙殑鑰冭瘯鎴愮哗璁板綍锛** + +```sql +--瀹炵幇鏂瑰紡1锛氳繛鎺ユ煡璇 + +--瀹炵幇鏂瑰紡2: 瀛愭煡璇 + +``` + + + +#### 瀛愭煡璇㈢殑鐗圭偣鍜屼紭鍔 + +1锛変娇鐢ㄧ伒娲汇 + +1. 鍙互鎴愪负SQL 璇彞鐨勫涓儴鍒嗐 +2. **瀛愭煡璇綔涓烘煡璇㈡潯浠朵娇鐢**銆 + +```sql +--缁冧範:鏌ヨ瀛﹀彿鍦ㄦ浘楣忓墠闈㈢殑鍚屽淇℃伅 +``` + +1. **瀛愭煡璇綔涓轰复鏃惰〃浣跨敤**銆 from () + +```sql +--缁冧範:鏌ヨ鎵鏈夊鐢熺殑HTML鎴愮哗锛屽鏋滃鐢熸病鏈夋垚缁╂樉绀簄ull +``` + +1. **瀛愭煡璇綔涓哄垪浣跨敤**銆 + +```sql +--缁冧範:鏌ヨ鎵鏈夊鐢熺殑HTML鎴愮哗锛屽鏋滃鐢熸病鏈夋垚缁╂樉绀簄ull +``` + +2锛夐檷浣嶴QL 鐨勮鍙ョ殑澶嶆潅搴︼紝鎻愰珮SQL 璇彞鐨勫彲璇绘с + +#### 瀛愭煡璇 + +![](https://gitee.com/snailclass/tuchuang/raw/master/img/image-20220906173549480-2022-9-1913:24:45.png) + +##### 鎸夌粨鏋滃垎绫 + +###### 鏍囬噺瀛愭煡璇 锛 + +**閫氬父鍙互浣跨敤杩炴帴鏌ヨ鏇夸唬** + +鏍囬噺瀛愭煡璇㈡槸鎸囧瓙鏌ヨ杩斿洖鐨勬槸**鍗曚竴鍊**锛屽涓涓暟瀛楁垨涓涓瓧绗︿覆銆 + +```sql +--1.鏌ヨ涔︾洰琛(tb_bibliography)涓紝鏉$爜鍙(barcode)涓"TP311锛13"鍥句功锛堥渶瑕佸湪鍥句功琛ㄤ腑鍏堟煡鎵"TP31L13"鐨処SBN鍙凤級鐨勫浘涔﹀悕绉(name)鍜屼綔鑰(author) + + +--2.鏌ヨ鍊熼槄琛(tb-record锛変腑濮撳悕涓"閭撴壙鏄"锛堥渶瑕佸湪瀛︾敓琛ㄤ腑鍏堟煡鎵"閭撴壙鏄'鐨勫鍙凤級鐨勫鐢熺殑鍊熼槄淇℃伅锛屾樉绀哄鍙(stu-num)鍜屾潯鐮佸彿(barcode) +``` + + + +###### 鍒楀瓙鏌ヨ + +**鍒楀瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炵殑缁撴灉闆嗘槸N琛1鍒**锛岃缁撴灉閫氬父鏉ヨ嚜瀵硅〃鏌愪釜瀛楁鐨勬煡璇㈢粨鏋滐紝甯**in鍏抽敭瀛**鐨勫瓙鏌ヨ鏄渶甯哥敤鐨勪竴绫诲瓙鏌ヨ锛屽湪浣跨敤in鍏抽敭瀛楄繘琛屾煡璇㈡椂锛屽瓙鏌ヨ璇彞杩斿洖鐨勭粨鏋滃簲璇ユ槸涓涓暟鎹垪涓殑澶氫釜鍊硷紝濡傛灉浠呰繑鍥1涓暟鍊硷紝鍒欏彲鐢ㄦ爣閲忓瓙鏌ヨ浠f浛銆 + +```sql +--in涔犻 +--鏌ヨ瀛︾敓琛(tb-student)涓拰榛勫紭鐩稿悓涓撲笟瀛︾敓璇昏呯殑瀛﹀彿(stu-num)濮撳悕(name)鍜屼笓涓(major) +--鍏堟煡璇 榛勫畯鐨 涓撲笟 +select major from tb_student where name='榛勫紭' +--in浠h〃:鍙绗﹀悎鍚庨潰鐨勬潯浠跺氨绛涢夊嚭鏉 +select * from tb_student where major in (select major from tb_student where name='榛勫紭') + + +--鏌ヨ瀛︾敓琛(tb-student)涓繕鏈繕涔︾殑璇昏呯殑瀛﹀彿(stu-num)鍜屽鍚(name) +--鏌ヨ鏈繕涔﹀鐢熺殑瀛﹀彿 +select stu_num from tb_record where return_time is null +--閫氳繃瀛﹀彿鏌ヨ瀛︾敓濮撳悕 +select * from tb_student where stu_num in (select stu_num from tb_record where return_time is null) + + +--all any some 涔犻 +--1.鏌ヨ瀛︾敓琛(tb-student)涓紝姣斾俊鎭闄㈠嚭鐢熸棩鏈熸渶澶х殑杩樿澶х殑鎵鏈夊鐢熻褰曪紝鍗虫瘮淇℃伅瀛﹂櫌骞撮緞鏈灏忕殑杩樿灏忕殑鎵鏈夎褰曪紝浣跨敤ALL鍏抽敭瀛楋紝鏄剧ず瀛︾敓鐨勫鍚(name)銆佸嚭鐢熸棩鏈(birth)鍜屾墍灞炲闄(school)锛屽悓鏍风殑缁撴灉灏濊瘯鐢╩ax()鍑芥暟鍐嶅疄鐜颁竴娆° +--淇℃伅瀛﹂櫌瀛︾敓鏈灏忓勾榫 +select birth from tb_student where school='淇℃伅瀛﹂櫌' +select max(birth) from tb_student where school='淇℃伅瀛﹂櫌' + +select * from tb_student where birth>(select max(birth) from tb_student where school='淇℃伅瀛﹂櫌' ) + +--all鍏抽敭瀛楋細>,<,= +select * from tb_student where birth>all(select birth from tb_student where school='淇℃伅瀛﹂櫌') +--2.鏌ヨ瀛︾敓琛(tb-student)涓紝姣斾俊鎭闄㈠嚭鐢熸棩鏈熸渶灏忕殑杩樿澶х殑鎵鏈夊鐢熻褰曪紝鍗虫瘮淇℃伅瀛﹂櫌骞撮緞鏈澶х殑杩樿灏忕殑鎵鏈夎褰曪紝浣跨敤ANY鍏抽敭瀛楋紝鏄剧ず瀛︾敓鐨勫鍚(name)銆佸嚭鐢熸棩鏈(birth)鍜屾墍灞炲闄(school)銆傚皾璇曠敤SOME鍏抽敭瀛椾唬鏇緼NY锛岄噸鏂版墽琛屽悗瑙傚療鏌ヨ缁撴灉銆 +select * from tb_student where birth>any(select birth from tb_student where school='淇℃伅瀛﹂櫌') +select * from tb_student where birth>some(select birth from tb_student where school='淇℃伅瀛﹂櫌') +--3.鏌ヨ涔︾洰琛(tb-bibliography)涓紝浣跨敤ANY鍏抽敭瀛楋紝姣忕绫诲瀷涓渶璐电殑鍥 涔﹀悕绉(name)鍜屼环鏍(price) +-- =any 涓 in 绛変环 +select max(price) 鏈璐电殑浠锋牸 from tb_bibliography group by category +select name 鍥句功鍚嶇О,price 浠锋牸 from tb_bibliography +where price in (select max(price) 鏈璐电殑浠锋牸 from tb_bibliography group by category) + +``` + + + +###### 琛屽瓙鏌ヨ + +琛屽瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炵殑缁撴灉闆嗘槸1琛孨鍒楋紝璇ュ瓙鏌ヨ鐨勭粨鏋滈氬父鏄琛ㄧ殑鏌愯鏁版嵁杩涜鏌ヨ鑰岃繑鍥炵殑缁撴灉闆嗐 + +```sql +--锛1锛夋煡璇功鐩〃(tb_bibliography)涓笌銆婄鐞嗕俊鎭郴缁熷疄鐢ㄦ暀绋嬶紙绗3鐗堬級銆嬪悓浣滆(author)锛屽悓绫诲瀷(category)鐨勪功銆 +--锛2锛夋煡璇㈠鐢熻〃(tb_student)涓笌"閭圭澘鐫'鍦ㄥ悓涓涓闄(school)涓斿悓涓骞寸骇锛堝鍙峰ご涓や綅鐩稿悓鍒欒〃鏄庡湪鍚屼竴骞寸骇锛夊鐢熺殑瀛﹀彿銆佸鍚嶅拰瀛﹂櫌銆 +``` + + + +###### 琛ㄥ瓙鏌ヨ(from瀛愭煡璇) + +琛ㄥ瓙鏌ヨ鏄寚瀛愭煡璇㈣繑鍥炴槸M琛孨鍒楃殑缁撴灉闆嗭紝鏌ヨ璇彞鍙祵濂楀湪FROM鍏 +閿瓧鍚庯紝涓旈渶瑕佸畾涔夊埆鍚嶃 + +```sql +--鏌ヨ姣忕鍥句功鍦ㄩ鐨勬湰鏁帮紝鏄剧ずISBN鍙(ISBN)銆佸浘涔﹀悕绉(name)鍜岃鍥句功鐨勫湪棣嗘暟閲忋 +``` + + + +##### 鎸変綅缃垎绫 + +###### exists瀛愭煡璇 + +鍏抽敭瀛桬XISTS鏋勯犲瓙鏌ヨ鏃讹紝褰撳瓙鏌ヨ鐨勭粨鏋滈泦涓嶄负绌烘椂锛屽垯EXISTS杩斿洖鐨勭粨鏋滀负TRUE锛屽灞傛煡璇㈣鍙ヨ繘琛屾煡璇紱褰撳瓙鏌ヨ鐨勭粨鏋滈泦涓虹┖鏃讹紝鍒橢XISTS杩斿洖鐨勭粨鏋滀负FALSE锛屽灞傛煡璇㈣鍙ヤ笉杩涜鏌ヨ銆 + +```sql +--锛1锛夋煡璇㈠鐢熻〃(tb-student)涓紝鏄惁鏈夊鐢熻鑰呯殑濮撳悕鏄"榛勫紭" +if exists(select stu_num from tb_record where stu_num in (select stu_num from tb_student where name='榛勫紭') and return_time is null) + print '鏈' +else + print '娌℃湁' + +--锛2锛夋煡璇功鐩〃(tb-bibliography)涓紝搴撳瓨鏁颁负0鐨勪功鐩悕绉(name) +``` + +## 鎺掑簭鍑芥暟 + +**鎺掑簭鍑芥暟 OVER( [鍒嗙粍瀛愬彞] 鎺掑簭瀛愬彞[DESC][ASC] )** + +**鎺掑簭瀛愬彞 锛歄RDER BY 鎺掑簭鍒,鎺掑簭鍒椻** + +缁冧範:浣跨敤鍚勪釜鎺掑悕鍑芥暟瀵瑰鍛樼殑Java 鎴愮哗杩涜鎺掑悕锛屽苟浠旂粏浣撲細鍏朵腑鎺掑簭鍑芥暟鐨勫叿浣撶敤娉曚笌鍏朵腑鐨勫尯鍒 + +```sql + +``` + +- ROW_NUMBER()鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑杩炵画鐨勫簭鍙** +- RANK()鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑鐨勫簭鍙凤紝浣嗘槸瀛樺湪骞跺垪骞朵笖璺崇┖** +- DENSE_RANK() 鍑芥暟鐢熸垚鐨勬帓搴忔牴鎹帓搴忓瓙鍙ョ粰鍑**閫掑鐨勫簭鍙凤紝浣嗘槸瀛樺湪骞跺垪涓嶈烦绌** + +鏍规嵁涓婇潰涓変釜鍑芥暟锛屾垜浠彲浠ュ鍔犱竴涓簭鍒楋紝浣嗘槸鏈夋椂鍊欐垜浠渶瑕佸鏁版嵁杩涜鍒嗙粍锛岀劧鍚庡鍒嗙粍鍚庣殑鏁版嵁杩涜澧炲姞搴忓垪锛孭ARTITION BY鍙互涓庝互涓婁笁涓嚱鏁拌仈鍚堜娇鐢 + +```sql +--瀛︾敓鐨凧ava鎴愮哗锛屽苟鏍规嵁鎴愮哗鎺掑悕 +--row_number() +select StuName 濮撳悕,ROW_NUMBER() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +--rank() +select StuName 濮撳悕,rank() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +--DENSE_RANK() + select StuName 濮撳悕,dense_rank() over(order by score desc) 鎺掑悕,score 鍒嗘暟 from StuScore +join stuinfo on StuInfo.StuID = StuScore.StuID +where subject = 'Java' + +``` + + + + + +## 鍒嗛〉鏌ヨ + +#### 鍒嗛〉鏂规涓 + +**浣跨敤top鍒嗛〉** + +```sql +declare @PageSize int = 5 -- 姣忛〉5鏉 +declare @PageIndex int = 2 --绗2椤 +select top(@PageSize) * from Student +where Stuid not in (select top(@PageSize)*(@PageIndex-1)) StuId from Student +``` + + + +#### 鍒嗛〉鏂规浜 + +**浣跨敤row_number鍒嗛〉** + +```sql +declare @PageSize int = 5 +declare @PageIndex int = 3 +select * from +(select ROW_NUMBER() over(order by StuId) RowId,*from Student) as Temp +where RowId between (@PageIndex-1)*@PageSize+1 and @PageIndex*PageSize +``` + + + + + + + +#### 鍒嗛〉鏌ヨ缁冧範 + +```sql +--鏁版嵁缁撴瀯鍜屾暟鎹涓嬶細 +create table Student +( + StuId int primary key identity(1,2), --鑷姩缂栧彿 + StuName varchar(20), + StuSex varchar(4) +) +insert into Student(StuName,StuSex) values('鍒樺','鐢') +insert into Student(StuName,StuSex) values('鍏崇窘','鐢') +insert into Student(StuName,StuSex) values('寮犻','鐢') +insert into Student(StuName,StuSex) values('璧典簯','鐢') +insert into Student(StuName,StuSex) values('椹秴','鐢') +insert into Student(StuName,StuSex) values('榛勫繝','鐢') +insert into Student(StuName,StuSex) values('榄忓欢','鐢') +insert into Student(StuName,StuSex) values('绠闆','鐢') +insert into Student(StuName,StuSex) values('璇歌憶浜','鐢') +insert into Student(StuName,StuSex) values('寰愬憾','鐢') +insert into Student(StuName,StuSex) values('鍛ㄤ粨','鐢') +insert into Student(StuName,StuSex) values('鍏冲钩','鐢') +insert into Student(StuName,StuSex) values('寮犺嫗','鐢') +insert into Student(StuName,StuSex) values('鏇规搷','鐢') +insert into Student(StuName,StuSex) values('鏇逛粊','鐢') +insert into Student(StuName,StuSex) values('鏇逛笗','鐢') +insert into Student(StuName,StuSex) values('鏇规','鐢') +insert into Student(StuName,StuSex) values('鏇瑰桨','鐢') +insert into Student(StuName,StuSex) values('鍏搁煢','鐢') +insert into Student(StuName,StuSex) values('璁歌','鐢') +insert into Student(StuName,StuSex) values('澶忎警鏁','鐢') +insert into Student(StuName,StuSex) values('閮槈','鐢') +insert into Student(StuName,StuSex) values('鑽褰','鐢') +insert into Student(StuName,StuSex) values('璐捐','鐢') +insert into Student(StuName,StuSex) values('瀛欐潈','鐢') +insert into Student(StuName,StuSex) values('瀛欏潥','鐢') +insert into Student(StuName,StuSex) values('瀛欑瓥','鐢') +insert into Student(StuName,StuSex) values('澶彶鎱','鐢') +insert into Student(StuName,StuSex) values('澶т箶','濂') +insert into Student(StuName,StuSex) values('灏忎箶','濂') +``` + +**鏂瑰紡涓锛氫娇鐢╮ow_number** + +**鏂瑰紡浜岋細浣跨敤top鍒嗛〉** + -- Gitee