📜  MariaDB面试问题

📅  最后修改于: 2020-11-30 00:58:09             🧑  作者: Mango

MariaDB面试问题

下面列出了最常见的MariaDB面试问题和答案列表

1)什么是MariaDB?

MariaDB是一个流行的,开放源代码的,由MySQL开发人员开发的基于社区的项目。它是一种关系数据库管理技术,提供与MySQL相同的功能。它是MySQL的新替代品。

MariaDB将数据转换为结构化的各种应用程序,从银行到网站。之所以使用MariaDB,是因为它具有存储引擎,插件和许多其他工具的覆盖范围生态系统的快速,可扩展性和鲁棒性,使其可广泛用于各种用例。

MariaDB的最新版本(版本10.4)还包括GIS和JSON功能。

有关更多信息:单击此处

2)MariaDB的主要功能是什么?

MariaDB通过一些扩展提供了MySQL的相同功能。这是相对较新的进步。

MariaDB的功能列表:

  • MariaDB可以在不同的操作系统上运行,并支持多种编程语言。
  • MariaDB已获得GPL,LGPL或BSD的许可。
  • MariaDB遵循一种标准且流行的查询语言。
  • MariaDB提供Galera集群技术。
  • MariaDB支持最流行的Web开发语言PHP。
  • MariaDB包括各种各样的存储引擎,包括用于与其他RDBMS数据源一起工作的高性能存储引擎。
  • MariaDB还提供了许多MySQL中不可用的操作和命令,并消除/替换了对性能有负面影响的功能。
  • MariaDB的速度是其显着特征之一。它具有出色的可伸缩性,可以处理成千上万的表和数十亿行的数据。

有关更多信息:单击此处

3)如何在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;

有关更多信息:单击此处

4)如何在MariaDB中使用数据库?

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. 

有关更多信息:单击此处

5)如何在MariaDB中删除数据库?

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):无法删除数据库“学生”;数据库不存在

有关更多信息:单击此处

6)如何在MariaDB的数据库中创建表?

首先,您必须在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;   

有关更多信息:单击此处

7)如何删除MariaDB数据库中的表?

DROP TABLE命令用于从MariaDB中的数据库中删除表。它会永久删除该表,并且无法恢复。您必须对每个表都具有DROP特权。所有表数据和表定义以及与表关联的触发器都将被删除,因此使用此语句非常小心!

如果在参数列表中命名的任何表都不存在,MariaDB将返回一个错误,按名称指示不能删除哪些不存在的表,但也会删除列表中存在的所有表。

句法:

DROP TABLE table_name ;        

Drop the table "Students" created within "Javatpoint" database.
DROP TABLE Students;

您可以验证该表是否已删除。

SHOW TABLES; //command

输出量

有关更多信息:单击此处

8)如何在MariaDB数据库的表中插入记录?

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';

有关更多信息:单击此处

9)如何从MongoDB数据库的表中检索记录?

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;   

有关更多信息:单击此处

10)如何从表中检索有限数量的记录?

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;  

有关更多信息:单击此处

11)您如何更改或更新MariaDB表的已插入记录?

UPDATE语句用于更改,更新或修改MariaDB表的现有记录。它可以与WHERE,ORDER BY和LIMIT子句一起使用。

句法:

UPDATE table_name SET field=new_value, field2=new_value2,...  
[WHERE ...] 

例如

我们有一个表“ Test”,其中包含以下数据:

让我们更改“ title”为“ Welcome to MariaDB”,其中“ title”为“ Hello”。

有关更多信息:单击此处

12)MariaDB中的DELETE语句有什么用?

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”。

同样,您可以使用多个条件删除数据。

有关更多信息:单击此处

13)TRUNCATE语句的用途是什么?它与DELETE语句有何不同?

TRUNCATE TABLE语句用于永久删除表。它从表中删除所有记录。

句法:

TRUNCATE [TABLE] [database_name.]table_name;

