diff --git "a/13 \346\264\252\347\201\277\350\212\263/\344\275\234\344\270\232/8.29 day1\344\275\234\344\270\232.md" "b/13 \346\264\252\347\201\277\350\212\263/\344\275\234\344\270\232/8.29 day1\344\275\234\344\270\232.md" deleted file mode 100644 index 53287ad92ea15328101b987271a6c1f2d56a6909..0000000000000000000000000000000000000000 --- "a/13 \346\264\252\347\201\277\350\212\263/\344\275\234\344\270\232/8.29 day1\344\275\234\344\270\232.md" +++ /dev/null @@ -1,54 +0,0 @@ -# 8.29 day1作业 - -```sql -create database DBTEST -go -use DBTEST -go -create table sectionInfo( - sectionID int primary key identity(1,1), - sectionName varchar(10) not null -) -go -create table userinfo( - userNo int primary key identity(1,1), - userName varchar(10) unique not null check(len(userName)>4), - userSex varchar(2) not null check(userSex='男'or userSex='女'), - userAge int not null check(userAge>1 and userAge<=100), - userAddress varchar(50) default('湖北'), - userSection int references sectionInfo(sectionID) -) -go -create table workInfo( - workId int identity(1,1) primary key not null, - userId int references userinfo(userNo) not null, - workTime datetime not null, - workDescription varchar(40) check(workDescription='迟到' or workDescription='早退' or workDescription='旷工'or workDescription='病假' or workDescription='事假') -) -go -insert sectionInfo values - ('营销部'), - ('市场部'), - ('销售部'), - ('开发部'), - ('售后部') -go -insert userinfo values - ('aaaaa','女',20,'江西','1'), - ('bbbbb','女',20,'江西','1'), - ('ccccc','女',20,'江西','1'), - ('ddddd','女',20,'江西','1'), - ('eeeee','女',20,'江西','1') -go -insert workInfo values - (13,'2022/2/2','迟到'), - (14,'2022/2/2','迟到'), - (15,'2022/2/2','迟到'), - (16,'2022/2/2','迟到'), - (17,'2022/2/2','迟到') - -select * from sectionInfo -select * from userinfo -select * from workInfo -``` - diff --git "a/13 \346\264\252\347\201\277\350\212\263/\344\275\234\344\270\232/8.30 day2 \344\275\234\344\270\232.md" "b/13 \346\264\252\347\201\277\350\212\263/\344\275\234\344\270\232/8.30 day2 \344\275\234\344\270\232.md" deleted file mode 100644 index 1883762e8c0515a5510e2023b48278377a629a11..0000000000000000000000000000000000000000 --- "a/13 \346\264\252\347\201\277\350\212\263/\344\275\234\344\270\232/8.30 day2 \344\275\234\344\270\232.md" +++ /dev/null @@ -1,78 +0,0 @@ -# 8.30 day2 作业 - -```sql ---1. 查询所有行所有列 -select * from People ---2. 指定列查询(姓名,性别,月薪,电话) -select PeopleName,PeopleSex,PeopleSalary,PeoplePhone from People ---3. 指定列查询,并自定义中文列名(姓名,性别,月薪,电话) -select PeopleName 姓名,PeopleSex 性别,PeopleSalary 月薪,PeoplePhone 电话 from People ---4. 查询公司员工所在城市(不需要重复数据) -select distinct PeopleAddress from People ---5. 假设工资普调10%,查询原始工资和调整后的工资,显示(姓名,性别,月薪,加薪后的月薪)(添加列查询)。 -select PeopleName,PeopleSex,PeopleSalary,PeopleSalary*1.1 调整后 from People ---1. 根据指定列(姓名,性别,月薪,电话)查询性别为女的员工信息,并自定义中文列名 -select PeopleName,PeopleSex,PeopleSalary,PeoplePhone from People -where PeopleSex='女' ---2. 查询月薪大于等于10000 的员工信息( 单条件 ) -select PeopleName,PeopleSex,PeopleSalary,PeoplePhone from People -where PeopleSalary >10000 ---3. 查询月薪大于等于10000 的女员工信息(多条件) -select PeopleName,PeopleSex,PeopleSalary,PeoplePhone from People -where PeopleSex='女' and PeopleSalary >10000 ---4. 显示出出身年月在1980-1-1之后,而且月薪大于等于10000的女员工信息。 -select * from People -where PeopleSex='女' and PeopleSalary >10000 and PeopleBirth>1980-1-1 ---5. 显示出月薪大于等于15000 的员工,或者月薪大于等于8000的女员工信息。 -select * from People where PeopleSalary >= 15000 or PeopleSalary >8000 and PeopleSex='女' ---6. 查询月薪在10000-20000 之间员工信息( 多条件 ) -select * from people where PeopleSalary >=10000 and PeopleSalary <= 20000 ---7. 查询出地址在北京或者上海的员工信息 -select * from People where PeopleAddress ='北京' or PeopleAddress='上海' ---8. 查询所有员工信息(根据工资排序,降序排列) -select * from People -order by PeopleSalary desc ---9. 显示所有的员工信息,按照名字的长度进行倒序排列 -select * from People -order by len(PeopleName) desc ---10. 查询工资最高的5个人的信息 -select top 5 * from People -order by PeopleSalary desc ---11. 查询工资最高的10%的员工信息 - ---12. 查询出地址没有填写的员工信息 -select * from People where PeopleAddress is null ---13. 查询出地址已经填写的员工信息 -select * from People where PeopleAddress is not null ---14. 查询所有的80后员工信息 -select * from People -where PeopleBirth>1980-1-1 ---15. 查询年龄在30-40 之间,并且工资在15000-30000 之间的员工信息 -select * from people -where (YEAR(GETDATE())-YEAR(PeopleBirth)) between 30 and 40 ---16. 查询出巨蟹 6.22--7.22 的员工信息 -select * from People where (MONTH(PeopleBirth)=6 and day(PeopleBirth)>=22)or (month(PeopleBirth)=7 and day(PeopleBirth)<=22) ---17. 查询工资比赵云高的人 -select * from People where PeopleSalary > (select PeopleSalary from People where PeopleName = '赵云') ---18. 查询出和赵云在同一个城市的人 -select * from People where PeopleAddress = (select PeopleAddress from People where PeopleName = '赵云') ---19. 查询出生肖为鼠的人员信息 -select * from people where (year(PeopleBirth)%12)-3 =1 ---20. 查询所有员工信息,添加一列显示属相(鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪) -select *, - case - when (year(peoplebirth)%12)-3 =1 then '鼠' - when (year(peoplebirth)%12)-3 =2 then '牛' - when (year(peoplebirth)%12)-3 =3 then '虎' - when (year(peoplebirth)%12)-3 =4 then '兔' - when (year(peoplebirth)%12)-3 =5 then '龙' - when (year(peoplebirth)%12)-3 =6 then '蛇' - when (year(peoplebirth)%12)-3 =7 then '马' - when (year(peoplebirth)%12)-3 =8 then '羊' - when (year(peoplebirth)%12)-3 =9 then '猴' - when (year(peoplebirth)%12)-3 =10 then '鸡' - when (year(peoplebirth)%12)-3 =11 then '狗' - when (year(peoplebirth)%12)-3 =12 then '猪' - else '' end 生肖 from People -``` - diff --git "a/33\350\260\267\345\205\206\346\230\216/33\350\260\267\345\205\206\346\230\216.md" "b/33\350\260\267\345\205\206\346\230\216/33\350\260\267\345\205\206\346\230\216.md" deleted file mode 100644 index 178e9eb4ab84223f22d5026fde9121a62ce10b0f..0000000000000000000000000000000000000000 --- "a/33\350\260\267\345\205\206\346\230\216/33\350\260\267\345\205\206\346\230\216.md" +++ /dev/null @@ -1,64 +0,0 @@ -```sql -create database DBTEST -go - -use DBTEST -go - ---*部门信息表* -create table sectionInfo( -sectionID int primary key identity(1,1),--部门编号 -sectionName varchar(10) not null --部门名称 -) - -insert sectionInfo(sectionName) -values('技术部'), - ('卫生部'), - ('财务部'), - ('人事部'), - ('会计部') - - ---*员工信息表* -create table userInfo( -userNo int primary key identity(100,1),--员工编号 -userName varchar(10) unique not null check(len(userName)>4),--员工姓名 -userSex varchar(2) check(userSex='男' or userSex='女') not null,--员工性别 -userAge int check(userAge between 0 and 100) not null , --员工年龄 -userAddress varchar(50) default('湖北') not null, --员工地址 -userSection int foreign key references sectionInfo(sectionID) --员工部门 -) - -insert userInfo(userName,userSex,userAge,userAddress,userSection) -values('张三das','男',20,'河南省',2), - ('李四sda','女',18,'北京',3), - ('王五asd','男',20,'福建省',2), - ('赵六sad','女',30,'河南省',1), - ('田七sad','男',19,'湖南省',2) - ---*员工考勤表* -create table workInfo( -workId int primary key identity(1,1),--考勤编号 -userId int foreign key references userInfo(userNo) not null, --考勤员工 -workTime datetime not null,--考勤时间 -workDescription varchar(40) check(workDescription='迟到' or - workDescription='早退' or - workDescription='矿工' or - workDescription='病假' or - workDescription='事假') not null --考勤说明 - ) - -insert workInfo(userId,workTime,workDescription) -values (106,'2022-08-17 20:00:00','迟到'), - (107,'2022-08-17 20:00:00','迟到'), - (109,'2022-07-17 20:00:00','迟到'), - (108,'2022-04-16 20:00:00','迟到'), - (108,'2022-03-17 20:00:00','迟到') - - -select * from sectionInfo -select * from userInfo -select * from workInfo - -``` - diff --git "a/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\346\225\231\345\255\246\347\256\241\347\220\206\347\263\273\347\273\237.png" "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\346\225\231\345\255\246\347\256\241\347\220\206\347\263\273\347\273\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..a5b742ada3f7a67357fbad1269facc590c004d2b Binary files /dev/null and "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\346\225\231\345\255\246\347\256\241\347\220\206\347\263\273\347\273\237.png" differ diff --git "a/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\346\225\231\345\255\246\347\256\241\347\220\206\347\263\273\347\273\237E-R\345\233\276.png" "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\346\225\231\345\255\246\347\256\241\347\220\206\347\263\273\347\273\237E-R\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..b5d1576495e2d142f706600c34ae8a6163db809e Binary files /dev/null and "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\346\225\231\345\255\246\347\256\241\347\220\206\347\263\273\347\273\237E-R\345\233\276.png" differ diff --git "a/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\351\223\266\350\241\214E-R\345\233\276.png" "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\351\223\266\350\241\214E-R\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..f6698c9871ec4b207f0efdafbec5981ae8ac112f Binary files /dev/null and "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220901-\346\225\260\346\215\256\345\272\223e-r\350\256\276\350\256\241/\351\223\266\350\241\214E-R\345\233\276.png" differ diff --git "a/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220905-\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\270\216\345\261\200\351\203\250\345\217\230\351\207\217/\345\205\254\345\217\270\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.sql" "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220905-\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\270\216\345\261\200\351\203\250\345\217\230\351\207\217/\345\205\254\345\217\270\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.sql" new file mode 100644 index 0000000000000000000000000000000000000000..8df61df777021a875cd679948a1dd319ca359778 --- /dev/null +++ "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220905-\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\270\216\345\261\200\351\203\250\345\217\230\351\207\217/\345\205\254\345\217\270\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.sql" @@ -0,0 +1,73 @@ +create database company +go +use company +go + +--̱ +create table project( + Pno varchar(20) primary key, + Pname varchar(20), +) +go + +insert project +values ('A1','԰'), + ('A2',''), + ('A3','ٽ') + +--ְ +create table functin( + Fno int primary key identity(1,1), + Fname varchar(20), + Ftime int +) +go + +insert functin +values ('ʦ',65), + ('Ա',60), + ('',55) + + +--ְ +create table staff( + Sno int primary key, + Sname varchar(20), + fno int +) +go + +insert staff +values (1001,'',1), + (1002,'˼',2), + (1003,'',3), + (1004,'',2) +go + +--ʱ +create table manhour( + Mno int primary key identity(1,1), + Pno varchar(20) references Project(pno) , + Sno int references staff(sno), + Mtime int +) +go +insert manhour +values ('A1',1001,13), + ('A1',1002,16), + ('A2',1001,15), + ('A2',1003,17), + ('A3',1002,18), + ('A3',1004,14) +go + +-------- +select * from Project +select * from functin +select * from staff +select * from manhour + +select p.pno,p.pname,s.sno,s.sname,fname,ftime,mtime from manhour m +left join Project p on m.pno=p.pno +left join staff s on s.sno=m.sno +join functin f on s.fno=f.fno \ No newline at end of file diff --git "a/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220905-\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\270\216\345\261\200\351\203\250\345\217\230\351\207\217/\345\261\200\351\203\250\345\217\230\351\207\217.sql" "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220905-\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\270\216\345\261\200\351\203\250\345\217\230\351\207\217/\345\261\200\351\203\250\345\217\230\351\207\217.sql" new file mode 100644 index 0000000000000000000000000000000000000000..23f3dd3bd60f8d1cbac655a1770d476b2f339029 --- /dev/null +++ "b/\347\224\260\351\221\253\345\274\272/\344\275\234\344\270\232/20220905-\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241\344\270\216\345\261\200\351\203\250\345\217\230\351\207\217/\345\261\200\351\203\250\345\217\230\351\207\217.sql" @@ -0,0 +1,48 @@ +create database studenttest +go +use studenttest +go + +create table StuInfo( + StuNo varchar(20) primary key , + StuName varchar(50), + StuSex varchar(2), + StuAge int, + StuSeat int +); +go + +insert into StuInfo values('S2001','','',100,1); +insert into StuInfo values('S2002','Ŵɽ','',25,2); +insert into StuInfo values('S2003','޼','',12,3); + + +create table StuScore( + StuID varchar(20) primary key, + StuSex varchar(2), + Chinese int, + English int, + Math int +); +go + +insert into StuScore values('S2001','',75,80,90); +insert into StuScore values('S2002','',76,56,54); +insert into StuScore values('S2003','Ů',90,92,70); +insert into StuScore values('S2004','Ů',70,72,80); + + +select * from StuInfo; +select * from StuScore; + +-- ϰҪλҳ޼ɵǰͬѧ +declare @sno int +select @sno=(select StuSeat from StuInfo where StuName='޼') +print @sno +select * from StuInfo where (StuSeat= @sno+1 or StuSeat= @sno-1) + +-- ϰѯѧϢ +declare @age int +select @age=(select max (StuAge) from StuInfo ) +print @age +select * from StuInfo where (StuAge= @age) \ No newline at end of file diff --git "a/\347\224\260\351\221\253\345\274\272/\347\254\224\350\256\260/SQL server.md" "b/\347\224\260\351\221\253\345\274\272/\347\254\224\350\256\260/SQL server.md" new file mode 100644 index 0000000000000000000000000000000000000000..a8ccb2db7d7a150bc47f39509bc3ad664a82cfc9 --- /dev/null +++ "b/\347\224\260\351\221\253\345\274\272/\347\254\224\350\256\260/SQL server.md" @@ -0,0 +1,248 @@ +# SQL server + +## 一 + +### 数据库操作 + +1. 查询所有数据库 + + ```sql + show databases + ``` + +2. 查询当前数据库 + + ```sql + show database() + ``` + +3. 创建数据库 + + ```sql + 如果该表不存在则创建 + create database[if not exists] 数据库名 [default charset 字符集] [collat 排序规则] + ``` + +4. 删除数据库 + + ```sql + 如果存在则删除 + drop database [if exists] 数据库名 + ``` + +5. 使用数据库 + + ```sql + use 数据库名 + ``` + +### 表操作 + + + +#### 创建 + +```sql +create table [表名]( + 字段1 字段类型 [comment 字段一注释] + ... +)[comment 表注释] +``` + +#### 修改 + +1. 修改表结构 + + ```sql + alter table 表名 add增/ drop删/ alter改 字段名 + 1. 增加一列 + alter table [表名] add 字段 数据类型 [约束] + go + 2. 删除一列 + alter table [表名] drop column 字段; + go + 3. 修改一列 + alter table [表名] alter column 字段 数据类型 [约束] + go + + ``` + +###数据类型 + +整型 +浮点:decimal(5,2):保留5位有效数字,小数点后2位 +字符串:char(固定长度)varchar(可变长度), nvarchar(可变长度,使用中文仍然只占用一个字节) +时间:datetime +文本类型:text,ntext,nvarchar(max) + +自增(标识列中的标识规范) +非空 + +### 约束 + +--约束 +--主键: primary key (唯一标识列) +--唯一: unique(),前台判断:有没有重复数据 +--默认: default +--check: 检查 +--外键: references 表名(字段) + +###查询 + +1. 查询当前所有表 + + ```sql + show tables + ``` + +2. 查询表结构 + + ```sql + desc 表名 + ``` + +3. 查询指定表的建表语句 + + ```sql + show create table 表名 + ``` + +4. .SQL中常用运算符 + + ```sql + =:等于,比较是否相等及赋值 + !=:比较不等于 + >:比较大于 + <:比较小于 + >=:比较大于等于 + <=:比较小于等于 + IS NULL:比较为空 + IS NOT NULL:比较不为空 + in:比较是否在其中 + like:模糊查询 + BETWEEN...AND...:比较是否在两者之间 50-100 BETWEEN 50 AND 100 + and:逻辑与(两个条件同时成立表达式成立) + or:逻辑或(两个条件有一个成立表达式成立) + not:逻辑非(条件成立,表达式则不成立;条件不成立,表达式则成立) + ``` + +5. 模糊查询 + + ```sql + %:代表匹配0个字符、1个字符或多个字符。 + _:代表匹配有且只有1个字符。 + []:代表匹配范围内 + [^]:代表匹配不在范围内 + ``` + +6. 聚合函数 + + ```sql + count:求数量 + max:求最大值 + min:求最小值 + sum:求和 + avg:求平均值 + ``` + +7. 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 + ``` + +8. 常用的时间函数 + + ```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 + ``` + +9. **时间格式控制字符串:** + + | 名称 | 日期单位 | 缩写 | + | ------------ | ----------- | --------- | + | 年 | 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 | + +10. 分组查询 group by + +11. 连接查询 + + ```sql + 内连接(自连接) select +表1.列1 from 表1 inner join 表2 on 表1.列=表2.列 ..... (where+条件;group by+字段;having+条件;order by+字段) + 左连接 select +表1.列1 from 表1 left join 表2 on 表1.列=表2.列 left join 表3 on 表2.列=表3.列 ..... + 右连接 select +表1.列1 from 表1 right join 表2 on 表1.列=表2.列 right join 表3 on 表2.列=表3.列 ..... + ``` + + + +12. 并集查询 + + ```sql + 交集查询(用于两个select查询之间) select..... intersect(将两个结果集中相同的记录取出来成为一个新的结果集) select..... + 减集查询(用于两个select查询之间) select.... except(比较两个结果集,将except关键字前的结果集除去交集部分而组成的新的集合) select.... + ``` + + + + +## 二 sql server进阶 + +### 1 三范式 + +####1.1第一范式:列不能再分。 + +1.每一列属性都是不可再分的属性值,确保每一列的[原子性](https://gitee.com/link?target=https%3A%2F%2Fso.csdn.net%2Fso%2Fsearch%3Fq%3D%E5%8E%9F%E5%AD%90%E6%80%A7%26spm%3D1001.2101.3001.7020) + +2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据 + +####1.2.第二范式(2NF)(字段)属性完全依赖于主键 + +第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键 + +####1.3第三范式(3NF)(字段)属性不依赖于其它非主属性 属性直接依赖于主键 + +数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c 属性之间含有这样的关系,是不符合第三范式的。 + +### 2E-R图设计 + +####2.1E-R图3个要素:实体,属性,关系 + +实体:用矩形表示,矩形框内写明实体名。 + +属性:用椭圆形表示,椭圆内写明属性名称,并用连线与实体连接起来。如果属性较多,为使图形更加简明,有时也将实体与其相应的属性另外单独用列表表示。 + +联系:用菱形表示,菱形框内写明联系名,并用连线分别与有关实体连接起来,同时在连线旁标上联系的类型。 + +连线:实体和属性之间、实体与联系之间、联系与属性之间用直线连接,并在直线上标注联系的类型。(注意:对于1:1的联系,要在两个实体连线方向各写1,1:n关系的,要在一的方向写1,多的方向写N;对于N:M关系的,则要在两个实体连线方向各写N,M) + + + + + diff --git "a/\347\224\260\351\221\253\345\274\272/\347\254\224\350\256\260/\346\225\260\346\215\256\345\272\223\350\277\233\351\230\266.md" "b/\347\224\260\351\221\253\345\274\272/\347\254\224\350\256\260/\346\225\260\346\215\256\345\272\223\350\277\233\351\230\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..28fab1a61d56bbd9a9dd902f63f88ecd46ca92f6 --- /dev/null +++ "b/\347\224\260\351\221\253\345\274\272/\347\254\224\350\256\260/\346\225\260\346\215\256\345\272\223\350\277\233\351\230\266.md" @@ -0,0 +1,91 @@ +#一 数据库设计 + +### 1 三范式 + +####1.1第一范式:列不能再分。 + +1.每一列属性都是不可再分的属性值,确保每一列的[原子性](https://gitee.com/link?target=https%3A%2F%2Fso.csdn.net%2Fso%2Fsearch%3Fq%3D%E5%8E%9F%E5%AD%90%E6%80%A7%26spm%3D1001.2101.3001.7020) + +2.两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据 + +####1.2.第二范式(2NF)(字段)属性完全依赖于主键 + +第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键 + +####1.3第三范式(3NF)(字段)属性不依赖于其它非主属性 属性直接依赖于主键 + +数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c 属性之间含有这样的关系,是不符合第三范式的。 + +### 2E-R图设计 + +####2.1E-R图3个要素:实体,属性,关系 + +实体:用矩形表示,矩形框内写明实体名。 + +属性:用椭圆形表示,椭圆内写明属性名称,并用连线与实体连接起来。如果属性较多,为使图形更加简明,有时也将实体与其相应的属性另外单独用列表表示。 + +联系:用菱形表示,菱形框内写明联系名,并用连线分别与有关实体连接起来,同时在连线旁标上联系的类型。 + +连线:实体和属性之间、实体与联系之间、联系与属性之间用直线连接,并在直线上标注联系的类型。(注意:对于1:1的联系,要在两个实体连线方向各写1,1:n关系的,要在一的方向写1,多的方向写N;对于N:M关系的,则要在两个实体连线方向各写N,M) + +# 二.变量 + +## 一.全局变量 + +全局变量必须以标记**@@**作为前缀,如@@versionا + +全局变量由系统定义和维护,我们**只能读取,不能修改全局变量的值** + +##二局部变量(重点) + +局部变量必须以标记 **@** 作为前缀,如**@age** + +局部变量的使用如同Java、c#等,也是 **先声明,再赋值** + +1 声明变量 + +```sql +declare @变量名 数据类型 +如: +declare @aa int +declare @sd varchar(20) +``` + +2 赋值 + +2.1方法一 + +```sql +set @变量名 = 值 +``` + +注意:(1)不支持同时对多变量进行赋值 + +​ (2)若表达式返回多值,则报错 + +​ (3)若表达式未返回值,则为NULL + +2.2方法二 + +```sql +select @变量名 = 值 +``` + +注意:(1)支持同时对多变量进行赋值 + +​ (2)若表达式返回多值,则返回最后一个值 + +​ (3)若表达式未返回值,则保持原值 + +3 输出 + + 3.1 print :以文本形式输出 + +```sql +例子; +print '服务器的名称为:'+@@servername +``` + + + +3. 2 select :以结果集形式输出 \ No newline at end of file