From bdcacdf045904e950a44835c2052ac8175d70b73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=B0=8F=E6=9D=B0?= <2365584215@qq.com> Date: Wed, 7 Sep 2022 21:33:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...56\345\272\223\345\244\215\344\271\240.md" | 157 ++++++++++++++++++ ...13\344\270\216\350\214\203\345\274\217.md" | 35 ++++ .../2022.9.5--\345\217\230\351\207\217.md" | 75 +++++++++ ...73\350\276\221\346\216\247\345\210\266.md" | 61 +++++++ ...--\345\255\220\346\237\245\350\257\242.md" | 42 +++++ 5 files changed, 370 insertions(+) create mode 100644 "\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" create mode 100644 "\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" create mode 100644 "\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" create mode 100644 "\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" create mode 100644 "\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" diff --git "a/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" "b/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" new file mode 100644 index 0000000..f38172a --- /dev/null +++ "b/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" @@ -0,0 +1,157 @@ +### **SQL约束** + +NOT NULL约束 - 确保列不能具有NULL值。 + +默认值约束 - 在未指定列时为列提供默认值。 + +唯一约束 - 确保列中的所有值都不同。 + +主键 - 唯一标识数据库表中的每一行/记录。 + +外键 - 唯一标识任何其他数据库表中的行/记录。 + +检查约束 - CHECK约束确保列中的所有值都满足特定条件。 + +索引 - 用于非常快速地从数据库创建和检索数据。 + +## DROP TABLE + +`DROP TABLE语句永久删除表的数据和结构,某些数据库系统要求表中的记录必须为空时才能从数据库中删除。 这有助于防止意外删除仍在使用的表。` + +`要删除表中的所有数据,可以使用DELETE或TRUNCATE TABLE语句。` + +`要删除由另一个表的外键约束引用的表,必须在删除表之前禁用或删除外部约束` + +## TURNCATE TABLE + +**使用SQL `TRUNCATE TABLE`语句高效,快速地删除表中的所有数据** + +**SQL中常用运算符** + +```sql +=:等于,比较是否相等及赋值 +!=:比较不等于 +>:比较大于 +<:比较小于 +>=:比较大于等于 +<=:比较小于等于 +IS NULL:比较为空 +IS NOT NULL:比较不为空 +in:比较是否在其中 +like:模糊查询 +BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +and:逻辑与(两个条件同时成立表达式成立) +or:逻辑或(两个条件有一个成立表达式成立) +not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) +``` + + + +#### 模糊查询 + +模糊查询使用like关键字和通配符结合来实现,通配符具体含义如下: + +```sql +%:代表匹配0个字符、1个字符或多个字符。 +_:代表匹配有且只有1个字符。 +[]:代表匹配范围内 +[^]:代表匹配不在范围内 +``` + + + +#### 聚合函数 + +SQL SERVER中聚合函数主要有: + +```sql +count:求数量 +max:求最大值 +min:求最小值 +sum:求和 +avg:求平均值 +``` + + + +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 +``` + + + +#### 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 或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 | + +## ORDER BY排序 + +```sql +SELECT + column1, column2 +FROM + table_name +ORDER BY column1 ASC , + column2 DESC; + +``` + +在此语法中,`ORDER BY`子句放在`FROM`子句之后。 如果`SELECT`语句包含`WHERE`子句,则`ORDER BY`子句必须放在WHERE子句之后。 + +要对结果集进行排序,请指定要排序的列以及排序顺序的类型: + +- 升序(使用:`ASC`表示) +- 降序(使用:`DESC`表示) + + + +#### INNER JOIN + +**[内连接子句](https://blog.csdn.net/Pythboy/article/details/www.yiibai.com/sql/sql-left-join.html)消除了与另一个表的行不匹配的行。** + +```sql +SELECT + A.n +FROM A +INNER JOIN B ON B.n = A.n + +INNER JOIN子句可以连接三个或更多表,只要它们具有关系,通常是外键关系 +``` + diff --git "a/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" "b/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" new file mode 100644 index 0000000..c64f9e0 --- /dev/null +++ "b/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" @@ -0,0 +1,35 @@ +### 一,E-r模型 + +#### E-R模型是通过E-R图表示的数据模型 + +#### 分类; + +- 矩形框;表示实体类型(考虑问题的对象) +- 菱形框;表示联系类型(实体间的联系) +- 椭圆形框;表示实体类型和联系类型的属性 +- 直线;联系类型与其涉及的实体类型之间以直线连接,并在直线端部标上联系的种类 + +#### 数据表之间的关联关系 + +1.**一对一关系** 可以与任意一端对应的关系模式合并,在任意一方加入对方的主键(主码)变为其外键(外码),并加入联系本身的属性。 + +2.**一对多关系** 可以与n端对应的关系模式合并,将1方的主键加入n方作为其外键,并将联系的属性也加入n方 + +3.**多对多关系** + +(新建一张关系表),将联系双方的主键(主码)加入其中,并将联系的属性也加入其中。 + + + +#### 关系模式的规范化(范式) + +(1)第一范式(无重复的列) +定义:数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。 +如果实体中的某个属性有多个值时,必须拆分为不同的属性 + +(2)第二范式(属性完全依赖于主键) +定义:满足第一范式前提,当存在多个主键的时候,才会发生不符合第二范式的情况。 +比如有两个主键,不能存在这样的属性,它只依赖于其中一个主键,这就是不符合第二范式\* + +(3)第三范式(属性不能传递依赖于主属性) +定义:满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。 \ No newline at end of file diff --git "a/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" "b/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" new file mode 100644 index 0000000..b75cdc8 --- /dev/null +++ "b/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" @@ -0,0 +1,75 @@ +### 变量 + +#### 局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + +```sql +--例: + select @id = 1001 + set @name = '周飘' +``` + +set与select赋值的区别: + +set赋值给变量指定的值,select一般用于表中查询出的数据赋值给变量,如果查询结果有多条,取最后一条赋值给变量 + +#### 全局变量 + +全局变量必须以标记@@作为前缀,如@@version +全局变量由**系统定义和维护**,我们**只能读取,不能修改全局变量的值** +全局变量在整个SQL环境下都可以被访问或调用 + +```sql +--@@ERROR:返回执行的上一个语句的错误号 +--@@IDENTITY:返回最后插入的标识值 +--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数 +--@@ROWCOUNT:返回受上一语句影响的行数 +--@@SERVERNAME:返回运行 SQL Server 的本地服务器的名称 +--@@SERVICENAME:返回 SQL Server 正在其下运行的注册表项的名称 +--@@TRANCOUNT:返回当前连接的活动事务数 +--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒) +``` + +## 输出语句 + +1. print变量或表达式 +2. select变量或表达式 + +```sql +--例: + print '数据库服务器名:' + @@servicename + select 15*8 +``` + + + +#### 使用convert函数 + +​ 由于PRINT 命令向客户端返回一个结果的字符串的信息。如果变量值不是字符串的话必须先用数据类型转换函数 CONVERT 将其转换为字符串。 + +```sql +--显示自动编号 +print '当前自动编号的值:' + convert(varchar(10),@@IDENTITY) +``` + +## \ No newline at end of file diff --git "a/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" "b/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" new file mode 100644 index 0000000..fcdd420 --- /dev/null +++ "b/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" @@ -0,0 +1,61 @@ +## 逻辑控制语句 + +在c语言中,逻辑控制语句是if-else,switch,for,while,在sql编程中,也大相径庭,这里的逻辑控制语句分别是:if-else,while,case-end语句 + +### if-else语句 + +语法格式为: + +```sql +if(条件) + begin + 语句1 + 语句2 + end +else + begin + 语句1 + 语句2 + end +``` + +注意:begin…end相当于c语言中的大括号,有多条语句才使用begin…end,相当于begin…end之间的语句就是一个语句块 + + + +### while循环语句 + +语法格式为: + +注意:break是表示结束循环,与c语言中的辅助控制语句break,continue类似 + + + +### case end 多分支语句 + +​ 练习:将StuScore成绩表中的学生成绩用五分制显示。 +​ 5分:80分以上 +​ 4分:60~79分 +​ 3分:40~59分 +​ 2分:20~39分 +​ 1分:0~19分**** + +```sql +select english , +case + when english>=80 then '5分' +when english>=60 then '4分' +when english>=40 then '3分' +when english>=20 then '2分' +when english>=0 then '1分' +else '0分' + end '5分制' + from StuScore +``` + +**备注** + +(1)特殊字符:制表符 CHAR(9);换行符 CHAR(10);回车 CHAR(13); + +(2)循环中若出现break和CONTINUE,作用与Java,C#等语言一致。 + diff --git "a/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" "b/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" new file mode 100644 index 0000000..d281a7b --- /dev/null +++ "b/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" @@ -0,0 +1,42 @@ +### **子查询** + +子查询是指嵌套在其他语句(SELECT、INSERT、UPDATE、DELETE 等)中的 SELECT 语句;子查询也称为内查询或者嵌套查询;子查询必须位于括号之中。 + +SQL 中的子查询可以分为以下三种类型: + +标量子查询:返回单个值(一行一列)的子查询。上面的示例就是一个标量子查询。 + +行子查询*:返回单行结果(一行多列)的子查询,标量子查询是行子查询的一个特例。 + +**表子查询**:返回一个虚拟表(多行多列)的子查询,行子查询是表子查询的一个特例。 + +### ALL、Any、Some的区别 + +All:只有当其所有数据都满足条件时,条件才成立 + +```sql +SELECT Num FROM Test2 +WHERE Num > ALL (SELECT Num FROM Test1) +``` + +Any:只要有一条数据满足条件,条件就成立 + + 注:any和in可以相互转换 + +```sql +SELECT Num FROM Test2 +WHERE Num = ANY (SELECT Num FROM Test1) + +SELECT Num FROM Test2 +WHERE Num IN (SELECT Num FROM Test1) +``` + + Some:其中存在一些数据满足条件,作用和Any大致相同 常规的使用中看作一致即可 + +```sql +SELECT Num FROM Test2 +WHERE Num > ANY (SELECT Num FROM Test1) + +SELECT Num FROM Test2 +WHERE Num > SOME (SELECT Num FROM Test1) +``` \ No newline at end of file -- Gitee From 523f24ca066dd8e514008afd44ef884a40bae76b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=B0=8F=E6=9D=B0?= <2365584215@qq.com> Date: Wed, 7 Sep 2022 21:38:35 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=AC=94=E8=AE=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...46\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" | 0 ...46\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" | 0 .../2022.9.5--\345\217\230\351\207\217.md" | 0 ...2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" | 0 .../2022.9.7--\345\255\220\346\237\245\350\257\242.md" | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename "\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" => "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" (100%) rename "\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" => "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" (100%) rename "\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" => "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" (100%) rename "\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" => "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" (100%) rename "\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" => "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" (100%) diff --git "a/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" similarity index 100% rename from "\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" rename to "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.8.31--\346\225\260\346\215\256\345\272\223\345\244\215\344\271\240.md" diff --git "a/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" similarity index 100% rename from "\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" rename to "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.1--\346\250\241\345\236\213\344\270\216\350\214\203\345\274\217.md" diff --git "a/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" similarity index 100% rename from "\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" rename to "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.5--\345\217\230\351\207\217.md" diff --git "a/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" similarity index 100% rename from "\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" rename to "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.6--\351\200\273\350\276\221\346\216\247\345\210\266.md" diff --git "a/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" "b/39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" similarity index 100% rename from "\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" rename to "39\345\217\266\345\260\217\346\235\260/\347\254\224\350\256\260/2022.9.7--\345\255\220\346\237\245\350\257\242.md" -- Gitee