当前位置: 首页 > news >正文

Transact-SQL语法速查手册

第1章 Transact-SQL基础

1.1 标识符

一、常规标识符

1. 命名规则:

l 第一个字母必须是Unicode2.0标准定义的字母、下划线、at符号(@)和数字符号(#);

l 后续字符可以是Unicode2.0标准定义的字母、来自基本拉丁字母或其他国家/地区脚本的十进制数字、at符号(@)、美元符号($)、数字符号(#)或下划线;

l 标识符不能是Transact-SQL的保留字;

l 不允许嵌入空格或其他特殊字符;

l 标识符长度不大于128字符,本地临时表标识符不大于116字符。

注:SQL Server2000中,常规标识符的格式规则取决于数据库的兼容级别,兼容级别可以用系统存储过程sp_dbcmptlevel来设置。以上是兼容级别为80时的规则。

2. 特殊字符说明

以下字符位于标识符开始位置时具有特殊意义:

l 以@符号开始的标识符表示局部变量或参数;

l 以@@符号开始的标识符表示全局变量;

l 以#符号开始的标识符表示临时表或过程;

l 以##符号开始的标识符表示全局临时对象;

l --单行注释;

l /*…*/多行注释。(多行注释不能跨越批处理)

二、分隔标识符

1. 命名规则:

l 标识符长度不大于128字符(不包括分隔符字符),本地临时表标识符不大于116字符;

l 标识符的主体可以是包含当前代码页内字母(分隔符本身除外)的任意组合。

2. 分隔标识符类型:

l 被引用的标识符用双引号分隔开,例如SELECT * FROM “My Table”;

l 括在括号中的标识符用方括号分隔,例如SELECT * FROM [My Table]。

三、使用标识符

在SQL Server2000中,一个对象的全称语法格式为:

server.database.owner.object

其中,server为服务器名,database为数据库名,owner为所有者,object为对象名。默认情况下,server为本地服务器,database为当前数据库,owner为在指定的数据库中与当前连接会话的登陆标识相对应的数据库用户或者数据库所有者。

四、通配符

1. %—包含零个或更多字符的任意字符串

例如:查找姓名中包含有“华”字的所有学生

WHERE sname LIKE ‘%华%’

2. _—任何单个字符

例如:查找姓王,名字包含3个字的学生

WHERE sname LIKE ‘王__’

3. [] —指定范围或集合中的任何单个字符

例如:查找姓刘和姓王,名字包含3个字的学生

WHERE sname LIKE ‘[刘,王]__’

4. [^]—不属于指定范围或集合的任何单个字符

例如:查找除姓刘和姓王以外,名字包含3个字的学生其他学生

WHERE sname LIKE ‘[^刘,王]__’

五、系统全局变量

变量名称

说明

@@CONNECTIONS

返回自SQL Server本次启动以来,所接受的连接或试图连接的次数

@@CPU_BUSY

返回自SQL Server本次启动以来,CPU工作的时间,单位为毫秒

@@CURSOR_ROWS

返回游标打开后,游标中的行数

@@DATEFIRST

返回SET DATAFIRST参数的当前值

@@DBTS

返回当前数据库的当前timestamp数据类型的值

@@ERROR

返回上次执行SQL语句产生的错误编号

@@FETCH_STATUS

返回FETCH语句游标的状态

@@IDENTITY

返回最新插入的IDENTITY列值

@@IDLE

返回自SQL Server本次启动以来,CPU空闲的时间,单位为毫秒

@@IO_BUSY

返回自SQL Server本次启动以来,CPU处理输入和输出操作的时间,单位为毫秒

@@LANGID

返回本地当前使用的语言标识符

@@LANGUAGE

返回当前使用的语言名称

@@LOCK_TIMEOUT

返回当前的锁定超时设置,单位为毫秒

@@MAX_CONNECTIONS

返回SQL Server允许同时连接的最大用户数目

@@MAX PRECISION

返回当前服务器设置的decimal和numeric数据类型使用的精度

@@NESTLEVEL

返回当前存储过程的嵌套层数

@@OPTIONS

返回当前SET选项信息

@@PACK_RECEIVED

返回自SQL Server本次启动以来,通过网络读取的输入数据包数目

@@PACK_SENT

返回自SQL Server本次启动以来,通过网络发送的输出数据包数目

@@PACKET_ERRORS

返回自SQL Server本次启动以来,SQL Server中出现的网络数据包的错误数据

@@PROCID

返回当前的存储过程标识符

@@REMSERVER

返回注册记录中显示的远程数据服务器名称

@@ROWCOUNT

返回上一个语句所处理的行数

@@SERVERNAME

返回运行SQL Server的本地服务器名称

@@SERVICENAME

返回SQL Server运行时注册键名称

@@SPID

返回服务器处理标识符

@@TEXTSIZE

返回当前TESTSIZE选项的设置值

@@TIMETICKS

返回一个计时单位的微秒数,操作系统的一个计时单位是31.25毫秒

@@TOTAL_ERRORS

返回自SQL Server本次启动以来,磁盘的读写错误次数

@@TOTAL_READ

返回自SQL Server本次启动以来,读磁盘的次数

@@TOTAL_WRITE

返回自SQL Server本次启动以来,写磁盘的次数

@@TRANCOUNT

返回当前连接的有效事务数

@@VERSION

返回当前SQL Server服务器的日期,版本和处理器类型

1.2 数据类型

类别

数据类型

字节

取值范围

精度

整数型

bigint

8

int

4

smallint

2

tinyint

1

0~255

逻辑数值型

bit

1,0或NULL

小数数据型

decimal

numeric

货币型

money

8

4

smallmoney

4

4

近似数值型

float

4

7

real

8

15

字符型

char

1~8000

varchar

text

Unicode字符型

nchar

1~8000

nvarchar

ntext

二进制数据

binary

1~8000

varbinary

1~8000

image

日期时间型

datetime

smalldatetime

其他类型

cursor

sal_variant

table

timestamp

uniqueidentifier

1.3 运算符

SQL Server中的运算夫及其优先级如下所示(优先级由高到低)

l +(正)、-(负)、~(按位取反)

l *(乘)、/(除)、%(取模,及求余)

l +(加)、+(连接)、-(减)

l =、>、<、>=、<=、<>、!= 、!< 、!>

l ^(位异或)、&(位与)、|(位或)

l NOT

l AND

l ALL、ANY、BETWEEN、IN、LIKE、OR、SOME

l =(赋值)

注:所有运算符均遵循左结合型,即同一表达式中若出现多个优先级相同的运算符时,将按从左到右的顺序对表达式进行求值

1.4 语句

一、BEGIN…END

1.【格式】

BEGIN

{

         sql语句|语句块

}

END

2.【示例】

BEGIN

         DECLARE @MyVar float

         SET @MyVar = 456.256

         BEGIN

                   PRINT CAST (@MyVar AS varchar(12))

         END

END

二、IF…ELSE

1.【格式】

IF Boolean_expression

         {sql语句|语句块}

[ELSE

         {sql语句|语句块}]

2.【示例】

USE School

IF (SELECT AVG(degree) FROM score WHERE cno=’3-105’)>80

BEGIN

                   PRINT ‘课程:3-105’

                   PRINT ‘考试成绩还不错’

END

ELSE

BEGIN

         PRINT ‘课程:3-105’

         PRINT ‘考试成绩一般’

         END

三、CASE

1.【简单CASE格式】

CASE input_expression

WHEN when_expression THEN result_expression

[…n]

         [ELSE else_result_expression]

END

2.【简单CASE示例】

USE School

GO

SELECT tname AS ‘姓名’,depart AS ‘单位’,

         CASE prof

                   WHEN ‘教授’ THEN ‘高级职称’

                   WHEN ‘副教授’ THEN ‘高级职称’

                   WHEN ‘讲师’ THEN ‘中级职称’

                   WHEN ‘助教’ THEN ‘初级职称’

         END AS ‘职称类型’

FROM teacher

GO

3.【搜索CASE格式】

CASE

WHEN Boolean_expression THEN result_expression

[…n]

         [ELSE else_result_expression]

END

4.【搜索CASE示例】

USE School

GO

SELECT sno AS ‘学号’,cno AS ‘课程号’,

         CASE

                   WHEN degree>=90 THEN ‘A’

                   WHEN degree>=80 THEN ‘B’

                   WHEN degree>=70 THEN ‘C’

                   WHEN degree>=60 THEN ‘D’

                   WHEN degree<60 THEN ‘E’

         END AS ‘成绩’

FROM score ORDER BY sno

GO

四、WHILE

1.【格式】

WHILE Boolean_expression

{sql语句|语句块}

[BREAK]

{sql语句|语句块}

[CONTINUE]

2.【示例】

DECLARE @s int,@i int

SET @i = 0

SET @s = 0

WHILE @i<=100

         BEGIN

                   SET @s = @s+@i

                   SET @i = @i+1

         END

PRINT ‘1+2+…+100=’+CAST(@s AS char(25))

五、GOTO

1.【格式】

GOTO lable

2.【示例】

DECLARE @avg float

USE School

If(SELECT COUNT(*) FROM score WHERE sno=’108’)=0

         GOTO label1

BEGIN

         PRINT ‘108学号学生的平均成绩:’

         SELECT @avg=AVG(degree) FROM score WHERE sno=’108’

         PRINT @avg

         RETURN

END

Label1:

         PRINT ‘108学号的学生无成绩’

六、RETURN

1.【格式】

RETURN [integer_expression]

2.【示例】

USE School

GO

CREATE PROC MyPro @no char(5)

AS RETURN(SELECT AVG(degree)FROM score WHERE sno=@no)

七、WAITFOR

1.【格式】

WAITFOR {DELAY ‘time’ | TIME ‘time’}

2.【示例】

BEGIN

         WAITFOR TIME ‘1:10:00’

         PRINT ‘现在是1:10:00’

END

1.5 函数

一、内置函数

函数分类

函数

说明

聚合函数

COUNT

SUM

AVG

MIN

MAX

配置函数

游标函数

日期和时间函数

DAY

MONTH

YEAR

GETDATE

数学函数

元数据函数

行集函数

安全性函数

字符串函数

系统函数

系统统计函数

文本和图像函数

二、用户自定义函数

1.【格式】

2.【示例】

USE test

GO

CREATE FUNCTION CubicVolume

--输入参数

(@CubeLength decimal(4,1),@CubeWidth decimal(4,1),@CubeHeight decimal(4,1))

RETURNS decimal(12,3)   --返回立方体的体积

AS

         BEGIN

                  RETURN(@CubeLength*@CubeWidth*CubeHeight)

         END

GO

第2章 Transact-SQL 语句

2.1 Transact-SQL语句一览表

语句类型

语句

说明

数据查询语言DQL

SELECT

从数据库表中检索数据和列

数据操作语言DML

INSERT

向数据库表中添加新数据行

UPDATE

更新数据库表中的数据

DELETE

从数据库表中删除数据行

数据定义语言DDL

CREATE DATABASE

创建数据库

ALTER DATABASE

修改数据库

DROP DATABASE

删除数据库

CREATE TABLE

创建数据库表

ALTER TABLE

修改数据库表结构

DROP TABLE

从数据库中删除表

CREATE VIEW

创建视图

ALTER VIEW

修改视图

DROP VIEW

从数据库中删除试图

CREATE INDEX

创建索引

DROP INDEX

删除索引

CREATE PROCEDURE

创建存储过程

DROP PROCEDURE

删除存储过程

CREATE TRIGGER

创建触发器

DROP TRIGGER

删除触发器

CREATE SCHEMA

添加模式

DROP SCHEMA

删除模式

CREATE DOMAIN

创建数据值域

ALTER DOMAIN

改变域定义

DROP DOMAIN

删除域

数据控制语言DCL

CRANT

授予用户访问权限

DENY

拒绝用户访问

REVOKE

解除用户访问权限

事务控制

COMMIT

结束当前事务

ROLLBACK

终止当前事务

SET TRANSACTION

定义当前事务数据访问特征

程序化SQL

DECLARE

为查询设定游标

EXPLAN

为查询描述数据访问计划

OPEN

检索查询结果打开一个游标

FETCH

检索一行查询结果

CLOSE

关闭游标

PREPARE

为动态执行准备SQL语句

EXECUTE

动态执行SQL语句

DESCRIBE

描述准备好的查询

2.2 数据查询语言DQL

一、SELECT

1.【格式】

SELECT 列名表

[INTO 新表名]

FROM 表或视图名

[WHERE 查询限定条件]

[GROUP BY 分组表达式]

[HAVING 分组条件]

[ORDER BY 次序表达式]

2.【示例】查询score表中至少有5名学生选修的并以3开头的课程号的平均分数。

SELECT cno,AVG(degree) AS ‘平均分’

FROM score

WHERE cno LIKE ‘3%’

GROUP BY cno

HAVING COUNT(*)>5

注:SQL的执行顺序是:

①执行WHERE子句,从表中选取行;

②由GROUP BY对选区的行进行分组;

③执行聚合函数;

④执行HAVING子句选区满足条件的分组(HAVING子句聚合函数的作用域为每一分组)。

2.3 数据操作语言

一、INSERT

1.【格式】

INSERT INTO <table_name>

[(<column_name>[{,<column_name>}…])]

VALUES(<value>[{,<value>}…])

注:“<>”为必选项,“[]”为可选项,“{}”为可重复出现项。

2.【示例】

INSERT INTO score

(sno,cno,score)

VALUES(1001,254,’95’)

二、UPDATE

1.【格式】

UPDATE<table_name>

SET<set clause expression>[{,< set clause expression >}…]

[WHERE <search_condition>]

注:“<>”为必选项,“[]”为可选项,“{}”为可重复出现项。

2.【示例】

UPDATE 商品信息

SET 产地=

(SELECT 供应商所在城市

FROM 供应商信息

WHERE 供应商名称=’南方电讯’),

备注=’货亿到’

WHERE 产地=’上海市’

三、DELETE

1.【格式】

DELETE FROM<table_name>

[WHERE <search_condition>]

注:“<>”为必选项,“[]”为可选项,“{}”为可重复出现项。

2.【示例】

DELETE FROM 业务员信息

WHERE 业务员姓名 LIKE ‘黄__’

2.4 数据定义语言

一、CREATE DATABASE

1.【格式】

CREATE DATABASE database_name

[

[ON [filespec]]

[ LOG ON [filespec]]

]

filespec定义为

([NAME=logical_file_name,]

FILENAME=’os_file_name’

[,SIZE=size]

[,MAXSIZE={max_size | UNLIMITED}]

[,FILEGROWTH=growth_increment])

2.【示例】

CREATE DATABASE School

ON

(NAME= School,

FILENAME='d:/Program Files/Microsoft SQL Server/MSSQL/Data/ School_Data.mdf',

SIZE=50MB,

MAXSIZE=2000,

FILEGROWTH=20)

LOG ON

(NAME= School_Log,

FILENAME='d:/Program Files/Microsoft SQL Server/MSSQL/Data/ School_Log.ldf',

SIZE=50MB,

MAXSIZE=2000,

FILEGROWTH=20)

二、ALTER DATABASE

1.【格式】

ALTER DATABASE database_name

{ ADD FILE filespec

| ADD LOG FILE filespec

| REMOVE FILE logical_file_name

| MODIFY FILE filespec

| MODIFY NAME=new_dbname

}

filespec定义为

([NAME=logical_file_name,]

FILENAME=’os_file_name’

[,SIZE=size]

[,MAXSIZE={max_size | UNLIMITED}]

[,FILEGROWTH=growth_increment])

2.【示例】

三、DROP DATABASE

1.【格式】

DROP DATABASE database_name

2.【示例】

DROP DATABASE School

四、CREATE TABLE

1.【格式】

CREATE TABLE table_name

(

         column_name1 data_type [NULL | NOT NULL] [PRIMARY | UNIQUE][FOREIGN KEY [(column_name)]] REFERENCES ref_table [(ref_column)]

         [column_name2 data_type…]

         …

)

2.【示例】

CREATE TABLE book (

         bid int NOT NULL PRIMARY KEY,

         bname char(8) NOT NULL,

         authorid int FOREIGN KEY REFERENCES authors(authorid)

)

五、ALTER TABLE

1.【格式】

ALTER TABLE table_name

ADD [column_name data_type]

         [PRIMARY KEY | CONSTRAIN]

         [FOREIGN KEY (column_name)

         REFERENCES ref_table(ref_column)]

DROP [CONSTRAINT] constraint_name | COLUMN column_name

2.【示例】

ALTER TABLE book ADD price int

六、DROP TABLE

1.【格式】

DROP TABLE table_name

2.【示例】

DROP TABLE book

七、CARETE VIEW

1.【格式】

CREATE VIEW [database_name.][owner.]view_name [(column [,…n])]

[WITH view_attribute [,…n]]

AS

Select_statement

[WITH CHECK OPTION]

view_attribute定义为:

{ENCRYPTION | SCHEMABINDING | VIEW_METADATA}

2.【示例】

USE School

GO

CREATE VIEW st2_degree

AS

SELECT student.sname AS ‘姓名’,course.cname AS ‘课程’,score.degree AS ‘成绩’

FROM student,course,score

WHERE student.sno=score.sno AND course.cno=score.cno

GO

八、ALTER VIEW

1.【格式】

ALTER VIEW [database_name.][owner.]view_name [(column [,…n])]

[WITH view_attribute [,…n]]

AS

select_statement

[WITH CHECK OPTION]

view_attribute定义为:

{ENCRYPTION | SCHEMABINDING | VIEW_METADATA}

2.【示例】

ALTER VIEW 珠宝信息_VIEW(商品名称,单价)

AS

SELECT 名称编号,单价

FROM 商品信息

WHERE 单价>1000

九、DROP VIEW

1.【格式】

DROP VIEW {view_name} [,…n]

2.【示例】

USE test

GO

IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS _

                            WHERE TABLE_NAME=’View1’)

DROP VIEW View1

GO

十、CREATE INDEX

1.【格式】

CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED] INDEX index_name

