diff --git "a/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260/9.18\344\275\234\344\270\232/\344\275\234\344\270\2329\346\234\21018\345\217\267.sql" "b/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260/9.18\344\275\234\344\270\232/\344\275\234\344\270\2329\346\234\21018\345\217\267.sql" new file mode 100644 index 0000000000000000000000000000000000000000..4d7e88c492427c3de280ad352b254eb704666f9b --- /dev/null +++ "b/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260/9.18\344\275\234\344\270\232/\344\275\234\344\270\2329\346\234\21018\345\217\267.sql" @@ -0,0 +1,70 @@ +/**1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 + + + + +---查询 +select p.*,De.DepartmentName from People p +join Department De on De.DepartmentId=p.DepartmentId +where PeopleAddress='武汉' +--2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +select p.*,De.DepartmentName,R.RankName from People p +join Department De on De.DepartmentId=p.DepartmentId +join [Rank] R on R.RankId=De.DepartmentId +where PeopleAddress='武汉' + +--3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +select DepartmentName, COUNT(*) 员工人数,SUM(PeopleSalary) 员工工资总和,AVG(PeopleSalary) 平均工资 ,MAX(PeopleSalary)最高工资,MIN(PeopleSalary)最低工资 from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName; +--4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +select DepartmentName, COUNT(*) 员工人数,SUM(PeopleSalary) 员工工资总和,AVG(PeopleSalary) 平均工资 ,MAX(PeopleSalary)最高工资,MIN(PeopleSalary)最低工资 from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName +having AVG(PeopleSalary)>=10000 +order by AVG(PeopleSalary) desc +-- +--5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 +select count(*) 员工人数,sum(PeopleSalary) 员工工资总和,AVG(PeopleSalary) 平均工资,MAX(PeopleSalary) 最高工资 ,min(PeopleSalary) 最低工资 from People +join Department on People.DepartmentId=Department.DepartmentId +join [Rank] on [Rank].RankId=People.RankId +group by DepartmentName,RankName + + +--6.查询出巨蟹 6.22--7.22 的员工信息 +select * from People where +MONTH(PeopleBirth)=6 and Day(PeopleBirth)>=22 or MONTH(PeopleBirth)=7 and Day(PeopleBirth)<=22 +--7.查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪)**/ +select * ,case + when YEAR(PeopleBirth)%12=0 + then '鼠' + when YEAR(PeopleBirth)%12=1 + then '牛' + when YEAR(PeopleBirth)%12=2 + then '虎' + when YEAR(PeopleBirth)%12=3 + then '兔' + when YEAR(PeopleBirth)%12=4 + then '龙' + when YEAR(PeopleBirth)%12=5 + then '蛇' + when YEAR(PeopleBirth)%12=6 + then '马' + when YEAR(PeopleBirth)%12=7 + then '羊' + when YEAR(PeopleBirth)%12=8 + then '猴' + when YEAR(PeopleBirth)%12=9 + then '鸡' + when YEAR(PeopleBirth)%12=10 + then '狗' + when YEAR(PeopleBirth)%12=11 + then '猪' + end from People + ; + + +select * from [Rank] + +select * from People +· diff --git "a/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260/9.18\347\254\224\350\256\260/DBTEST.sql" "b/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260/9.18\347\254\224\350\256\260/DBTEST.sql" new file mode 100644 index 0000000000000000000000000000000000000000..6a3acd408993caef6cff1c6433ffc7962d78859d --- /dev/null +++ "b/\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260/9.18\347\254\224\350\256\260/DBTEST.sql" @@ -0,0 +1,225 @@ +if exists(select * from sys.databases where name='DBTEST') +drop database DBTEST1; +go + +create database DBTEST1; +go + +use DBTEST1; +go + +--创建部门表 +create table Department +( + --创建部门编号;int代表整数类型;primary key代表主键;identity(1,1)代表从1开始步长为1自增长; + DepartmentId int primary key identity(1,1), + --创建部门名称;nvarchar(50)代表长度50的字符串;not null代表不能为空; + DepartmentName nvarchar(50) not null, + --创建部门描述;text代表长文本; + DepartmentRemark text +); +go + +--创建职级表,rank为系统关键字,此处使用[]代表自定义名字,而非系统关键字 +create table [Rank] +( + RankId int primary key identity(1,1), + RankName nvarchar(50) not null, + RankRemark text +); +go + +--创建员工信息表 +create table People +( + PeopleId int primary key identity(1,1), + --references代表外键引用,此字段必须符合与其它表的外键约束 + DepartmentId int references Department(DepartmentId) not null, + RankId int references [Rank](RankId) not null, + PeopleName nvarchar(50) not null, + --default代表字段默认值; check可以规定字段值的约束条件; + PeopleSex nvarchar(1) default('男') check(PeopleSex='男' or PeopleSex='女') not null, + PeopleBirth datetime not null, + PeopleSalary decimal(12,2) check(PeopleSalary>= 1000 and PeopleSalary <= 100000) not null, + --unique代表唯一约束,为数据提供唯一性保证; + PeoplePhone nvarchar(20) unique not null, + PeopleAddress nvarchar(100), + --datetime和smalldatetime都可以表示时间类型,getdate()用于获取系统当前时间 + PeopleAddTime smalldatetime default(getdate()) +); +go + + + +------------------------------插入数据部分------------------------------ +--部门表插入数据 +insert into Department values('行政部','公司主管行政工作的部门'); +go + +--一次性插入多条数据 +insert into Department(DepartmentName,DepartmentRemark) +select '市场部','吹牛的部门' union +select '产品部','天马星空的部门' union +select '总经办','都是领导的部门' ; +go + +-------职级表插入数据 +insert into [Rank](RankName,RankRemark) +values('初级','辅助其他人完成任务') +insert into [Rank](RankName,RankRemark) +values('中级','具备独立处理事务的能力') +insert into [Rank](RankName,RankRemark) +values('高级','具备可以带动全场节奏的能力'); +go + +---------向员工表插入数据 +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,3,'刘备','男','1984-7-9',20000,'13554785452','成都',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,2,'孙尚香','女','1987-7-9',15000,'13256854578','荆州',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,1,'关羽','男','1988-8-8',12000,'13985745871','荆州',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,1,'张飞','男','1990-8-8',8000,'13535987412','宜昌',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,3,'赵云','男','1989-4-8',9000,'13845789568','宜昌',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,3,'马超','男','1995-4-8',9500,'13878562568','香港',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,2,'黄盖','男','1989-4-20',8500,'13335457412','武汉',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,1,'貂蝉','女','1989-4-20',6500,'13437100050','武汉',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,2,'曹操','男','1987-12-20',25000,'13889562354','北京',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,3,'许褚','男','1981-11-11',9000,'13385299632','北京',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,1,'典韦','男','1978-1-13',8000,'13478545263','上海',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,1,'曹仁','男','1998-12-12',7500,'13878523695','深圳',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,3,'孙坚','男','1968-11-22',9000,'13698545841','广州',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,3,'孙策','男','1988-1-22',11000,'13558745874','深圳',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,2,'孙权','男','1990-2-21',12000,'13698745214','深圳',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,2,'大乔','女','1995-2-21',13000,'13985478512','上海',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,1,'小乔','女','1996-2-21',13500,'13778787874','北京',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,2,'周瑜','男','1992-10-11',8000,'13987455214','武汉',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(2,3,'鲁肃','男','1984-9-10',5500,'13254785965','成都',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(3,3,'吕蒙','男','1987-5-19',8500,'13352197364','成都',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,1,'陆逊','男','1996-5-19',7500,'13025457392','南京',getdate()) + +insert into People(DepartmentId,RankId,PeopleName,PeopleSex,PeopleBirth, +PeopleSalary,PeoplePhone,PeopleAddress,PeopleAddTime) +values(1,2,'太史慈','男','1983-6-1',7500,'13077778888','上海',getdate()) + + +---查询 +select * from Department +select * from [Rank] +select * from People + + +--1. 查询所有行所有列 + +--2. 指定列查询(姓名,性别,月薪,电话) +select PeopleName as 姓名 ,Peoplesex as 性别 from People; +--3. 指定列查询,并自定义中文列名(姓名,性别,月薪,电话) +--4. 查询公司员工所在城市(不需要重复数据) + +--消除重复行:distinct +select distinct peopleAddress from People; +--5. 假设工资普调10%,查询原始工资和调整后的工资,显示(姓名,性别,月薪,加薪后的月薪)(添加列查询)。 +select top 3 PeopleName 姓名, PeopleSalary 月薪, PeopleSalary*1.1 加薪后月薪 from People; + +--top ordey by + + +select * from People +--根据指定列(姓名,性别,月薪,电话)查询性别为女的员工信息,并自定义中文列名 +--2. 查询月薪大于等于10000 的员工信息( 单条件 ) +--3. 查询月薪大于等于10000 的女员工信息(多条件) +select * from People where PeopleSalary>=10000 and PeopleSex='女' +--4. 显示出生年月在1980-1-1之后,而且月薪大于等于10000的女员工信息。 +select * from People where PeopleSalary>=10000 and PeopleSex='女' and PeopleBirth>'1995-1-1'; + +--5. 显示出月薪大于等于15000 的员工,或者月薪大于等于8000的女员工信息。 +select * from People where (PeopleSalary>=8000 and peoplesex='女') or PeopleSalary>=15000 +--6. 查询月薪在10000-20000 之间员工信息( 多条件 ) +select * from People where PeopleSalary between 10000 and 20000 +--7. 查询出地址在北京或者上海的员工信息 +--8. 查询所有员工信息(根据工资排序,降序排列): asc(默认):升序 desc:降序 +select * from People order by PeopleSalary desc + +--9. 显示所有的员工信息,按照名字的长度进行倒序排列 +--10. 查询工资最高的5个人的信息 +select top 5 * from People order by PeopleSalary desc +--11. 查询工资最高的10%的员工信息 +select top 10 percent * from People order by PeopleSalary desc +--12. 查询出地址没有填写的员工信息 +--为空不能用=,is null, is not null +select * from People where PeopleAddress is null; + +--13. 查询出地址已经填写的员工信息 +--14. 查询所有的80后员工信息 + +--15. 查询年龄在30-40 之间,并且工资在15000-30000 之间的员工信息 +--16. 查询出巨蟹 6.22--7.22 的员工信息 +select * from people where +(MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22) or +(MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22) +; +--17. 查询工资比赵云高的人 +select * from people where PeopleSalary > 9000 +--18. 查询出和赵云在同一个城市的人 +--19. 查询出生肖为鼠的人员信息 +--20. 查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) +--case when end