diff --git "a/17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/2022-9-18\346\237\245\350\257\242.sql" "b/17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/2022-9-18\346\237\245\350\257\242.sql" new file mode 100644 index 0000000000000000000000000000000000000000..69acb209afc2a7c42370df865ed779bab457ea8b --- /dev/null +++ "b/17\345\220\264\346\226\207\351\276\231/\344\275\234\344\270\232/2022-9-18\346\237\245\350\257\242.sql" @@ -0,0 +1,218 @@ +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()) + + +--1. 查询出武汉地区所有的员工信息,要求显示部门名称以及员工的详细资料 +SELECT*FROM People p +join Department d on d. DepartmentId = p.DepartmentId +where PeopleAddress='武汉' +; +--2. 查询出武汉地区所有的员工信息,要求显示部门名称,职级名称以及员工的详细资料 +SELECT*FROM People p +join Department d on d. DepartmentId = p.DepartmentId +join Rank r on r.RankId=p.RankId +where PeopleAddress='武汉'; + +--3. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资。 +select count(p.DepartmentId) 员工人数,SUM(PeopleSalary)员工工资总和,avg(PeopleSalary)平均工资,MAX(PeopleSalary)最高工资,MIN(PeopleSalary)最低工资 from People p +join Department d on d. DepartmentId = p.DepartmentId +group by p.DepartmentId +--4. 根据部门分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资,平均工资在10000 以下的不参与统计,并且根据平均工资降序排列。 +select count(p.DepartmentId) 员工人数,SUM(PeopleSalary)员工工资总和,avg(PeopleSalary)平均工资,MAX(PeopleSalary)最高工资,MIN(PeopleSalary)最低工资 from People p +join Department d on d. DepartmentId = p.DepartmentId +group by p.DepartmentId +having avg(PeopleSalary)>10000 +order by avg(PeopleSalary) desc; +--5. 根据部门名称,然后根据职位名称,分组统计员工人数,员工工资总和,平均工资,最高工资和最低工资 +select DepartmentName,RankId,COUNT(People.DepartmentId)人数,SUM(PeopleSalary)工资总和,AVG(PeopleSalary)平均工资,MAX(PeopleSalary)最高工资,MIN(PeopleSalary)最低工资 from People +inner join Department on People.DepartmentId=Department.DepartmentId +group by RankId,DepartmentName +--6.查询出巨蟹 6.22--7.22 的员工信息 +select * from People where MONTH(PeopleBirth)+CONVERT(float,DAY(PeopleBirth))/100 between 6.22 and 7.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 \ No newline at end of file diff --git "a/17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/2022-9-18\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260.md" "b/17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/2022-9-18\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..039f865a7d1664101efae2893bf099f3f800905d --- /dev/null +++ "b/17\345\220\264\346\226\207\351\276\231/\347\254\224\350\256\260/2022-9-18\347\254\254\344\272\214\346\254\241\347\254\224\350\256\260.md" @@ -0,0 +1,86 @@ +# 1.妯$硦鏌ヨ + +``` +[]锛氫唬琛ㄥ尮閰嶈寖鍥村唴 +[^]锛氫唬琛ㄥ尮閰嶄笉鍦ㄨ寖鍥村唴 +select * from Department where DepartmentId like '[1-3]' + +// [1-3] == 1,2,3 + +select * from Department where DepartmentId like '[^1-3]' + +//[^1-3] == 4 +``` + +# 2.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 +``` + +# 3.CONVERT()涓嶤AST()鍑芥暟: + +```sql +--1.淇濈暀灏忔暟 +convert(decimal(13,2),12.45454) +cast(12.45454 as decimal(13,2)) +--2.寮哄埗杞崲绫诲瀷 +``` + + + +# 4.鑱氬悎鍑芥暟 + +SQL SERVER涓仛鍚堝嚱鏁颁富瑕佹湁锛 + +```sql +count:姹傛暟閲 +max:姹傛渶澶у +min:姹傛渶灏忓 +sum:姹傚拰 +avg:姹傚钩鍧囧 +``` + +# 5.鏉′欢鏌ヨ + +**SQL涓父鐢ㄨ繍绠楃** + +```sql +=锛氱瓑浜庯紝姣旇緝鏄惁鐩哥瓑鍙婅祴鍊 +!=锛氭瘮杈冧笉绛変簬 +>锛氭瘮杈冨ぇ浜 +<锛氭瘮杈冨皬浜 +>=锛氭瘮杈冨ぇ浜庣瓑浜 +<=锛氭瘮杈冨皬浜庣瓑浜 +IS NULL锛氭瘮杈冧负绌 +IS NOT NULL锛氭瘮杈冧笉涓虹┖ +in锛氭瘮杈冩槸鍚﹀湪鍏朵腑 +like锛氭ā绯婃煡璇 +BETWEEN...AND...锛氭瘮杈冩槸鍚﹀湪涓よ呬箣闂 50-100 BETWEEN 50 AND 100 +and锛氶昏緫涓庯紙涓や釜鏉′欢鍚屾椂鎴愮珛琛ㄨ揪寮忔垚绔嬶級 +or锛氶昏緫鎴栵紙涓や釜鏉′欢鏈変竴涓垚绔嬭〃杈惧紡鎴愮珛锛 +not锛氶昏緫闈烇紙鏉′欢鎴愮珛锛岃〃杈惧紡鍒欎笉鎴愮珛锛涙潯浠朵笉鎴愮珛锛岃〃杈惧紡鍒欐垚绔嬶級 +``` + +# 6.鏃堕棿鍑芥暟 + +``` +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 +``` \ No newline at end of file