diff --git "a/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\345\261\217\345\271\225\346\210\252\345\233\276 2022-09-04 211051.png" "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\345\261\217\345\271\225\346\210\252\345\233\276 2022-09-04 211051.png" new file mode 100644 index 0000000000000000000000000000000000000000..fb0f7f4165182b0521e678ac63e23629422850fc Binary files /dev/null and "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\345\261\217\345\271\225\346\210\252\345\233\276 2022-09-04 211051.png" differ diff --git "a/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\345\261\217\345\271\225\346\210\252\345\233\276 2022-09-04 211223.png" "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\345\261\217\345\271\225\346\210\252\345\233\276 2022-09-04 211223.png" new file mode 100644 index 0000000000000000000000000000000000000000..9e2397cd1b2baf8325bfa0e85a0f205a4429b8d8 Binary files /dev/null and "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\345\261\217\345\271\225\346\210\252\345\233\276 2022-09-04 211223.png" differ diff --git "a/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\346\250\241\346\213\237\351\223\266\350\241\214.md" "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\346\250\241\346\213\237\351\223\266\350\241\214.md" new file mode 100644 index 0000000000000000000000000000000000000000..b4c273b6c61bbda58bfd340963c4c2180504d1fc --- /dev/null +++ "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-4/\346\250\241\346\213\237\351\223\266\350\241\214.md" @@ -0,0 +1,27 @@ +```sql +create table AccountInfo( +Account int primary key, +Name varchar(20), +Phone varchar(11),int foreign key references BankCard(CardNO), +Birth varchar(20) +) +create table BankCard( +Account int foreign key references AccountInfo(Account), +CardNo int primary key, +Cardpassword varchar(20) +) +create table deal( +Account int foreign key references AccountInfo(Account), +DealInfo varchar(50) +) +create table [Transfer] ( +Account int foreign key references AccountInfo(Account), +CardNo int foreign key references BankCard(CardNO), +TransferInfo varchar(50) +) +create table StatusMessages( +CardNo int foreign key references BankCard(CardNO), +CarState varchar(10) +) +``` + diff --git "a/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-5/\344\275\234\344\270\2322022-09-05.md" "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-5/\344\275\234\344\270\2322022-09-05.md" new file mode 100644 index 0000000000000000000000000000000000000000..d18439193978456be3ea1e38078bcb1224649de9 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-5/\344\275\234\344\270\2322022-09-05.md" @@ -0,0 +1,59 @@ +```sql +create database studenttest +go +use studenttest +go + +drop database studenttest +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); + + +--declare @ms float +declare @fms float + +--select @ms=AVG((Chinese+English+Math)/3) from StuScore where StuSex='男' +select @fms=AVG((Chinese+English+Math)/3) from StuScore where StuSex='女' + +--print '男生平均成绩'+convert(varchar(5),@ms) +print '女生平均成绩'+convert(varchar(5),@fms) + + +select * from StuInfo +--2. 练习:要求根据座位号找出张无忌的前后同学? +declare @zw int +select @zw = (select StuSeat from StuInfo where StuName = '张无忌' ) + --print @zw + select * from StuInfo where StuSeat = (@zw - 1) + +--2.练习:查询年龄最大的学生信息 +declare @age int +select @age = (select max(StuAge) from StuInfo) +select * from StuInfo where StuAge = @age +``` + diff --git "a/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-5/\345\267\245\347\250\213\344\275\234\344\270\232.md" "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-5/\345\267\245\347\250\213\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..dc0569520c7cfb28aaa8236015c0eb0ed1819592 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\344\275\234\344\270\232/sql\350\277\233\351\230\266\344\275\234\344\270\232-2022-9-5/\345\267\245\347\250\213\344\275\234\344\270\232.md" @@ -0,0 +1,39 @@ +```sql +create database Project +go +create table EPC(--工程 +EpcNo varchar(10) primary key, +EpcName varchar(20) +) +insert into EPC values('A1','花园大厦'),('A2','立交桥'),('A3','临江饭店') +create table staff(--职工 +sNO int primary key, +sName varchar(20), +jNO int references job(jNo) +) +insert into staff values(1001,'齐光明',1), + (1002,'李思歧',2), + (1003,'鞠明亮',4), + (1004,'葛宇宏',3) + +create table job(--职务 +jNO int primary key, +jName varchar(20) +) +insert into job values('1','工程师'),('2','技术员'),('3','律师'),('4','工人') +create table salary(--工资 +EpcNo varchar(10) references EPC(EpcNo), +sNo int references staff(sNO), +shourly int, +shours int, +sSalary int +) +insert into salary values('A1',1001,65,13,845), + ('A1',1002,60,16,960), + ('A1',1004,60,19,1140), + ('A2',1001,65,15,975), + ('A2',1003,55,17,935), + ('A3',1002,60,18,1080), + ('A3',1004,60,14,840) +``` + diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-8-29.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-8-29.md" new file mode 100644 index 0000000000000000000000000000000000000000..b4952bc0614fa2bd9e6238b645dbdb133609ee48 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-8-29.md" @@ -0,0 +1,72 @@ +--检测该数据库存不存在,如果存在就删除 +if exists (select * from sys.databases where name = 'dbtest') +drop database dbtest +go + +--1.创建数据库 +create database DBTEST +go +--2.使用数据库 +use DBTEST +go + +--创建部门表 +create table Depart( + DepId int primary key identity(1,1), + DepName varchar(50) not null +); +go +--创建表 +create table [User]( + --字段名(列名) 数据类型 [约束] + --ID + Id int primary key identity(1,1), + --姓名 + uName varchar(20) not null unique, + --性别 + uGender varchar(5) check(uGender = '男' or uGender= '女') default('男'), + --外键 + DepId int foreign key references Depart(DepId) +); +go + +--修改表结构 +--增加一列 手机号 +--alter table 表名 add增/drop删/alter改 +alter table [User] add Phone char(11) unique; +go + +--删除一列 +alter table [User] drop column uGender; + +--修改列 +alter table [User] alter column Phone varchar(11); +go + + + +--插入数据 +--直接插入:排除自增列,按顺序一个一个插入 +insert into Depart values('开发部') + +insert into [User] values('张三','男',1,'12365478941'); + + + + +--数据类型 +--整型 +--浮点:decimal(5,2):保留5位有效数字,小数点后2位 +--字符串:char(固定长度)varchar(可变长度), nvarchar(可变长度,使用中文仍然只占用一个字节) +--时间:datetime +--文本类型:text,ntext,nvarchar(max) + +--自增(标识列中的标识规范) +--非空 + +--约束 +--主键: primary key (唯一标识列) +--唯一: unique(),前台判断:有没有重复数据 +--默认: default +--check: 检查 +--外键: foreign key references \ No newline at end of file diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-8-30.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-8-30.md" new file mode 100644 index 0000000000000000000000000000000000000000..d42d14da6f2bb93fa49527547fe14570be906b68 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-8-30.md" @@ -0,0 +1,78 @@ +#### 条件查询 + +**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:求平均值 +``` + +#### 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 | \ No newline at end of file diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-1.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-1.md" new file mode 100644 index 0000000000000000000000000000000000000000..adaabffa83abfe4a1cb6ceae76368d526515bbc8 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-1.md" @@ -0,0 +1,10 @@ +#### E-R图转换为关系模型 + +- 1对1: + - 可以转换为一个独立的关系模式 + - 可以与任意一端对应的关系模式合并,***在任意一方加入对方的主键*(主码)变为其外键(外码),并加入联系本身的属性**。 +- 1对n,n对1: + - 可以转换为一个独立的关系模式 + - 可以与n端对应的关系模式合并**,将1方的主键加入n方作为其外键**,**并将联系的属性也加入n方** +- m对n: + - 可以转换为一个独立的关系模式(新建一张关系表)**,将联系双方的主键(主码)加入其中,并将联系的属性也加入其中。** \ No newline at end of file diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-5.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-5.md" new file mode 100644 index 0000000000000000000000000000000000000000..c70ab742ef9ef5fd9a661221887b963bfee7002c --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-5.md" @@ -0,0 +1,69 @@ +### 变量 + +#### 局部变量 + +局部变量必须以标记@作为前缀 ,如@age +局部变量的使用是先声明,再赋值 +局部变量只在定义它的局部范围内有效 + + + +声明一个局部变量:**declare @变量名 数据类型** + +```sql +--例: + declare @id int --声明一个名为id的整型变量 + declare @name varchar(50) --声明一个可变长度为50的存放姓名的字符串变量 + +``` + +赋值: + +- set @变量名 = 值 + +- select @变量名 = 值 + +```sql +--例: + select @id = 2022 + 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 +``` + diff --git "a/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-6.md" "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-6.md" new file mode 100644 index 0000000000000000000000000000000000000000..c7d697949b8c59f023ad1452f14fe284af96e809 --- /dev/null +++ "b/35-\345\274\240\345\271\263/\347\254\224\350\256\260/sql\350\277\233\351\230\266\347\254\224\350\256\2602022-9-6.md" @@ -0,0 +1,73 @@ +#### 使用convert函数 + +​ 由于PRINT 命令向客户端返回一个结果的字符串的信息。如果变量值不是字符串的话必须先用数据类型转换函数 CONVERT 将其转换为字符串。 + +```sql +--显示自动编号 +print '当前自动编号的值:' + convert(varchar(10),@@IDENTITY) +``` + +## 逻辑控制语句 + +#### if条件分支 + +```sql +if 条件 +begin + print‘合格’ +end + +else +begin + print '不合格' +end +``` + + + +#### 循环控制语句 + +--循环: while break(跳出循环)、continue(跳出当前循环) +--Oracle: LOOP while...LOOP, FOR..LOOP +--mysql: repeat +--逻辑控制 + +--循环打印1-10 +--声明+赋值 + +```sql +declare @a int = 1 +while (@a <= 10) +begin + print @a + set @a = @a + 1 +end +``` + + + + +#### 逻辑控制语句 + +##### case 多分支语句 + +​ 练习:将StuScore成绩表中的学生成绩用五分制显示。 +​ 5分:80分以上 +​ 4分:60~79分 +​ 3分:40~59分 +​ 2分:20~39分 +​ 1分:0~19分 + +```sql +select stuName,stuID,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 +``` + diff --git a/README.md b/README.md index 595b38d9e6db20f214b3c143502e0c2cda589cdd..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/README.md +++ b/README.md @@ -1,39 +0,0 @@ -# SQL进阶 - -#### 介绍 -{**以下是 Gitee 平台说明,您可以替换此简介** -Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 -无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} - -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)