下面列出了最常见的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 |
---|---|---|
1007 | 无法创建数据库”学生”;数据库存在 |
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 "srcmini" database.
DROP TABLE Students;
你可以验证该表是否已删除。
SHOW TABLES; //command
输出
欲了解更多信息, 请点击此处
8)如何在MariaDB数据库的表中插入记录?
INSERT INTO语句用于在MariaDB数据库的表中插入记录。
语法
INSERT INTO tablename (field, field2, ...) VALUES (value, value2, ...);
Or
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 srcmini.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];
Or
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 |
---|---|---|
Lucky | Australia | |
Mayank | Ghaziabad | |
Rahul | Noida | |
Lily | LA |
SELECT * FROM Employees
WHERE name LIKE '%L%'
ORDER BY id;
输出
Id | Name | address |
---|---|---|
Lily | LA | |
Rahul | Noida | |
Mayank | Ghaziabad | |
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';
输出
你可以看到在原始” Students”表中” Ajeet”被重复了三次, 但是在使用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 |
---|---|
1000 | |
2000 | |
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];
Or
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 |
---|---|
srcmini02.com | |
Facebook.com | |
Yahoo.com | |
Google.com |
页数表:
page_id | site_id | page_title |
---|---|---|
100 | MariaDB | |
100 | MySQL | |
200 | Java面试题 | |
300 | Software testing | |
500 | 机票预订 |
现在执行以下命令:
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 |
---|---|---|---|
srcmini | 1 | MariaDB | |
srcmini | 2 | MySQL | |
Facebook.com | 3 | Java面试题 | |
Yahoo.com | 4 | 软件测试 |
欲了解更多信息, 请点击此处
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 |
---|---|
srcmini02.com | |
Facebook.com | |
Yahoo.com | |
Google.com |
页数表:
page_id | site_id | page_title |
---|---|---|
100 | MariaDB | |
100 | MySQL | |
200 | Java面试题 | |
300 | 软件测试 | |
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 |
---|---|---|---|
srcmini | 1 | MariaDB | |
srcmini | 2 | MySQL | |
Facebook.com | 3 | Java面试题 | |
Yahoo.com | 4 | 软件测试 | |
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 |
---|---|
srcmini02.com | |
Facebook.com | |
Yahoo.com | |
Google.com |
页数表:
page_id | site_id | page_title |
---|---|---|
100 | MariaDB | |
100 | MySQL | |
200 | Java面试题 | |
300 | Software testing | |
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 |
---|---|---|---|
srcmini | 1 | MariaDB | |
srcmini | 2 | MySQL | |
Facebook.com | 3 | Java面试题 | |
Yahoo.com | 4 | 软件测试 | |
null | 5 | 机票预订 |
由于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:该语言具有可移植性, 但对功能没有影响。
确定性:这意味着该函数将始终在给定一组输入参数的情况下返回一个结果。
不确定:这意味着在给定一组输入参数的情况下, 该函数可能返回不同的结果。结果可能会受到表数据, 随机数或服务器变量的影响。
包含SQL:这是默认值。它是一条信息性的子句, 告诉MariaDB该函数包含SQL, 但是数据库未验证这是否正确。
No SQL:不会使用的信息性子句, 不会对函数产生影响。
READS SQL DATA:信息性子句, 告诉MariaDB该函数将使用SELECT语句读取数据, 但不修改任何数据。
MODIFIES SQL DATA:一条信息性条款, 告诉MariaDB该函数将使用INSERT, UPDATE, DELETE或其他DDL语句修改SQL数据。
clarification_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:该语言具有可移植性, 但对功能没有影响。
确定性:这意味着该函数将始终在给定一组输入参数的情况下返回一个结果。
不确定:这意味着在给定一组输入参数的情况下, 该函数可能返回不同的结果。结果可能会受到表数据, 随机数或服务器变量的影响。
包含SQL:这是默认值。它是一条信息性的子句, 告诉MariaDB该函数包含SQL, 但是数据库未验证这是否正确。
No SQL:这是一个翔实的子句, 不使用, 不会对函数产生影响。
READS SQL DATA:这是一个信息性条款, 告诉MariaDB该函数将使用SELECT语句读取数据, 但不修改任何数据。
修改SQL数据:这是一个信息性条款, 告诉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;
你可以看到该过程现在已被删除, 并且在列表中不可用。
注意
1
2
3
4
4
3
2
1
1
2
3
100
200
300
400
1
2
3
4
5
100
100
200
300
100
200
300
400
1
2
3
4
5
100
100
200
300
400
100
200
300
400
1
2
3
4
5
100
100
200
300
null
评论前必须登录!
注册