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/SQLQuery1.sql" new file mode 100644 index 0000000000000000000000000000000000000000..d5aeeb73b024f24a8e085ffdfeffcdf08ca4ff9f --- /dev/null +++ "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/SQLQuery1.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\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" new file mode 100644 index 0000000000000000000000000000000000000000..9b1e4e5d15e51b68bfe4e0ae4dac197975d93cf6 --- /dev/null +++ "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" @@ -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 +``` + + +