ON {table_name | ivew_name} (column [ASC | DESC][,…n])

[WITH index_option [,…n]]

[ON filegroup]

index_option定义为

{ PAD_INDEX | FILLFACTOR=fillfactor | IGNORE_DUP_KEY | DROP_EXISTING | STATISTICS_NORECOMPUTE | SORT_IN_TEMPDB}

2.【示例】

USE School

IF EXISTS(SELECT name FROM sysindexes WHERE name=’IDX_tno’)

         DROP INDEX teacher.IDX_tno

GO

USE School

CREATE INDEX IDX_tno ON teacher(tno)

GO

十一、DROP INDEX

1.【格式】

DROP INDEX ‘table.index | view.index’ [,…n]

2.【示例】

USE test

GO

DROP INDEX table1.Idx1

GO

十二、CREATE PROCEDURE

1.【格式】

CREATE PROC[EDURE] procedure_name [; number]

[{@parameter data_type} [VARYING ][ = default][OUTPUT]]

[,…n]

[WITH

         {RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}]

[FOR REPLICATION]

AS sql_statement [,…n]

2.【示例】

USE School

IF EXISTS(SELECT name FROM sysobjects WHERE name=’stud_degree’ AND type=’P’)

         DROP PROCEDURE stud_degree

GO

USE school

