diff --git "a/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232,\347\254\224\350\256\260/2022-9-15.md" "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232,\347\254\224\350\256\260/2022-9-15.md" new file mode 100644 index 0000000000000000000000000000000000000000..c1154345627e663093c17df748e90b6c50981d30 --- /dev/null +++ "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232,\347\254\224\350\256\260/2022-9-15.md" @@ -0,0 +1,190 @@ +# 2022.9.16 + +## 创建数据库 + +```SQL +create database 数据库名 +``` + +## 创建数据表 + +```SQL +create table 表名( +) +``` + +## 查询数据 + +```sql +select * from 表名 +``` + +## 增删改查 + +```SQL +insert into 表名 ({字段1},{字段1},{字段1},....) values (值1,值1,值1,....) +alter table (表名) add (列名) varchar(255) ; +delete from 表名 where 删除条件 +drop table (表名) 删除整个表 +UPDATE 表名 SET 字段1=修改的值1,字段2=修改的值2,.. . .. WHERE 修改的条件 +``` + + + +## 主键,自增,不允许为空,默认值,外键,唯一约束 + +```sql +1.primary key 主键 +2.identity(1,1) 自增 初始ID,自增多少 +3.not null 不允许为空 +4.default('') 默认值 +5.userId(表名) int(字段) references(外键) userInfo(表名)(userNo)列名 外键 +6.unique 唯一约束 +``` + +# 2022.9.17 + +## SQL条件查询 + +```sql +=:等于,比较是否相等及赋值 +!=:比较不等于 +>:比较大于 +<:比较小于 +>=:比较大于等于 +<=:比较小于等于 +IS NULL:比较为空 +IS NOT NULL:比较不为空 +in:比较是否在其中 +like:模糊查询 +BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +and:逻辑与(两个条件同时成立表达式成立) +or:逻辑或(两个条件有一个成立表达式成立) +not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) +``` + +## 模糊查询 + +```sql +%:代表匹配0个字符、1个字符或多个字符。 +_:代表匹配有且只有1个字符。 +[]:代表匹配范围内 +[^]:代表匹配不在范围内 + +模糊查询,包含查询 +select * from 表名 where 列名 like '%要查询的字段%' + +模糊查询,开头查询 +select * from 表名 where 列名 like '要查询的字段%' + +模糊查询,结尾查询 +select * from 表名 where 列名 like '%要查询的字段' +``` + +## 聚合函数 + +```SQL +count:求数量 +max:求最大值 计算某一列的最大值 +min:求最小值 计算某一列的最小值 +sum:求和 计算某一列的合计值,该列必须为数值类型 +avg:求平均值 计算某一列的平均值,该列必须为数值类型 +``` + +## 升序降序查询 + +```SQL +-- desc 降序 默认升序 asc -- +SELECT * FROM 表名 order by 列名 desc +``` + + + +## ROUND函数用法: + +```SQL +round(num,len,[type]) +其中: +num表示需要处理的数字,len表示需要保留的长度,type处理类型(0是默认值代表四舍五入,非0代表直接截取) +select ROUND(123.45454,3) --123.45500 +select ROUND(123.45454,3,1) --123.45400 +``` + +## CONVERT()与CAST()函数: + +```SQL +--1.保留小数 +convert(decimal(13,2),12.45454) +cast(12.45454 as decimal(13,2)) +--2.强制转换类型 +``` + +## 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 +``` + +## 连表查询 + +```SQL +内连接查询 +1.select * from 第一张表名 重命名字段1 +2.inner join 第二张表名 重命名字段2 on 重命名字段1.关联的列=重命名字段2.关联的列 +3.where 要筛选的条件、 + +左连接查询 +1.select * from 第一张表名 重命名字段1 +2.left join 第二张表名 重命名字段2 on 重命名字段1.关联的列=重命名字段2.关联的列 +3.where 要筛选的条件、 + +右连接查询 +1.select * from 第一张表名 重命名字段1 +2.right join 第二张表名 重命名字段2 on 重命名字段1.关联的列=重命名字段2.关联的列 +3.where 要筛选的条件、 +``` + +## **时间格式控制字符串:** + +| 名称 | 日期单位 | 缩写 | +| ------------ | ----------- | --------- | +| 年 | year | yyyy 或yy | +| 季度 | 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 | + +## 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/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232,\347\254\224\350\256\260/SQLQuery1.sql" "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232,\347\254\224\350\256\260/SQLQuery1.sql" new file mode 100644 index 0000000000000000000000000000000000000000..732d0c603d1c8eec72a8eb9fb29c61ffc52db887 --- /dev/null +++ "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\270\200\346\254\241\344\275\234\344\270\232,\347\254\224\350\256\260/SQLQuery1.sql" @@ -0,0 +1,64 @@ + + + + --Ϣ + create table sectionInfo( + --ű + sectionID int primary key identity(1,1), + -- + sectionName varchar(10) not null + ); + + select * from sectionInfo + INSERT INTO sectionInfo(sectionName) VALUES(''), + (''), + ('ڲ'); + + + --ԱϢ + create table userInfo( + --Ա + userNo int primary key identity(1,1) not null , + --Ա + userName varchar(10) unique not null check(len(userName)>=2), + --ԱԱ + userSex varchar(2) not null check(userSex='' or userSex='Ů'), + --Ա + userAge int not null check(userAge>=0 and userAge <=100), + --Աַ + userAddress varchar(50) default(''), + --Ա + userSection int references sectionInfo(sectionID) + ); + + drop table userInfo + + select * from userInfo + + INSERT INTO userInfo(userName,userSex,userAge,userAddress,userSection) + VALUES + ('','',17,'',1), + ('','Ů',18,'Ĵ',2), + ('','',20,'',3); + + + --Աڱ + create table workInfo( + --ڱ + workId int primary key identity(1,1), + --Ա + userId int references userInfo(userNo) not null, + --ʱ + workTime datetime not null, + --˵ + workDescription varchar(40) check(workDescription='ٵ' or workDescription='' + or workDescription='' or workDescription='' or workDescription='¼') not null + ); + + select * from workInfo + + INSERT INTO workInfo(userId,workTime,workDescription) + VALUES + (1,2022,'ٵ'), + (2,2022,'¼'), + (3,2022,''); \ No newline at end of file diff --git "a/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\272\214\345\234\272\344\275\234\344\270\232,\347\254\224\350\256\260/2022-9-16.md" "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\272\214\345\234\272\344\275\234\344\270\232,\347\254\224\350\256\260/2022-9-16.md" new file mode 100644 index 0000000000000000000000000000000000000000..c1154345627e663093c17df748e90b6c50981d30 --- /dev/null +++ "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\272\214\345\234\272\344\275\234\344\270\232,\347\254\224\350\256\260/2022-9-16.md" @@ -0,0 +1,190 @@ +# 2022.9.16 + +## 创建数据库 + +```SQL +create database 数据库名 +``` + +## 创建数据表 + +```SQL +create table 表名( +) +``` + +## 查询数据 + +```sql +select * from 表名 +``` + +## 增删改查 + +```SQL +insert into 表名 ({字段1},{字段1},{字段1},....) values (值1,值1,值1,....) +alter table (表名) add (列名) varchar(255) ; +delete from 表名 where 删除条件 +drop table (表名) 删除整个表 +UPDATE 表名 SET 字段1=修改的值1,字段2=修改的值2,.. . .. WHERE 修改的条件 +``` + + + +## 主键,自增,不允许为空,默认值,外键,唯一约束 + +```sql +1.primary key 主键 +2.identity(1,1) 自增 初始ID,自增多少 +3.not null 不允许为空 +4.default('') 默认值 +5.userId(表名) int(字段) references(外键) userInfo(表名)(userNo)列名 外键 +6.unique 唯一约束 +``` + +# 2022.9.17 + +## SQL条件查询 + +```sql +=:等于,比较是否相等及赋值 +!=:比较不等于 +>:比较大于 +<:比较小于 +>=:比较大于等于 +<=:比较小于等于 +IS NULL:比较为空 +IS NOT NULL:比较不为空 +in:比较是否在其中 +like:模糊查询 +BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +and:逻辑与(两个条件同时成立表达式成立) +or:逻辑或(两个条件有一个成立表达式成立) +not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) +``` + +## 模糊查询 + +```sql +%:代表匹配0个字符、1个字符或多个字符。 +_:代表匹配有且只有1个字符。 +[]:代表匹配范围内 +[^]:代表匹配不在范围内 + +模糊查询,包含查询 +select * from 表名 where 列名 like '%要查询的字段%' + +模糊查询,开头查询 +select * from 表名 where 列名 like '要查询的字段%' + +模糊查询,结尾查询 +select * from 表名 where 列名 like '%要查询的字段' +``` + +## 聚合函数 + +```SQL +count:求数量 +max:求最大值 计算某一列的最大值 +min:求最小值 计算某一列的最小值 +sum:求和 计算某一列的合计值,该列必须为数值类型 +avg:求平均值 计算某一列的平均值,该列必须为数值类型 +``` + +## 升序降序查询 + +```SQL +-- desc 降序 默认升序 asc -- +SELECT * FROM 表名 order by 列名 desc +``` + + + +## ROUND函数用法: + +```SQL +round(num,len,[type]) +其中: +num表示需要处理的数字,len表示需要保留的长度,type处理类型(0是默认值代表四舍五入,非0代表直接截取) +select ROUND(123.45454,3) --123.45500 +select ROUND(123.45454,3,1) --123.45400 +``` + +## CONVERT()与CAST()函数: + +```SQL +--1.保留小数 +convert(decimal(13,2),12.45454) +cast(12.45454 as decimal(13,2)) +--2.强制转换类型 +``` + +## 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 +``` + +## 连表查询 + +```SQL +内连接查询 +1.select * from 第一张表名 重命名字段1 +2.inner join 第二张表名 重命名字段2 on 重命名字段1.关联的列=重命名字段2.关联的列 +3.where 要筛选的条件、 + +左连接查询 +1.select * from 第一张表名 重命名字段1 +2.left join 第二张表名 重命名字段2 on 重命名字段1.关联的列=重命名字段2.关联的列 +3.where 要筛选的条件、 + +右连接查询 +1.select * from 第一张表名 重命名字段1 +2.right join 第二张表名 重命名字段2 on 重命名字段1.关联的列=重命名字段2.关联的列 +3.where 要筛选的条件、 +``` + +## **时间格式控制字符串:** + +| 名称 | 日期单位 | 缩写 | +| ------------ | ----------- | --------- | +| 年 | year | yyyy 或yy | +| 季度 | 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 | + +## 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/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\272\214\345\234\272\344\275\234\344\270\232,\347\254\224\350\256\260/SQLQuery2.sql" "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\272\214\345\234\272\344\275\234\344\270\232,\347\254\224\350\256\260/SQLQuery2.sql" new file mode 100644 index 0000000000000000000000000000000000000000..facfccf46b86870d5e1aefb028530322d096eff6 --- /dev/null +++ "b/\351\231\210\345\215\216\344\274\237 12/\347\254\254\344\272\214\345\234\272\344\275\234\344\270\232,\347\254\224\350\256\260/SQLQuery2.sql" @@ -0,0 +1,70 @@ +--ѯ人еԱϢҪʾԼԱϸ +--ѯ人еԱϢҪʾƣְԼԱϸ +--ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʡ +--ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʣƽ10000 µIJͳƣҸƽʽС +--ݲƣȻְλƣͳԱԱܺͣƽʣ߹ʺ͹ +--ѯз 6.22--7.22 ԱϢ +--ѯԱϢһʾ(,ţ,,,,,,,,,,) = + + +select * from Department; +select * from [Rank]; +select * from People; +drop table Department +--ѯз 6.22--7.22 ԱϢ +select * from People where +MONTH(PeopleBirth)=6 and DAY(PeopleBirth)>=22 or MONTH(PeopleBirth)=7 and DAY(PeopleBirth)<=22 +--ѯԱϢһʾ(,ţ,,,,,,,,,,) + 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 People +join Department on People.DepartmentId = Department.DepartmentId +where PeopleAddress ='人'; +--ѯ人еԱϢҪʾƣְԼԱϸ +select * from People +join Department on People.DepartmentId = Department.DepartmentId +join [Rank] on People.RankId = [Rank].RankId +where PeopleAddress ='人'; +--ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʡ +select DepartmentName, COUNT(*) Ա,SUM(PeopleSalary) Աܺ,AVG(PeopleSalary) ƽ ,MAX(PeopleSalary)߹,MIN(PeopleSalary)͹ from People +join Department on People.DepartmentId = Department.DepartmentId +group by DepartmentName; +--ݲŷͳԱԱܺͣƽʣ߹ʺ͹ʣƽ10000 µIJͳƣҸƽʽС +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; +--ݲƣȻְλƣͳԱԱܺͣƽʣ߹ʺ͹ +select DepartmentName,RankName ,[Rank].RankId ְλȼ ,COUNT(*) Ա,SUM(PeopleSalary) Աܺ,AVG(PeopleSalary) ƽ ,MAX(PeopleSalary)߹,MIN(PeopleSalary)͹ from People +join Department on People.DepartmentId = Department.DepartmentId +join [Rank] on People.RankId = [Rank].RankId +group by DepartmentName,RankName,[Rank].RankId +order by [Rank].RankId desc; \ No newline at end of file