From 88b4637e309af3f03a6619ef9bd785dd9ccb7d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B4=8B?= <2667310859@qq.com> Date: Wed, 21 Sep 2022 20:26:25 +0800 Subject: [PATCH] =?UTF-8?q?34=E9=99=88=E6=B4=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0921\345\207\275\346\225\260.md" | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 "34\351\231\210\346\264\213/\347\254\224\350\256\260/0921\345\207\275\346\225\260.md" diff --git "a/34\351\231\210\346\264\213/\347\254\224\350\256\260/0921\345\207\275\346\225\260.md" "b/34\351\231\210\346\264\213/\347\254\224\350\256\260/0921\345\207\275\346\225\260.md" new file mode 100644 index 0000000..48d0fec --- /dev/null +++ "b/34\351\231\210\346\264\213/\347\254\224\350\256\260/0921\345\207\275\346\225\260.md" @@ -0,0 +1,124 @@ +## 一 函数 + +**(1)** 函数在计算机语言的使用中贯穿始终,在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作,比如求某列数据的平均值,或者求字符串的长度等。从函数定义的角度出发,我们可以将函数分成内置函数和自定义函数。在 SQL 语言中,同样也包括了内置函数和自定义函数。内置函数是系统内置的通用函数,而自定义函数是我们根据自己的需要编写的 + +函数分为(1)**系统函数:**,(2)**自定义函数**(方法:将一个功能封装成可重用的函数)。 + +其中自定义函数又可以分为(1)标量值函数(返回单个值),(2)表值函数(返回查询结果) + +#### 二 标量值函数 + +语法结构: + +```sql +CREATE FUNCTION function_name(@parameter_name parameter_data_type) --(@参数名 参数的数据类型) +RETURNS date_type --返回返回值的数据类型 + +[WITH ENCRYPTION] --如果指定了 encryption 则函数被加密 + +[AS] + +BEGIN + + function_body --函数体 + + RETURN 表达式; + +END +``` + +定义函数要求实现: + +实现两个值的加和 + +使用函数求某门课的平均成绩 + + + +#### 三 表值函数 + +(1)语法结构: + +```sql +create function 名称 + +([{@参数名称 参数类型[=默认值]}[,n]]) + +returns @局部变量 table(参数名 参数类型) + +[with encryption] + +[as] + +begin + +函数体 + +return 函数返回值 + +end +``` + + + +(2)删除自定义函数 + +```sql +DROP function 函数名 +``` + +**四 内置函数可以分成以下四类。** + +算术 、 字符串 、 日期、 转换 + +((1))**算术函数**:顾名思义就是对数值类型的字段进行算术运算,举一些简单的例子 + +```sql +SELECT ABS(-2),运行结果为 2。 +SELECT MOD(101,3),运行结果 2。 +SELECT ROUND(37.25,1),运行结果 37.3。 +``` + +((2))**字符串函数** + +常用的字符串函数操作包括了字符串拼接,大小写转换,求长度以及字符串替换和截取等 + +举一些简单的例子 + +```sql +SELECT CONCAT('abc', 123),运行结果为 abc123。 +SELECT LENGTH('你好'),运行结果为 6。 +SELECT CHAR_LENGTH('你好'),运行结果为 2。 +SELECT LOWER('ABC'),运行结果为 abc。 +SELECT UPPER('abc'),运行结果 ABC。 +SELECT REPLACE('fabcd', 'abc', 123),运行结果为 f123d。 +SELECT SUBSTRING('fabcd', 1,3),运行结果为 fab。 +``` + +((3))**日期函数** + +日期函数是对数据表中的日期进行处理 + +**举个栗子** + +注意这里需要注意的是,DATE 日期格式必须是 **yyyy-mm-dd** 的形式。如果要进行日期比较,就要使用 DATE 函数,不要直接使用日期与字符串进行比较 + +```sql +SELECT CURRENT_DATE(),运行结果为 2019-04-03。 +SELECT CURRENT_TIME(),运行结果为 21:26:34。 +SELECT CURRENT_TIMESTAMP(),运行结果为 2019-04-03 21:26:34。 +SELECT EXTRACT(YEAR FROM '2019-04-03'),运行结果为 2019。 +SELECT DATE('2019-04-01 12:00:05'),运行结果为 2019-04-01。 +``` + +((4))**转换函数** + +转换函数可以转换数据之间的类型 + +举个例子 + +```sql +SELECT CAST(123.123 AS INT),运行结果会报错。 +SELECT CAST(123.123 AS DECIMAL(8,2)),运行结果为 123.12。 +SELECT COALESCE(null,1,2),运行结果为 1。 +``` -- Gitee