DELETE和TRUNCATE语句之间的区别:

  • DELETE语句用于从一个表以及整个表中删除一个或多个列。另一方面,TRUNCATE TABLE语句用于永久删除整个表。
  • TRUNCATE TABLE语句与不带WHERE子句的DELETE语句相同。
  • DELETE语句一次删除一行,并在事务日志中为每个删除的行记录一个条目。
  • TRUNCATE TABLE通过取消分配用于存储表数据的数据页面并仅在事务日志中记录页面取消分配来删除数据。因此,它比delete语句快。

让我们截断表“ Students”。

TRUNCATE TABLE javatpoint.Students;   

输出:

 Query OK, 0 rows affected (0.031sec).

TRUNCATE查询成功执行。您可以看到“学生”表中的记录已被永久删除。

SELECT * FROM Students;   

输出:

No record found.

有关更多信息:单击此处

14)什么是聚合函数? MariaDB中有几种类型的聚合函数?

在关系数据库管理系统中,聚合函数是将多行的值组合在一起作为某些条件下的输入的函数,并提供具有更重要含义的单个值(例如列表,集合等)。

以下是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)

15)MariaDB中使用的子句有哪些不同类型?

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;

等等。

16)WHERE子句的用途是什么?

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;   

输出:

有关更多信息:单击此处

17)MariaDB中LIKE子句的用途是什么?

当操作需要完全匹配时,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%';  

有关更多信息:单击此处

18)MariaDB中ORDER BY子句的用途是什么?

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

有关更多信息:单击此处

19)MariaDB DISTINCT子句的用途是什么?

当与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子句后,它被返回一次并删除了重复的条目。

有关更多信息:单击此处

20)为什么我们在SELECT语句中使用FROM子句?

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;   

输出:

有关更多信息:单击此处

21)COUNT()聚合函数的用途是什么?

MariaDB COUNT()聚合函数用于返回表达式的计数。

COUNT()函数仅计算NOT NULL值。

COUNT(*)计算表中的总行数。

如果没有匹配的行,则COUNT()将返回0。

句法:

SELECT COUNT(aggregate_expression)    
FROM tables    
[WHERE conditions];      

我们有一个“学生”表,其中包含以下数据:

计算“学生”表中的“ student_id”:

SELECT COUNT(student_id)  
FROM Students;   

有关更多信息:单击此处

22)MariaDB SUM()函数的用途是什么?

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

有关更多信息:单击此处

23)MariaDB中MIN()函数的用法是什么?

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;

有关更多信息:单击此处

24)MariaDB中MAX()函数的用法是什么?

MariaDB MAX()函数用于检索表达式的最大值。

MAX()也可以使用字符串参数,在这种情况下,它将返回最大字符串值。

如果没有匹配的行,则MAX()返回NULL。

句法:

SELECT MAX(aggregate_expression)    
FROM tables    
[WHERE conditions];

我们有一个“学生”表

列出最高分数的学生姓名:

要检查最大字符串名称:

有关更多信息:单击此处

25)MariaDB数据库中AVG()函数的用法是什么?

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子句一起使用。

有关更多信息:单击此处

26)什么是JOIN? MariaDB中有多少种JOIN类型?

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;  

27)什么是MariaDB INNER JOIN?

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

有关更多信息:单击此处

28)什么是MariaDB中的LEFT 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;    

我们有两个表的站点和页面:

网站表:

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。

有关更多信息:单击此处

29)什么是MariaDB中的RIGHT OUTER JOIN?

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包含值。

有关更多信息:单击此处

30)MariaDB中的函数是什么?如何在MariaDB中创建和删除函数?

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;

现在您可以看到该函数已删除,不再存在于列表中。

31)什么是数据库中的过程或存储过程?

过程是数据库中的某种功能。当您要重复执行任务时,将创建过程。

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;

您可以看到该过程现在已被删除,并且在列表中不可用。