翻译:CREATE FUNCTION语句(已提交到玛丽亚DB官方手册)

我提交到MariaDB官方手册的译文,本文为mariadb官方手册,CREATE DATABASE的译文,我提交到MariaDB官方手册的译文,我提交到MariaDB官方手册的译文,本文为mariadb官方手册

本文为mariadb官方手册:CREATE DATABASE的译文。

翻译:CREATE DATABASE语句,createdatabase

正文为mariadb官方手册:CREATE DATABASE的译文。

原文:
自家付诸到MariaDB官方手册的译文:

语法

CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

本文为mariadb官方手册:CREATE FUNCTION的译文。

原文:https://mariadb.com/kb/en/create-database/
本身付出到玛丽亚DB官方手册的译文:https://mariadb.com/kb/zh-cn/create-database/

描述

CREATE
DATABASE创造二个加以名称的数据库。该语句供给对database具备CREATE权限。CREATE
SCHEMA是CREATE DATABASE的同义词。假若采纳了IF NOT
EXISTS子句,当数据库已存在时将赶回一条warning音讯而不是回到错误。

原文:https://mariadb.com/kb/en/library/create-function/
金沙国际唯一官网网址,自己付诸到玛丽亚DB官方手册的译文:https://mariadb.com/kb/zh-cn/create-function/

语法

CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

OR REPLACE

玛丽亚DB starting with 10.一.3 在玛丽亚DB 拾.一.叁中引进了OPAJERO REPLACE子句。
假设使用了可选的OKoleos REPLACE子句,它是上边语句的简写格局:

DROP DATABASE IF EXISTS db_name;
CREATE DATABASE db_name ...;

语法

CREATE [OR REPLACE]
    [DEFINER = {user | CURRENT_USER | role | CURRENT_ROLE }]
    [AGGREGATE] FUNCTION [IF NOT EXISTS] func_name ([func_parameter[,...]])
    RETURNS type
    [characteristic ...]
    RETURN func_body

func_parameter:
    param_name type

type:
    Any valid MariaDB data type

characteristic:
    LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
  | COMMENT 'string'

func_body:
    Valid SQL procedure statement

描述

CREATE
DATABASE成立三个加以名称的数据库。该语句须要对database具备CREATE权限。CREATE
SCHEMA是CREATE DATABASE的同义词。假若应用了IF NOT
EXISTS子句,当数据库已存在时将赶回一条warning音信而不是回到错误。

IF NOT EXISTS

当使用了IF NOT
EXISTS子句,当钦定的数据库已存在时,玛丽亚DB将重临2个warning而不是错误音讯。

示例

CREATE DATABASE db1;
Query OK, 1 row affected (0.18 sec)

CREATE DATABASE db1;
ERROR 1007 (HY000): Can't create database 'db1'; database exists

CREATE OR REPLACE DATABASE db1;
Query OK, 2 rows affected (0.00 sec)

CREATE DATABASE IF NOT EXISTS db1;
Query OK, 1 row affected, 1 warning (0.01 sec)

SHOW WARNINGS;
+-------+------+----------------------------------------------+
| Level | Code | Message                                      |
+-------+------+----------------------------------------------+
| Note  | 1007 | Can't create database 'db1'; database exists |
+-------+------+----------------------------------------------+

安装字符集和排序规则。详细新闻见设置字符集和排序规则。

CREATE DATABASE czech_slovak_names 
  CHARACTER SET = 'keybcs2'
  COLLATE = 'keybcs2_bin';

描述

能够应用CREATE FUNCTION语句创建贰个新的储存函数stored
function。要动用CREATE
FUNCTION语句,必必要具有CREATE
ROUTINE权限。

函数能够定义大四数量的参数,在函数体(func_body)部分会再次回到3个值。函数体部分能够是随意有效的SQL表达式,举个例子有个别select语句。假设您有方便的权能,你完全能够像调用内置函数一样调用存款和储蓄函数。关于权限的详细音信,见下文:Security。

其它,你也足以运用CREATE
FUNCTION语句的变体格式来安装一个用户自定义函数(UDF)。关于UDF,详细新闻见:CREATE FUNCTION
(UDF)。

你能够使用一个圆括号包围SELECT作为func_body部分,正如使用子查询同一。但注意,SELECT语句必须重临单个值(标量值,即单行且单列的值)。调用函数时,假若SELECT语句再次回到了多列,则报1二四1的不当,若是SELECT语句重回了多行,则报1242的谬误。为了保险,能够利用LIMIT子句保障只回去单行数据。

你能够动用BEGIN…END语句块替换这里的RETU大切诺基N子句,不过在语句块中,必须要含有叁个RETU大切诺基N语句。当调用函数时,实施到RETU奥迪Q7N子句时将立刻重返其结果,在RETU卡宴N子句之后的言辞都不会再实施。

私下认可情状下,函数是关联到暗中同意数据库上的。即使要将函数字彰显式关联到3个点名的数据库,能够在创制时行使全称db_name.func_name。假如制造的囤积函数名和松手的函数名同名,则必须运用全称来调用它。

概念存款和储蓄函数时,参数列表可感觉空。假使钦点参数名,则参数名不区分大小写。

每种参数都能够注解为随便有效的数据类型,但不可能使用COLLATE属性。

OR REPLACE

玛丽亚DB starting with 十.1.三 在MariaDB 十.一.叁中引进了O汉兰达 REPLACE子句。
如若利用了可选的OBMWX3 REPLACE子句,它是下边语句的简写方式:

DROP DATABASE IF EXISTS db_name;
CREATE DATABASE db_name ...;

回去Linux体系小说大纲:

>RETURNS子句

RETUTiguanNS子句内定函数的回到类型。可以选取NULL值来代表回去大四有效数据类型。

假设RETU卡宴N子句的归来值类型和这里定义的数据类型不均等会怎么?那取决于创造函数的时候,SQL_MODE的熏陶行为。

如果SQL_MODE为strict情势的值(即钦定了STPAJEROICT_ALL_TABLES或STRICT_TRANS_TABLES),将报1366错误。

除这种情况,假诺回去值类型不一致,则再次来到值将被胁持转变为内定的数据类型。举例,RETU帕杰罗NS子句钦定重临多个ENUM或SET数据类型,但RETU凯雷德N子句重临了贰个整型,则重回值将强制转换为ENUM或SET成员对应的字符串(译者注:纵然ENUM允许存款和储蓄数值,但猛烈建议不要存款和储蓄数值,因为特别轻便混淆ENUM的索引值和实在存款和储蓄的数值,因而这里间接说是字符串)。

玛丽亚DB将要成立routine的时候保留系统变量SQL_MODE的值,未来任哪天刻调用routine时都利用该SQL_MODE值,而不论是当前调用routine时的SQL
MODE值是什么样。

IF NOT EXISTS

当使用了IF NOT
EXISTS子句,当钦点的数据库已存在时,玛丽亚DB将回到三个warning而不是错误音信。

再次回到数据库种类作品大纲:

>LANGUAGE SQL

LANGUAGE
SQL代表的是二个标准的SQL子句,它是为着移植性而存在的。可是,该子句在玛丽亚DB中一向不别的意义,因为玛丽亚DB的蕴藏函数中唯1帮忙的语言唯有SQL。