From 6f82d8bd5019253d951a0688ec2d5ea16170bfd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A0=E5=BF=97=E6=96=B0?= <1759998065@qq.com> Date: Mon, 19 Sep 2022 17:36:47 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=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.15/.keep" | 0 ...2\350\241\250\347\272\246\346\235\237.sql" | 108 ++++++++++++++++++ .../9.15/9.15\347\254\224\350\256\260.txt" | 30 +++++ .../9.16/sql\346\237\245\350\257\242.txt" | 19 +++ ...4\346\254\241\344\275\234\344\270\232.sql" | 41 +++++++ 5 files changed, 198 insertions(+) create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.15/.keep" create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.15/2022-09-15-\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.sql" create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.15/9.15\347\254\224\350\256\260.txt" create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.16/sql\346\237\245\350\257\242.txt" create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.16/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" diff --git "a/05\345\215\240\345\277\227\346\226\260/9.15/.keep" "b/05\345\215\240\345\277\227\346\226\260/9.15/.keep" new file mode 100644 index 0000000..e69de29 diff --git "a/05\345\215\240\345\277\227\346\226\260/9.15/2022-09-15-\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.sql" "b/05\345\215\240\345\277\227\346\226\260/9.15/2022-09-15-\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.sql" new file mode 100644 index 0000000..9d31211 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.15/2022-09-15-\345\273\272\345\272\223\345\273\272\350\241\250\347\272\246\346\235\237.sql" @@ -0,0 +1,108 @@ +--关系型数据库:SQL server, Mysql, Oracle +--创建数据库:create database 数据库名 +--database:数据库 + +if exists (select * from sys.databases where name='DBTEST') + drop database DBTEST + + create database DBTEST + + --使用数据库 + use DBTEST + + --创建班级表 + create table ClassInfo( + ClassId int primary key identity(1,1), + ClassName varchar(20) + ); + + --插入数据: insert [into] 表名(字段名) values(值) + insert into ClassInfo( ClassName) values('软件1班'); + + insert ClassInfo values('软件2班') + + select * from ClassInfo + + --创建数据表 + create table StuInfo( + stuId int primary key identity(1001,1), --学生ID + --添加一个检查约束,判断用户插入/新增的数据,性别字段是不是男或者女 + --default:默认约束 + --check + stugender varchar(2) not null default('男') check(stugender='男' or stugender='女'), --学生性别 + stuphone char(11) check(len(stuphone)=11) unique, + --创建班级外键 + --ClassID int references ClassInfo(ClassID) + ClassID int + + ); + + + --增加外键 + --修改表结构 表名 add constraint 约束名 foreign key(要引用的字段) references 主键表(字段) + Alter table StuInfo add constraint FK_StuInfo_ClassId foreign key(ClassID) references ClassInfo(ClassID) + + + --新增姓名列 + alter table StuInfo add stuName varchar(20) + + + + --如果没给出列名,默认是按照顺序一个个添加 + --insert StuInfo values('女',13888888888) + + --insert StuInfo(stuphone) values(15888888888) + + + + select * from StuInfo; + + --字符串:char(5),varchar(5),nvarchar(5)之间区别是什么 + + + + --删除表:drop table 表名 + drop table StuInfo + + + --非空 + + --约束,自增(标识列) + + --外键 + --主键:默认唯一列 + --默认 + --唯一: + --check检查: + + --插入数据:insert into + + create table sectionInfo( + sectionID int primary key identity(1,1), + sectionName varchar(10) not null + ); + + create table userInfo( + userNo int primary key identity(1,1), + userName varchar(10) unique not null check(len(userName)>4), + userSex varchar(2) not null check(userSex='男' or userSex='女'), + userAge int not null check(userAge>=1 and userAge<=100), + userAddress varchar(50) default('湖北'), + userSection int references sectionInfo(sectionID), + + ); +create table workInfo( + workId int primary key identity(1,1), + userId int references userInfo(userNo), + workTime datetime not null, + workDescription varchar(40) check(workDescription='迟到' or workDescription='早退' or workDescription='旷工' or workDescription='病假' or workDescription='事假'), +); +insert into sectionInfo(sectionName) values ('实践部'),('市场部'),('销售部'),('管理部'),('财务部'); + +insert into userInfo(userName) values ('张三'),('李四'),('王五'),('赵六'),('黄七'); +insert into userInfo(userSex) values ('女'),('男'),('女'),('男'),('女'); +insert into userInfo(userAge) values ('23'),('25'),('48'),('21'),('45'); +insert into userInfo(userAddress) values ('福建'),('江苏'),('北京'),('上海'),('广东'); + +insert into workInfo(workTime) values ('2'),('1'),('3'),('4'),('6'); +insert into workInfo(workDescription) values ('迟到'),('早退'),('旷工'),('病假'),('事假'); \ No newline at end of file diff --git "a/05\345\215\240\345\277\227\346\226\260/9.15/9.15\347\254\224\350\256\260.txt" "b/05\345\215\240\345\277\227\346\226\260/9.15/9.15\347\254\224\350\256\260.txt" new file mode 100644 index 0000000..fb584b3 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.15/9.15\347\254\224\350\256\260.txt" @@ -0,0 +1,30 @@ +1.鍒涘缓鏁版嵁搴 +create database 鏁版嵁搴 +2.鍒涘缓鏁版嵁琛 +create table 鏁版嵁琛 +渚嬶細 +create table stuInfo( +id int primary key identity(1,1), +name varchar(2) +); +3.浣跨敤鏁版嵁搴 +use 鏁版嵁搴撳悕 +4.鍒犻櫎琛 +drop table 琛ㄥ悕 +7.鍞竴绱㈠紩 +unique +8.闀垮害 +len锛**锛 +9.澶栭敭 +references 琛ㄥ悕(鍒楀悕) +10.涓婚敭 +primary key +11.鑷 +identity(x,x) +绗竴浣嶄负璧峰鏁帮紝绗簩浣嶅鍔犳暟 +12.闈炵┖ +not null +13.榛樿鍊 +default('鐢') +14.妫鏌 +check(age='鐢' or age='濂') diff --git "a/05\345\215\240\345\277\227\346\226\260/9.16/sql\346\237\245\350\257\242.txt" "b/05\345\215\240\345\277\227\346\226\260/9.16/sql\346\237\245\350\257\242.txt" new file mode 100644 index 0000000..e5aa989 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.16/sql\346\237\245\350\257\242.txt" @@ -0,0 +1,19 @@ +1.鍏宠仈琛ㄥ悕 +select * from *** inner join ** on ***.1=**.1 +2.鏁伴噺 +count() +3.鎬诲拰 + sum() +4.骞冲潎 +avg() +5.鏈楂 +max() +6.鏈浣 +min() +7.鍒嗙粍 +group by +having鍙兘鐢ㄥ湪group by涔嬪悗锛屽鍒嗙粍鍚庣殑缁撴灉杩涜绛涢(鍗充娇鐢╤aving鐨勫墠鎻愭潯浠舵槸鍒嗙粍)銆 +where鑲畾鍦╣roup by 涔嬪墠 +8.鎺掑簭 +order by ** desc/闄嶅簭 +asc/鍗囧簭 \ No newline at end of file diff --git "a/05\345\215\240\345\277\227\346\226\260/9.16/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" "b/05\345\215\240\345\277\227\346\226\260/9.16/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..7efe3b5 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.16/\347\254\254\344\272\214\346\254\241\344\275\234\344\270\232.sql" @@ -0,0 +1,41 @@ +select * from Department +select * from [Rank] +select * from People + +--1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 +select *,DepartmentName from People inner join Department on People.DepartmentId=Department.DepartmentId where PeopleAddress='武汉'; +--2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +select *,DepartmentName,RankName from People inner join Department on People.DepartmentId=Department.DepartmentId inner join Rank on Rank.RankId=People.RankId where PeopleAddress='武汉'; +--3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +select DepartmentName,COUNT(PeopleId)员工工资总和,avg(PeopleSalary)平均工资,sum(PeopleSalary)员工工资总和,max(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from Department inner join People on Department.DepartmentId=People.DepartmentId +group by DepartmentName; +--4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +select DepartmentName,count(PeopleId)员工工资总和,avg(Peoplesalary)平均工资,max(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People inner join +Department on Department.DepartmentId=People.DepartmentId +group by DepartmentName +having avg(PeopleSalary)>=10000 +order by 平均工资 desc; +--5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 +select DepartmentName,RankName,count(PeopleId)员工人数,sum(PeopleSalary)员工工资总和,max(PeopleSalary)最高工资,min(PeopleSalary)最低工资 from People + inner join Department on People.DepartmentId=Department.DepartmentId +inner join Rank on People.RankId=Rank.RankId +group by DepartmentName,RankName +--查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) +select *,case YEAR(PeopleBirth)%12 +when 0 then '猴' +when 1 then '鸡' +when 2 then '狗' +when 3 then '猪' +when 4 then '鼠' +when 5 then '牛' +when 6 then '虎' +when 7 then '兔' +when 8 then '龙' +when 9 then '蛇' +when 10 then '马' +when 11 then '羊' +end 属相 + from People +--查询出巨蟹 6.22--7.22 的员工信息 +select * from people +where(MONTH(PeopleBirth)=6 and day(PeopleBirth)>=22)or(MONTH(PeopleBirth)=7 and day(PeopleBirth)<=22); \ No newline at end of file -- Gitee From 45d6217b71a2ecb84395170177e0c3e214457466 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A0=E5=BF=97=E6=96=B0?= <1759998065@qq.com> Date: Tue, 20 Sep 2022 14:11:23 +0000 Subject: [PATCH 2/3] =?UTF-8?q?05=E5=8D=A0=E5=BF=97=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 鍗犲織鏂 <1759998065@qq.com> --- .../\345\255\220\346\237\245\350\257\242.md" | 285 ++++++++++++++++++ ...1\346\254\241\344\275\234\344\270\232.sql" | 40 +++ 2 files changed, 325 insertions(+) create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.19/\345\255\220\346\237\245\350\257\242.md" create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.19/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" diff --git "a/05\345\215\240\345\277\227\346\226\260/9.19/\345\255\220\346\237\245\350\257\242.md" "b/05\345\215\240\345\277\227\346\226\260/9.19/\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000..e0fee72 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.19/\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,285 @@ +## 鍥為【 + +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鍒**锛岃缁撴灉閫氬父鏉ヨ嚜瀵硅〃鏌愪釜瀛楁鐨勬煡璇㈢粨鏋滐紝甯n鍏抽敭瀛楃殑瀛愭煡璇㈡槸鏈甯哥敤鐨勪竴绫诲瓙鏌ヨ锛屽湪浣跨敤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 +``` + + + + + + + +## 浣滀笟 + +#### 瀛愭煡璇㈢粌涔 + +1. 鍏崇窘鐨勯摱琛屽崱鍙蜂负"6225547858741263"锛屾煡璇㈠嚭浣欓姣斿叧缇藉鐨勯摱琛屽崱淇℃伅锛屾樉绀哄崱鍙凤紝韬唤璇侊紝濮撳悕锛屼綑棰濄 +2. 浠庢墍鏈夎处鎴蜂俊鎭腑鏌ヨ鍑轰綑棰濇渶楂樼殑浜ゆ槗鏄庣粏(瀛橀挶鍙栭挶淇℃伅)銆 + +1. 鏌ヨ鏈夊彇娆捐褰曠殑閾惰鍗″強璐︽埛淇℃伅锛屾樉绀哄崱鍙凤紝韬唤璇侊紝濮撳悕锛屼綑棰濄 +2. 鏌ヨ鍑烘病鏈夊瓨娆捐褰曠殑閾惰鍗″強璐︽埛淇℃伅锛屾樉绀哄崱鍙凤紝韬唤璇侊紝濮撳悕锛屼綑棰濄 +3. 鍏崇窘鐨勯摱琛屽崱鍙蜂负"6225547858741263",鏌ヨ褰撳ぉ鏄惁鏈夋敹鍒拌浆璐︺ +4. 鏌ヨ鍑轰氦鏄撴鏁帮紙瀛樻鍙栨鎿嶄綔锛夋渶澶氱殑閾惰鍗¤处鎴蜂俊鎭紝鏄剧ず锛氬崱鍙凤紝韬唤璇侊紝濮撳悕锛屼綑棰濓紝浜ゆ槗娆℃暟銆 + +1. 鏌ヨ鍑烘病鏈夎浆璐︿氦鏄撹褰曠殑閾惰鍗¤处鎴蜂俊鎭紝鏄剧ず鍗″彿锛岃韩浠借瘉锛屽鍚嶏紝浣欓銆 + + + +#### 鍒嗛〉鏌ヨ缁冧範 + +```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/05\345\215\240\345\277\227\346\226\260/9.19/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" "b/05\345\215\240\345\277\227\346\226\260/9.19/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" new file mode 100644 index 0000000..42a16dc --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.19/\347\254\254\344\270\211\346\254\241\344\275\234\344\270\232.sql" @@ -0,0 +1,40 @@ +select * from AccountInfo --个人信息 +select * from BankCard --银行卡信息 +select * from CardStateChange --银行卡状态更改表 +select * from CardTransfer --转账表 +select * from CardExchange --交易记录 +--1. 关羽的银行卡号为"6225547858741263",查询出余额比关羽多的银行卡信息,显示卡号,身份证,姓名,余额。 +select *,accountphone,realname from BankCard join AccountInfo on AccountInfo.AccountId=BankCard.accountid +where CardMoney>( +select CardMoney from BankCard where CardNo='6225547858741263' +); + +--2. 从所有账户信息中查询出余额最高的交易明细(存钱取钱信息)。 +select * from CardExchange +where CardNo in( +select CardNo from BankCard where CardMoney in( +select max(CardMoney) from BankCard + ) +); +--1. 查询有取款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 + +select BankCard.CardMoney,AccountInfo.* from BankCard +join AccountInfo on AccountInfo.AccountId=BankCard.AccountId +where CardNo in ( +select CardNoOut from CardTransfer) + +--2. 查询出没有存款记录的银行卡及账户信息,显示卡号,身份证,姓名,余额。 + +select BankCard.CardMoney,AccountInfo.* from BankCard +join AccountInfo on AccountInfo.AccountId=BankCard.AccountId +where CardNo not in ( +select CardNoIn from CardTransfer) +--3. 关羽的银行卡号为"6225547858741263",查询当天是否有收到转账。 +select * from CardTransfer where CardNoIn = 6225547858741263 +--4. 查询出交易次数(存款取款操作)最多的银行卡账户信息,显示:卡号,身份证,姓名,余额,交易次数。 + +--1. 查询出没有转账交易记录的银行卡账户信息,显示卡号,身份证,姓名,余额。 +select AccountCode,RealName,CardNo,CardMoney from BankCard join AccountInfo on AccountInfo.AccountId=BankCard.AccountId +where cardno not in ( +select CardNoOut from CardTransfer +) \ No newline at end of file -- Gitee From 9c087567b425f5704afb75739a94c3e98046bc48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A0=E5=BF=97=E6=96=B0?= <1759998065@qq.com> Date: Wed, 21 Sep 2022 18:14:33 +0000 Subject: [PATCH 3/3] =?UTF-8?q?05=E5=8D=A0=E5=BF=97=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 鍗犲織鏂 <1759998065@qq.com> --- .../9.21/SQLQuery2.sql" | 41 +++++++++++++++++++ ...nk,dense_rank\345\207\275\346\225\260.txt" | 15 +++++++ 2 files changed, 56 insertions(+) create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.21/SQLQuery2.sql" create mode 100644 "05\345\215\240\345\277\227\346\226\260/9.21/row_number,rank,dense_rank\345\207\275\346\225\260.txt" diff --git "a/05\345\215\240\345\277\227\346\226\260/9.21/SQLQuery2.sql" "b/05\345\215\240\345\277\227\346\226\260/9.21/SQLQuery2.sql" new file mode 100644 index 0000000..9d94837 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.21/SQLQuery2.sql" @@ -0,0 +1,41 @@ +select * from Student; +select * from Course; +select * from Teacher; +select * from SC; +--13. 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 +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 cid,count(sid)选修人数,avg(score)平均分,max(score)最高分,min(score)最低分, +count(及格)/count(sid) as 及格率, +count(中等)/count(sid) as 中等率, +count(优良)/count(sid) as 优良率, +count(优秀)/count(sid) as 优秀率 + from (select *, + case when score>=60 then 1 else 0 end as 及格, + case when score>=70 and score<80 then 1 else 0 end as 中等, + case when score>=80 and score<90 then 1 else 0 end as 优良, + case when score>=90 then 1 else 0 end as 优秀 + from SC + )b group by CId + order by count(sid) desc,CId +--15. 按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 +select *,rank() over(partition by cid order by score desc)as rank from sc + +--15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次 +select *,DENSE_RANK() over(partition by cid order by score desc)as rank from sc +--16. 查询学生的总成绩,并进行排名,总分重复时保留名次空缺 +select sid,sum(score)总成绩 ,rank() over(partition by sid order by sum(score) desc)as rank from sc +group by sid + +--16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 +select sid,sum(score)总成绩 ,row_number() over(partition by sid order by sum(score) desc)as rank from sc +group by sid \ No newline at end of file diff --git "a/05\345\215\240\345\277\227\346\226\260/9.21/row_number,rank,dense_rank\345\207\275\346\225\260.txt" "b/05\345\215\240\345\277\227\346\226\260/9.21/row_number,rank,dense_rank\345\207\275\346\225\260.txt" new file mode 100644 index 0000000..1218f26 --- /dev/null +++ "b/05\345\215\240\345\277\227\346\226\260/9.21/row_number,rank,dense_rank\345\207\275\346\225\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