From a901e05f6676dca4b5f19218c3a25d52ed48385a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9C=E5=91=A8=E6=B3=BD=E5=BC=BA=E2=80=9D?= <“2944697776@qq.com”> Date: Sun, 4 Sep 2022 16:13:36 +0800 Subject: [PATCH] 0 --- "SQL\347\254\224\350\256\260/1.md" | 40 ++++++++++++++++ "SQL\347\254\224\350\256\260/2.md" | 77 ++++++++++++++++++++++++++++++ "SQL\347\254\224\350\256\260/3.md" | 54 +++++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 "SQL\347\254\224\350\256\260/1.md" create mode 100644 "SQL\347\254\224\350\256\260/2.md" create mode 100644 "SQL\347\254\224\350\256\260/3.md" diff --git "a/SQL\347\254\224\350\256\260/1.md" "b/SQL\347\254\224\350\256\260/1.md" new file mode 100644 index 0000000..b77fd16 --- /dev/null +++ "b/SQL\347\254\224\350\256\260/1.md" @@ -0,0 +1,40 @@ +创建数据库 +create database 数据库名 + +使用数据库 +use 数据库名 + +创建表 +create table 表名 + +增加一列 + +alter table 表名 add 列名 char(11) unique + + 删除一列 +alter table 表名 drop column 列名; + +修改列 +alter table 表名 alter column 列名 varchar(11); + +插入数据 + +insert into 表名 values ('内容') + +数据类型 +--整型 +--浮点:decimal(5,2):保留5位有效数字,小数点后2位 +--字符串:char(固定长度)varchar(可变长度), nvarchar(可变长度,使用中文仍然只占用一个字节) +--时间:datetime +--文本类型:text,ntext,nvarchar(max) + +--自增(标识列中的标识规范) identity(1,1) +--非空 not null + +--约束 +--主键: primary key (唯一标识列) +--唯一: unique(),前台判断:有没有重复数据 +--默认: default +--check: 检查 +--外键: foreign key references + diff --git "a/SQL\347\254\224\350\256\260/2.md" "b/SQL\347\254\224\350\256\260/2.md" new file mode 100644 index 0000000..9b2f73e --- /dev/null +++ "b/SQL\347\254\224\350\256\260/2.md" @@ -0,0 +1,77 @@ +#### 模糊查询 + +模糊查询使用like关键字和通配符结合来实现,通配符具体含义如下: + +%:代表匹配0个字符、1个字符或多个字符。 +_:代表匹配有且只有1个字符。 +[]:代表匹配范围内 +[^]:代表匹配不在范围内 + +#### 聚合函数 + +SQL SERVER中聚合函数主要有: + +```sql +count:求数量 +max:求最大值 +min:求最小值 +sum:求和 +avg:求平均值 +``` + +**SQL中常用运算符** + +```sql +=:等于,比较是否相等及赋值 +!=:比较不等于 +>:比较大于 +<:比较小于 +>=:比较大于等于 +<=:比较小于等于 +IS NULL:比较为空 +IS NOT NULL:比较不为空 +in:比较是否在其中 +like:模糊查询 +BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 +and:逻辑与(两个条件同时成立表达式成立) +or:逻辑或(两个条件有一个成立表达式成立) +not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) +``` + +#### 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 | + diff --git "a/SQL\347\254\224\350\256\260/3.md" "b/SQL\347\254\224\350\256\260/3.md" new file mode 100644 index 0000000..0d9abf9 --- /dev/null +++ "b/SQL\347\254\224\350\256\260/3.md" @@ -0,0 +1,54 @@ +#### 实体对应关系 + +对应关系也叫影射基数,他指多个实体之间的数量比例关系。 + + + +1个学生 只在一个班级 + +1个班级有多个学生 + +![image-20220831183302254](E:\SQL复习\01-数据库设计\image-20220831183302254.png) + +#### E-R图转换为关系模型 + +- 1对1: + - 可以转换为一个独立的关系模式 + - 可以与任意一端对应的关系模式合并,***在任意一方加入对方的主键*(主码)变为其外键(外码),并加入联系本身的属性**。 +- 1对n,n对1: + - 可以转换为一个独立的关系模式 + - 可以与n端对应的关系模式合并**,将1方的主键加入n方作为其外键**,**并将联系的属性也加入n方** +- m对n: + - 可以转换为一个独立的关系模式(新建一张关系表)**,将联系双方的主键(主码)加入其中,并将联系的属性也加入其中。** + +### **数据规范化** + +仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构。 + +Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是: + +- 第一范式(1st NF -First Normal Fromate) +- 第二范式(2nd NF-Second Normal Fromate) +- 第三范式(3rd NF- Third Normal Fromate) + +#### 第一范式 (1st NF) + +- 第一范式的目标是**确保每列的原子性** + +- 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF) + +- #### 第二范式 (2nd NF) + + 如果一个关系满足第一范式,并且除了主键以外的其他列都依赖于该主键,则满足第二范式(2NF) + +#### 第三范式 (3rd NF) + +如果一个关系满足第二范式,并且除了主键以外的其他列都依赖,且直接于主键列,则满足第三范式(3NF) + +订单表(n):订单编号,订购日期,顾客编号 + +顾客表(1):顾客编号,顾客姓名 + +1-->1 + +1--n \ No newline at end of file -- Gitee