diff --git "a/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9-1\347\254\254\344\270\200\351\242\230er\345\233\276.png" "b/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9-1\347\254\254\344\270\200\351\242\230er\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..7fd044c8365aa0c5fd21361f0e4f4bcc7ee4d4a1 Binary files /dev/null and "b/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9-1\347\254\254\344\270\200\351\242\230er\345\233\276.png" differ diff --git "a/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9-1\347\254\254\344\272\214\351\242\230er\345\233\276.png" "b/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9-1\347\254\254\344\272\214\351\242\230er\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..dfc46478ea22d4e7764b1e78288fa5905dc46f89 Binary files /dev/null and "b/09\351\231\210\347\203\275\346\235\260/\344\275\234\344\270\232/9-1\347\254\254\344\272\214\351\242\230er\345\233\276.png" differ diff --git "a/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/1.md" "b/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/1.md" new file mode 100644 index 0000000000000000000000000000000000000000..50f20c071c901331013304a4b449b6d1af283f1c --- /dev/null +++ "b/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/1.md" @@ -0,0 +1,97 @@ +#### 条件查询 + +**SQL中常用运算符** + +=:等于,比较是否相等及赋值 +!=:比较不等于 + +>:比较大于 +><:比较小于 +>=:比较大于等于 +><=:比较小于等于 +>IS NULL:比较为空 +>IS NOT NULL:比较不为空 +>in:比较是否在其中 +>like:模糊查询 +>BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +>and:逻辑与(两个条件同时成立表达式成立) +>or:逻辑或(两个条件有一个成立表达式成立) +>not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) + +#### 模糊查询 + +模糊查询使用like关键字和通配符结合来实现,通配符具体含义如下: + +%:代表匹配0个字符、1个字符或多个字符。 +_:代表匹配有且只有1个字符。 +[]:代表匹配范围内 +[^]:代表匹配不在范围内 + +**SQL中常用运算符** + +=:等于,比较是否相等及赋值 +!=:比较不等于 + +>:比较大于 +><:比较小于 +>=:比较大于等于 +><=:比较小于等于 +>IS NULL:比较为空 +>IS NOT NULL:比较不为空 +>in:比较是否在其中 +>like:模糊查询 +>BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +>and:逻辑与(两个条件同时成立表达式成立) +>or:逻辑或(两个条件有一个成立表达式成立) +>not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) + +**SQL SERVER中聚合函数主要有:** + +count:求数量 +max:求最大值 +min:求最小值 +sum:求和 +avg:求平均值 + + + +**ROUND函数用法:** + +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中常用的时间函数 + +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 | diff --git "a/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/9-1.md" "b/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/9-1.md" new file mode 100644 index 0000000000000000000000000000000000000000..2b99c43364fac120521c574bcbe086b217cd5f1d --- /dev/null +++ "b/09\351\231\210\347\203\275\346\235\260/\347\254\224\350\256\260/9-1.md" @@ -0,0 +1,77 @@ +## 三)数据库设计 三大范式 + +### 1.了解规范和不规范设计 + +**不规范的表设计** + +> - 信息重复 +> - 更新异常 +> - 插入异常:无法正确表示信息 +> - 删除异常:丢失有效信息 + +------ + +**规范的表设计** + +> - 尽可能少的数据冗余 +> - 没有插入异常 +> - 没有删除异常 +> - 没有更新异常 + +### 2.第一范式(1NF) + +==关系中的每个属性必须是不可再分的简单项==,不能是属性组合,即属性的取值必须是不可拆分的原子值 + +比如一个地址列,中国北京市 拆成 中国 北京 + +(根据情况而定) + +------ + +### 3.第二范式(2NF) + +==表必须符合第一范式 ,表中的每列必须依赖主键== + +就是要求每个表只描述一件事情 + +比如: + +| 学号 | 姓名 | 课程号 | 课程名称 | 成绩 | +| ---- | ---- | ------ | --------- | ---- | +| s001 | 张三 | k001 | java | 60 | +| s002 | 李四 | k001 | sqlserver | 75 | +| s001 | 张三 | k002 | java | 95 | + +因为没有合适的主键会用联合主键学号和课程号,会出现部分依赖,成绩依赖于课程,课程依赖于课程号,姓名依赖于学号 + +要消除部分依赖,即把字段拆开形成新的表:学生表 课程表 成绩表 + +------ + +### 4.第三范式(3NF) + +**确保每列都和主键列直接相关,而不是间接相关** + +定义: + +==如果一个关系满足2NF,并且除了主键外的其他列既不部份依赖也不传递依赖于主键列,则满足第三范式== + +C依赖B依赖A就叫做**传递依赖** + +------ + +==规范过程即拆分过程:把表分的非常细,一旦出现多对一就会有主外键关系,N->1== + +| | | | +| ---- | ---- | ---- | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | | +| | | |