GO

CREATE PROCEDURE stud_degree

AS

         SELECT student.sno,student.sname,course.cname,score.degree

         FROM student,course,score

         WHERE student.sno=score.sno AND course.cno=score.cno

         ORDER BY student.sno

GO

十三、ALTER PROCEDURE

1.【格式】

2.【示例】

十四、DROP PROCEDURE

1.【格式】

DROP PROCEDURE procedure_name

2.【示例】

DROP PROCEDURE test_ret

十五、CREATE TRIGGER

1.【格式】

CREATE TRIGGER trigger_name ON { table_name | view_name }

[WITH ENCRYPTION]

{

         { {FOR | AFTER | INSTEAD OF} {[INSERT] [,] [UPDATE] [,] [DELETE]}

                   [WITH APPEND]

                   [NOT FOR REPLICATION]

                   AS

                   [{IF UPDATE (column)

                            [{ AND | OR UPDATE (column)}

                                     […n]

                   | IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask)

                            {comparison_operator} column_bitmask […n]

                   }]

                  sql_statement […n]

         }

}

2.【示例】

CREATE TRIGGER [Hotel_Department_Update] ON dbo.Hotel_Department

FOR INSERT, UPDATE

AS

IF NOT EXISTS (SELECT * FROM Hotel WHERE ItemID IN (SELECT ItemID FROM inserted))

         BEGIN

                   PRINT '更新数据库失败,所属记录不存在!'

                  ROLLBACK TRAN                 --撤消操作

         END

         RETURN

