📅  最后修改于: 2020-11-30 00:58:09             🧑  作者: Mango
下面列出了最常见的MariaDB面试问题和答案列表
MariaDB是一个流行的,开放源代码的,由MySQL开发人员开发的基于社区的项目。它是一种关系数据库管理技术,提供与MySQL相同的功能。它是MySQL的新替代品。
MariaDB将数据转换为结构化的各种应用程序,从银行到网站。之所以使用MariaDB,是因为它具有存储引擎,插件和许多其他工具的覆盖范围生态系统的快速,可扩展性和鲁棒性,使其可广泛用于各种用例。
MariaDB的最新版本(版本10.4)还包括GIS和JSON功能。
有关更多信息:单击此处
MariaDB通过一些扩展提供了MySQL的相同功能。这是相对较新的进步。
MariaDB的功能列表:
有关更多信息:单击此处
CREATE DATABASE命令用于在MariaDB中创建数据库,CREATE SCHEMA是创建数据库的同义词。
句法:
CREATE DATABASE Database_name;
如果使用了可选的OR REPLACE子句,则该子句用作以下各项的快捷方式:
DROP DATABASE IF EXISTS db-name;
CREATE DATABASE db-name;
如果不存在:
当使用IF NOT EXISTS子句时,如果指定的数据库已经存在,MariaDB将返回警告而不是错误。
例如
CREATE DATABASE student;
输出:
Query OK, 1 row affected (0.01 sec)
CREATE OR REPLACE DATABASE student;
输出:
Query OK, 2 rows affected (0.00 sec)
CREATE DATABASE IF NOT EXISTS student;
输出:
Query OK, 1 row affected, 1 warning (0.01 sec)
警告:
Level | Code | Message |
---|---|---|
Note | 1007 | Can’t create database ‘student’ ; database exists |
SHOW DATABASE :此命令用于查看您创建的数据库
句法:
SHOW DATABASES;
有关更多信息:单击此处
USE DATABASE命令用于选择和使用MariaDB中的数据库。 USE db-name'语句告诉MariaDB将db_name数据库用作后续语句的默认(当前)数据库。该数据库将保持默认值,直到会话结束或发出另一个USE语句:
句法:
USE database_name;
例
USE student;
SELECT COUNT (*) FROM mytable; # selects from student.mytable
USE faculty;
SELECT COUNT (*) FROM mytable; # selects from faculty.mytable
The DATABASE () and SCHEMA () returns the default database.
有关更多信息:单击此处
DROP DATABASE命令用于在MariaDB中删除数据库。此声明要非常小心!要使用DROP DATABASE,您需要在数据库上具有DROP特权。 DROP SCHEMA是DROP DATABASE的同义词
注意:删除数据库后,该数据库上的用户权限不会自动
句法:
DROP DATABASE Database_name;
IF EXISTS语句:
使用IF EXISTS可以防止不存在的数据库发生错误。使用IF EXISTS语句时,将为每个不存在的数据库生成一个注释。
例
DROP DATABASE student;
输出:
Query OK, 0 rows affected (0.39 sec)
DROP DATABASE student;
输出:
ERROR (1008): can't drop database; database doesn't exists [\]w: show warning enabled
DROP DATABASE IF EXISTS student;
输出:
Query OK, 0 rows affected, 1 warning (0.00 sec)
注意(代码1008):无法删除数据库“学生”;数据库不存在
有关更多信息:单击此处
首先,您必须在MariaDB中创建数据库,然后选择数据库,然后使用CREATE TABLE语句创建表。您必须对表或数据库具有CREATE特权才能创建表。
Create table语句创建一个表名,后跟一个列,索引和约束的列表。默认情况下,在默认数据库中创建一个表
句法:
CREATE TABLE table_name (column_name column_type);
例如
1. CREATE TABLE Students(
2. student_id INT NOT NULL AUTO_INCREMENT,
3. student_name VARCHAR(100) NOT NULL,
4. student_address VARCHAR(40) NOT NULL,
5. admission_date DATE,
6. PRIMARY KEY ( student_id ));
输出:
Query OK, 0 rows affected (0.312 sec)
您可以使用SHOW TABLES命令验证是否创建了表。
SHOW TABLES;
有关更多信息:单击此处
DROP TABLE命令用于从MariaDB中的数据库中删除表。它会永久删除该表,并且无法恢复。您必须对每个表都具有DROP特权。所有表数据和表定义以及与表关联的触发器都将被删除,因此使用此语句非常小心!
如果在参数列表中命名的任何表都不存在,MariaDB将返回一个错误,按名称指示不能删除哪些不存在的表,但也会删除列表中存在的所有表。
句法:
DROP TABLE table_name ;
例
Drop the table "Students" created within "Javatpoint" database.
DROP TABLE Students;
您可以验证该表是否已删除。
SHOW TABLES; //command
输出量
有关更多信息:单击此处
INSERT INTO语句用于在MariaDB数据库的表中插入记录。
句法:
INSERT INTO tablename (field, field2,...) VALUES (value, value2,...);
要么
1. INSERT INTO
2. (column1, column2,... )
3. VALUES
4. (expression1, expression2, ... ),
5. (expression1, expression2, ... ),
6. ...;
或者您也可以在有条件的情况下使用它
1. INSERT INTO table
2. (column1, column2, ... )
3. SELECT expression1, expression2, ...
4. FROM source_table
5. [WHERE conditions];
例如
指定列名称:
INSERT INTO person (first_name, last_name) VALUES ('Mohd', 'Pervez');
一次插入多于1行:
INSERT INTO abc VALUES (1,"row 1"), (2, "row 2");
从另一个表中选择:
INSERT INTO abc SELECT * FROM person WHERE status= 'c';
有关更多信息:单击此处
SELECT语句用于从MongoDB数据库中的表中检索记录。您可以使用不同的关键字从表中选择单个,多个或所有记录。
句法:
SELECT expressions
FROM tables
[WHERE conditions];
FROM子句指示要从中检索行的表。
SELECT语句可以与UNION语句,ORDER BY子句,LIMIT子句,WHERE子句,GROUP BY子句,HAVING子句等一起使用。
SELECT [ ALL | DISTINCT ]
expressions
FROM tables
[WHERE conditions]
[GROUP BY expressions]
[HAVING condition]
[ORDER BY expression [ ASC | DESC ]];
例
我们有一个表格“ Students”,其中有一些数据。因此,从“学生”中检索所有记录。
SELECT * FROM Students;
有关更多信息:单击此处
LIMIT子句与SELECT语句一起使用,以从表中选择有限数量的记录。它可以帮助您根据用途检索记录。
句法:
SELECT expressions
FROM tables
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
LIMIT row_count;
例
以降序检索记录:
让我们在“学生”表中将SELECT语句与LIMIT子句一起使用。结果以降序显示,LIMIT为4。
SELECT student_id, student_name, student_address
FROM Students
WHERE student_id <= 7
ORDER BY student_id DESC
LIMIT 4;
有关更多信息:单击此处
UPDATE语句用于更改,更新或修改MariaDB表的现有记录。它可以与WHERE,ORDER BY和LIMIT子句一起使用。
句法:
UPDATE table_name SET field=new_value, field2=new_value2,...
[WHERE ...]
例如
我们有一个表“ Test”,其中包含以下数据:
让我们更改“ title”为“ Welcome to MariaDB”,其中“ title”为“ Hello”。
有关更多信息:单击此处
MariaDB DELETE语句用于从数据库表中删除一个或多个记录。如果您在没有WHERE条件的情况下使用它,则可用于从表以及整个表中删除记录。
句法:
DELETE FROM table
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT number_rows];
让我们使用一种条件删除数据。
例
DELETE FROM Students
WHERE student_name = 'Mahesh';
查询执行成功。现在您可以看到所选数据已删除。
SELECT * FROM Students;
您会看到表中没有“ Mahesh”。
同样,您可以使用多个条件删除数据。
有关更多信息:单击此处
TRUNCATE TABLE语句用于永久删除表。它从表中删除所有记录。
句法:
TRUNCATE [TABLE] [database_name.]table_name;
DELETE和TRUNCATE语句之间的区别:
例
让我们截断表“ Students”。
TRUNCATE TABLE javatpoint.Students;
输出:
Query OK, 0 rows affected (0.031sec).
TRUNCATE查询成功执行。您可以看到“学生”表中的记录已被永久删除。
SELECT * FROM Students;
输出:
No record found.
有关更多信息:单击此处
在关系数据库管理系统中,聚合函数是将多行的值组合在一起作为某些条件下的输入的函数,并提供具有更重要含义的单个值(例如列表,集合等)。
以下是MariaDB中的聚合函数列表:
MariaDB COUNT函数:在MariaDB数据库中,COUNT函数用于返回表达式的计数。
句法:
SELECT COUNT(aggregate_expression)
FROM tables
[WHERE conditions];
COUNT()函数仅计算NOTNULL值。
MariaDB SUM函数:MariaDB SUM函数用于返回表达式的求和值。
句法:
SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];
MariaDB MIN函数:MariaDB MIN()函数用于检索表达式的最小值。
句法:
SELECT MIN(aggregate_expression)
FROM tables
[WHERE conditions];
MariaDB MAX函数:MariaDB MAX()函数用于检索表达式的最大值。
句法:
SELECT MAX(aggregate_expression)
FROM tables
[WHERE conditions];
MariaDB AVG函数:MariaDB AVG()函数用于检索表达式的平均值。
句法:
SELECT AVG(aggregate_expression)
FROM tables
[WHERE conditions];
要么
SELECT expression1, expression2, ... expression_n,
AVG(aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
MariaDB BIT_AND函数:返回exp中所有位的按位与。
句法:
BIT_AND (exp)
MariaDB BIT_OR :返回exp中所有位的按位或。
句法:
BIT_OR (exp)
MariaDB BIT_XOR :返回exp中所有位的按位XOR。
句法:
BIT_XOR (exp)
MariaDB支持RDBMS中使用的所有子句。例如:
MariaDB Where子句:在MariaDB中,WHERE子句与SELECT,INSERT,UPDATE和DELETE语句一起使用,以选择或更改要更改的特定位置。
它已出现在表名之后的语句中。
句法:
[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]
注意:WHERE子句是可选子句。它可以与AND,OR,AND&OR,LIKE运算符。
MariaDB Like子句:在MariaDB中,当操作需要完全匹配时,LIKE子句与SELECT语句一起使用以检索数据。它可以与SELECT,INSERT,UPDATE和DELETE语句一起使用。
它用于模式匹配,并返回true或false。用于比较的模式接受以下字符:
“%”字符:它匹配字符(0或更多)的号码。
“_”字符:它匹配单个字符。它匹配其集合中的字符。
句法:
SELECT field, field2,.... FROM table_name, table_name2,...
WHERE field LIKE condition
MariaDB按子句排序:在MariaDB数据库中,ORDER BY子句用于按升序或降序对结果集中的记录进行排序。
句法:
SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];
注意:您可以在不使用ASC / DESC属性的情况下对结果进行排序。默认情况下,结果将以升序存储。
MariaDB DISTINCT子句:当我们将SELECT语句与结果一起使用时,MariaDB DISTINCT子句用于从结果中删除重复项。
句法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];.
注意:当您在DISTINCT子句中使用唯一的表达式时,查询将返回该表达式的唯一值。当您在DISTINCT子句中使用多个表达式时,查询将返回列出的多个表达式的唯一组合。
DISTINCT子句不会忽略NULL值。因此,当在SQL语句中使用DISTINCT子句时,结果集将包括NULL作为唯一值。
MariaDB FROM子句:MariaDB FROM子句用于从表中获取数据。它还可用于连接表格,您稍后将进行研究。
句法:
SELECT columns_names FROM table_name;
等等。
WHERE子句用于选择或更改特定位置以从表中获取记录。它与SELECT,INSERT,UPDATE和DELETE语句一起使用。
句法:
[COMMAND] field,field2,... FROM table_name,table_name2,... WHERE [CONDITION]
单条件的WHERE子句
例
我们有一个表“ Students”,其中包含一些数据。让我们从“ student”表中检索所有记录,其中student_id小于6。
SELECT *
FROM Students
WHERE student_id < 6;
输出:
有关更多信息:单击此处
当操作需要完全匹配时,MariaDB LIKE子句与SELECT,INSERT,UPDATE和DELETE语句一起使用以检索数据。
它用于模式匹配,并返回true或false。用于比较的模式接受以下字符:
“%”字符:它匹配字符(0或更多)的号码。
“_”字符:它匹配单个字符。它匹配其集合中的字符。
句法:
SELECT field, field2,... FROM table_name, table_name2,...
WHERE field LIKE condition
我们有一个“雇员”表,其中包含以下数据。
让我们使用%LIKE条件的通配符来查找所有以“ L”开头的名称。
SELECT name
FROM Employees
WHERE name LIKE 'L%';
有关更多信息:单击此处
MariaDB ORDER BY子句用于按升序或降序对结果集中的记录进行排序。
注意:您可以在不使用ASC / DESC属性的情况下对结果进行排序。默认情况下,结果将以升序存储。
句法:
SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];
不使用ASC / DESC属性的ORDER BY子句:
“雇员”表,具有以下数据:
Id | Name | address |
---|---|---|
1 | Lucky | Australia |
2 | Mayank | Ghaziabad |
3 | Rahul | Noida |
4 | Lily | LA |
SELECT * FROM Employees
WHERE name LIKE '%L%'
ORDER BY id;
输出:
Id | Name | address |
---|---|---|
4 | Lily | LA |
3 | Rahul | Noida |
2 | Mayank | Ghaziabad |
1 | Lucky | Australia |
有关更多信息:单击此处
当与SELECT语句一起使用时,MariaDB DISTINCT子句用于从结果中删除重复项。
句法:
SELECT DISTINCT expressions
FROM tables
[WHERE conditions];
注意:当您在DISTINCT子句中使用唯一的表达式时,查询将返回该表达式的唯一值。当您在DISTINCT子句中使用多个表达式时,查询将返回列出的多个表达式的唯一组合。
DISTINCT子句不会忽略NULL值。因此,当在SQL语句中使用DISTINCT子句时,结果集将包括NULL作为唯一值。
单个表达式:
我们有一个表名“ Students”,其中有一些重复的条目。名称“ Ajeet”重复三遍。
让我们使用DISTINCT子句从表中删除重复项。
SELECT DISTINCT student_name
FROM Students
WHERE student_name = 'Ajeet';
输出:
您可以看到“ Ajeet”在原始“ Students”表中重复了三遍,但是在使用DISTINCT子句后,它被返回一次并删除了重复的条目。
有关更多信息:单击此处
FROM子句与SELECT语句一起使用,以从表中检索数据。它也用于联接表。
句法:
SELECT columns_names FROM table_name;
例
让我们从“雇员”表中检索所有雇员。
SELECT * FROM Employees;
输出量
众所周知,FROM子句与SELECT子句一起用于联接两个表的数据。
让我们以INNER JOIN为例:一种最常见的联接类型,它从满足联接条件的多个表返回所有行。
我们有两个表“ Student”和“ Employee”。
使用以下语法根据给定的参数联接两个表:
SELECT Students.student_id, Students.student_name, Employee.salary
FROM Students
INNER JOIN Employee
ON Students.student_id = Employee.emp_id;
输出:
有关更多信息:单击此处
MariaDB COUNT()聚合函数用于返回表达式的计数。
COUNT()函数仅计算NOT NULL值。
COUNT(*)计算表中的总行数。
如果没有匹配的行,则COUNT()将返回0。
句法:
SELECT COUNT(aggregate_expression)
FROM tables
[WHERE conditions];
例
我们有一个“学生”表,其中包含以下数据:
计算“学生”表中的“ student_id”:
SELECT COUNT(student_id)
FROM Students;
有关更多信息:单击此处
MariaDB SUM函数用于返回表达式的求和值。
如果表没有任何行,则SUM()返回NULL。 DISTINCT关键字也与SUM()一起用于仅对表达式的不同值求和。
句法:
SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];
例
CREATE TABLE EMP (emp_id, emp_salery);
INSERT INTO EMP VALUES (1,1000),(2,2000),(3,5000);
SELECT *FROM EMP;
表:EMP
emp_id | emp_salery |
---|---|
1 | 1000 |
2 | 2000 |
3 | 5000 |
SELECT SUM (emp_salery) FROM EMP WHERE emp_id>2;
输出:
5000
有关更多信息:单击此处
MariaDB MIN()函数用于检索表达式的最小值。
MIN()也可以使用字符串参数,在这种情况下,它将返回最小的字符串值。
如果没有匹配的行,则MIN()返回NULL。
句法:
SELECT MIN(aggregate_expression)
FROM tables
[WHERE conditions];
例
我们有一个“学生”表,其中包含以下数据:
让我们使用MIN()函数检索最低工资。
SELECT MIN(salary) AS "Lowest Salary"
FROM Student;
输出:
让我们再举一个例子:
SELECT name, MIN(score) FROM student GROUP BY name;
要检查MIN字符串:
SELECT MIN(name) FROM student;
有关更多信息:单击此处
MariaDB MAX()函数用于检索表达式的最大值。
MAX()也可以使用字符串参数,在这种情况下,它将返回最大字符串值。
如果没有匹配的行,则MAX()返回NULL。
句法:
SELECT MAX(aggregate_expression)
FROM tables
[WHERE conditions];
例
我们有一个“学生”表
列出最高分数的学生姓名:
要检查最大字符串名称:
有关更多信息:单击此处
MariaDB AVG()函数用于检索表达式的平均值。
如果没有匹配的行,则AVG()返回NULL。
句法:
SELECT AVG(aggregate_expression)
FROM tables
[WHERE conditions];
要么
SELECT expression1, expression2, ... expression_n,
AVG (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, ... expression_n;
例
我们有一个表“ Employee2”,其中包含以下数据:
让我们从表中检索员工的平均工资。
SELECT AVG(salary) AS "Average Salary"
FROM Employee2;
输出量
注意:我们也可以将平均值函数与公式和ORDER BY子句一起使用。
有关更多信息:单击此处
JOIN用于从两个或多个表中检索数据。默认情况下,JOIN也称为INNER JOIN。它与SELECT语句一起使用。
MariaDB中的联接主要有两种:
内部联接:
MariaDB INNER JOIN是最常见的联接类型,它从满足联接条件的多个表返回所有行。
句法:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
例
我们有两个表“ Students”和“ Employee2”。
学生桌
Employee2表
执行以下命令:
SELECT Students.student_id, Students.student_name, Employee2.salary
FROM Students
INNER JOIN Employee2
ON Students.student_id = Employee2.emp_id;
输出量
外连接:
同样,OUTER JOIN分为两种类型:
左联接:
MariaDB LEFT OUTER JOIN用于返回在ON条件中指定的左侧表中的所有行,并且仅返回满足连接条件的其他表中的所有行。
LEFT OUTER JOIN也称为LEFT JOIN。
句法:
SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
例
SELECT Students.student_id, Students.student_name,
Students.student_address,
Employee2.salary, Employee2.emp_address
FROM Students
LEFT JOIN Employee2
ON Students.student_id = Employee2.emp_id;
输出量
正确加入:
MariaDB RIGHT OUTER JOIN用于返回在ON条件中指定的右侧表中的所有行,并且仅返回其他表中满足连接条件的其他表中的行。
MariaDB RIGHT OUTER JOIN也称为RIGHT JOIN。
句法:
SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
例
SELECT Students.student_id, Students.student_name,
Students.student_address, Employee2.salary,
Employee2.emp_address
FROM Students
RIGHT JOIN Employee2
ON Students.student_id = Employee2.emp_id;
MariaDB INNER JOIN是最常见的联接类型,它从满足联接条件的多个表返回所有行。
句法:
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;
我们有两个表的站点和页面:
网站表:
site_id | site_name |
---|---|
100 | javatpoint.com |
200 | Facebook.com |
300 | Yahoo.com |
400 | Google.com |
页数表:
page_id | site_id | page_title |
---|---|---|
1 | 100 | MariaDB |
2 | 100 | MySQL |
3 | 200 | Java interview questions |
4 | 300 | Software testing |
5 | 500 | Flight booking |
现在执行以下命令:
SELECT sites.site_id, sites.site_name, pages.page_id, pages.page_title FROM sites INNER JOIN pages ON sites.site_id= page.site_id
输出:
site_id | site_name | page_id | page_title |
---|---|---|---|
100 | javatpoint | 1 | MariaDB |
100 | javatpoint | 2 | MySQL |
200 | Facebook.com | 3 | Java interview questions |
300 | Yahoo.com | 4 | Software testing |
有关更多信息:单击此处
MariaDB LEFT OUTER JOIN用于返回在ON条件中指定的左侧表中的所有行,并且仅返回满足连接条件的其他表中的所有行。
LEFT OUTER JOIN也称为LEFT JOIN。
句法:
SELECT columns
FROM table1
LEFT [OUTER] JOIN table2
ON table1.column = table2.column;
例
我们有两个表的站点和页面:
网站表:
site_id | site_name |
---|---|
100 | javatpoint.com |
200 | Facebook.com |
300 | Yahoo.com |
400 | Google.com |
页数表:
page_id | site_id | page_title |
---|---|---|
1 | 100 | MariaDB |
2 | 100 | MySQL |
3 | 200 | Java interview questions |
4 | 300 | Software testing |
5 | 500 | Flight booking |
现在执行以下命令:
SELECT sites.site_id, sites.site_name, pages.page_id, pages.page_title FROM sites LEFT JOIN pages ON sites.site_id= pages.site_id
输出:
site_id | site_name | page_id | page_title |
---|---|---|---|
100 | javatpoint | 1 | MariaDB |
100 | javatpoint | 2 | MySQL |
200 | Facebook.com | 3 | Java interview questions |
300 | Yahoo.com | 4 | Software testing |
400 | Google.com | null | null |
由于加入了LEFT JOIN,因此也包含了Site_name Google.com。
有关更多信息:单击此处
MariaDB RIGHT OUTER JOIN用于返回在ON条件中指定的右侧表中的所有行,并且仅返回其他表中满足连接条件的其他表中的行。
MariaDB RIGHT OUTER JOIN也称为RIGHT JOIN。
句法:
SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2
ON table1.column = table2.column;
例
我们有两个表的站点和页面:
网站表:
site_id | site_name |
---|---|
100 | javatpoint.com |
200 | Facebook.com |
300 | Yahoo.com |
400 | Google.com |
页数表:
page_id | site_id | page_title |
---|---|---|
1 | 100 | MariaDB |
2 | 100 | MySQL |
3 | 200 | Java interview questions |
4 | 300 | Software testing |
5 | 500 | Flight booking |
现在执行以下命令:
SELECT sites.site_id, sites.site_name, pages.page_id, pages.page_title FROM sites RIGHT JOIN pages ON sites.site_id= pages.site_id
输出:
site_id | site_name | page_id | page_title |
---|---|---|---|
100 | javatpoint | 1 | MariaDB |
100 | javatpoint | 2 | MySQL |
200 | Facebook.com | 3 | Java interview questions |
300 | Yahoo.com | 4 | Software testing |
null | null | 5 | Flight booking |
由于RIGHT JOIN,page_id和page_title包含值。
有关更多信息:单击此处
MariaDB函数是一个存储程序,用于将参数传递给它们并返回值
我们可以轻松地在MariaDB中创建和删除函数。
#创建函数(MariaDB):
您可以在MariaDB中创建自己的函数:
句法:
CREATE
[ DEFINER = { CURRENT_USER | user_name } ]
FUNCTION function_name [ (parameter datatype [, parameter datatype]) ]
RETURNS return_datatype [ LANGUAGE SQL
| DETERMINISTIC
| NOT DETERMINISTIC
| { CONTAINS SQL
| NO SQL
| READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'comment_value'
BEGIN
declaration_section
executable_section
END;
例
在MariaDB数据库中创建函数CalcValue。
DELIMITER //
CREATE FUNCTION CalcValue ( starting_value INT )
RETURNS INT DETERMINISTIC
BEGIN
DECLARE total_value INT;
SET total_value = 0;
label1: WHILE total_value <= 3000 DO
SET total_value = total_value + starting_value;
END WHILE label1;
RETURN total_value;
END; //
DELIMITER ;
DEFINER子句:这是一个可选子句。如果未指定,则定义者是创建函数的用户。如果要指定其他定义器,则必须包括DEFINER子句,其中user_name是函数的定义器。
function_name :它指定要在MariaDB中分配给此函数的名称。
return_datatype :它指定函数返回值的数据类型。
语言SQL :它具有可移植性的语法,但对函数没有影响。
DETERMINISTIC :这意味着该函数将始终在给定一组输入参数的情况下返回一个结果。
不确定:表示给定一组输入参数,该函数可能返回不同的结果。结果可能会受到表数据,随机数或服务器变量的影响。
CONTAINS SQL :这是默认值。它是一条信息性的子句,告诉MariaDB该函数包含SQL,但是数据库不验证这是否正确。
No SQL :不会使用的信息性子句,不会对函数产生影响。
READS SQL DATA :一个提供信息的子句,告诉MariaDB该函数将使用SELECT语句读取数据,但不修改任何数据。
MODIFIES SQL DATA :告知性条款,告诉MariaDB该函数将使用INSERT,UPDATE,DELETE或其他DDL语句修改SQL数据。
clarification_section :函数中声明局部变量的位置。
execute_section :函数中输入函数代码的位置。
输出:
MariaDB DROP功能
您可以非常轻松地从数据库中删除创建的函数。
句法:
DROP FUNCTION [ IF EXISTS ] function_name;
参数说明
function_name :它指定要删除的函数的名称。
例
我们创建了一个函数名称“ CalcValue”。现在删除函数。
DROP FUNCTION CalcValue;
现在您可以看到该函数已删除,不再存在于列表中。
过程是数据库中的某种功能。当您要重复执行任务时,将创建过程。
MariaDB过程是一个存储程序,用于将参数传递给它。它不像函数那样返回值。
您可以创建和删除诸如函数之类的过程。
#创建过程(MariaDB):
您可以像在MariaDB中创建函数一样创建过程。
句法:
CREATE
[ DEFINER = { CURRENT_USER | user_name } ]
PROCEDURE procedure_name [ (parameter datatype [, parameter datatype]) ]
[ LANGUAGE SQL
| DETERMINISTIC
| NOT DETERMINISTIC
| { CONTAINS SQL
| NO SQL
| READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'comment_value'
BEGIN
declaration_section
executable_section
END;
DEFINER子句:可选。
procedure_name :在MariaDB中分配给此过程的名称。
参数:一个或多个参数传递给过程。创建过程时,可以声明三种类型的参数:
IN :该参数可以由过程引用。该过程不能覆盖参数的值。
OUT :该过程无法引用该参数,但是该过程可以覆盖该参数的值。
IN OUT :该参数可以由该过程引用,并且该参数的值可以由该过程覆盖。
语言SQL :它具有可移植性的语法,但对函数没有影响。
DETERMINISTIC :这意味着该函数将始终在给定一组输入参数的情况下返回一个结果。
不确定:表示给定一组输入参数,该函数可能返回不同的结果。结果可能会受到表数据,随机数或服务器变量的影响。
CONTAINS SQL :这是默认值。它是一条信息性的子句,告诉MariaDB该函数包含SQL,但是数据库不验证这是否正确。
No SQL :这是一个翔实的子句,不使用,不会对函数产生影响。
READS SQL DATA :这是一个提供信息的子句,它告诉MariaDB该函数将使用SELECT语句读取数据,但不修改任何数据。
MODIFIES SQL DATA :它是一个信息性子句,告诉MariaDB该函数将使用INSERT,UPDATE,DELETE或其他DDL语句修改SQL数据。
clarification_section :过程中声明局部变量的位置。
execute_section :过程中输入过程代码的位置。
例
在MariaDB数据库中创建一个名为“ CalcValue”的过程。
DELIMITER //
CREATE procedure CalcValue ( OUT ending_value INT )
DETERMINISTIC
BEGIN
DECLARE total_value INT;
SET total_value = 50;
label1: WHILE total_value <= 3000 DO
SET total_value = total_value * 2;
END WHILE label1;
SET ending_value = total_value;
END; //
DELIMITER ;
过程创建成功:
您可以参考以下新程序
MariaDB DROP过程:
您可以使用以下命令删除过程:
句法:
DROP procedure [ IF EXISTS ] procedure_name;
参数说明:
procedure_name :它指定要删除的过程的名称。
例
DROP procedure CalcValue;
您可以看到该过程现在已被删除,并且在列表中不可用。