GO

十六、ALTER TRIGGER

1.【格式】

ALTER TRIGGER trigger_name ON (table_name | view_name)

[WITH ENCRYPTION]

{

         {(FOR | AFTER | INSTEAD OF ) {[DELETE] [,] [INSERT] [,] [UPDATE]}

                   [NOT FOR REPLICATION]

                   AS

                  Sql_statement […n]

         }

         |

         {(FOR | AFTER | INSTEAD OF) {[INSERT] [,] [UPDATE] }

                   [NOT FOR REPLICATION]

                   AS

                   {IF UPDATE (column)

                   [{AND | OR} UPDATE (column)]

                   […n]

                   | IF (COLUMNS_UPDATED() {bitwise_operator}

                            updated_bitmask)

                  {comparison_operator} column_bitmask […n]

                   }

                  sql_statement […n]

         }

}

2.【示例】

十七、DROP TRIGGER

1.【格式】

DROP TRIGGER {trigger_name} [,…n]

2.【示例】

DROP TRIGGER trig1

转载于:https://www.cnblogs.com/sczw-maqing/p/3623806.html

相关文章:

  • 开源地图数据可视化库——mapnik
  • IOS开发常用的linux命令
  • grep/字符/次数匹配/锚定符/小大括号/wc/tr/cut/sort/uniq
  • ajax跨域问题
  • 菜根谭#89
  • Kubernetes上的十大应用程序
  • 开发技巧:高效的使用 Response.Redirect
  • 正则表达式-基础知识Review
  • Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降
  • 四则运算1
  • Windows API 第15篇 GetVolumeInformation 获取磁盘卷(驱动器)信息
  • 看完这篇文章,你还觉得Python难吗?
  • 使用AIR进行移动APP开发常见功能和问题(上)
  • 应用el-tabs模拟nav menu组件
  • “ an error occurred during ssl communication”--VisualSVN
  • [PHP内核探索]PHP中的哈希表
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • co.js - 让异步代码同步化
  • Computed property XXX was assigned to but it has no setter
  • Consul Config 使用Git做版本控制的实现
  • Docker: 容器互访的三种方式
  • input的行数自动增减
  • Java读取Properties文件的六种方法
  • LeetCode29.两数相除 JavaScript
  • MQ框架的比较
  • MySQL数据库运维之数据恢复
  • nodejs实现webservice问题总结
  • PhantomJS 安装
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring核心 Bean的高级装配
  • swift基础之_对象 实例方法 对象方法。
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • win10下安装mysql5.7
  • 简析gRPC client 连接管理
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 老板让我十分钟上手nx-admin
  • 码农张的Bug人生 - 初来乍到
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 自制字幕遮挡器
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Java)【深基9.例1】选举学生会
  • (编译到47%失败)to be deleted
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (转载)Linux 多线程条件变量同步