Contents:
- MariaDB Basics
- Differences between MariaDB and MySQL
- Important features of MariaDB
- Install MariaDB on Ubuntu
- Create a user with all privileges
- Make Connection with MariaDB
- Create and Delete Database
- MariaDB Data types
- Create and Delete tables
- CRUD operations
- Use of clauses
- Use of comparison operator
- Use of logical operator
- Use of aggregate functions
MariaDB Basics
It is an open-source relational database server that can be used with the application without any cost to store important data. It is the improved version of the MySQL server. A client application or any script can be used to make the connection with the database server. The default client of the MariaDB database is mysql. The connection to the MariaDB database can be created from the terminal by using the client. Any Graphical User Interface(GUI) tool can be used also to make the connection with the MariaDB database such as phpMyAdmin. You can use any server-side scripting language such as PHP, Perl, Python, etc. to make the connection with the MariaDB database server. The ways to make the database connections from the terminal, using the GUI tool and using the PHP script are shown in the “Make Connection with MariaDB” part of this tutorial.
Difference Between MariaDB and MySQL
MariaDB and MySQL have many major differences. Some of them are mentioned in the following table:
MariaDB | MySQL |
---|---|
It can be used without any cost. | It has both free and paid versions. |
It is released in 2009. | It is released in 1995. |
It is developed by using C, C++, Perl, and Bash languages. | It is developed by using C and C++ languages. |
It works faster. | It works slower. |
It supports many new database engines. | It supports fewer database engines. |
It does not support data masking and dynamic tools. | It supports data masking and dynamic tools. |
It supports large numbers of connections. | It supports a small number of connections. |
It supports binary encryption and a temporary table. | It does not support binary encryption and a temporary table. |
Important Features of MariaDB
Some important features of the MariaDB database server are mentioned in the following:
- It is open-sourced and licensed under GPL, LGPL, or BSD.
- It is robust and scalable.
- It uses popular and standard query language.
- It is supported by different operating systems.
- It can be used with different programming languages.
- It updates the index automatically.
- It supports many scripting languages and Galera cluster technology.
Install MariaDB in Ubuntu
You have to install MariaDB in the Ubuntu operating system to do the database-related tasks.
Run the following command to update the system:
Run the following command to install the MariaDB server:
Run the following command to execute the security script of the MariaDB that will help the users to modify some default settings of the MariaDB server:
The following output appears after executing the security script. You can set the root password here or keep the password blank by pressing enter:
Next, many other security options will appear and the user will select the required options to modify the default settings. After setting, run the following command to check the installed version of the MariaDB server and whether it is working properly or not:
The following output shows that the MariaDB version 10.5.15 has been installed:
Create a User with All Privileges
You can create a new user with all privileges by executing the following command with the username and password.
WITH GRANT OPTION;
The following output shows that a user named ‘fahmida’ has been created with all privileges. The password of the user is ‘secret’.
Now, run the following command from the terminal to connect with the MariaDB server by using the new user credentials:
Make Connection with MariaDB
The connection to the MariaDB server can be implemented by using any client application or by using any scripting language that is discussed earlier. In this part, the way to connect MariaDB server by using mysql client, GUI interface, and PHP script is shown.
1. Using Mysql Client
Run the following command to connect with the MariaDB server using the mysql client:
The following prompt appears if the log in to the server is successful.
2. Using PHPMyAdmin
You have to install the PHPMyAdmin package earlier which is not shown here. Open the browser and run the following URL to open the login form to connect with the database server.
Type the valid username and password to log in to the server.
The following interface appears if the login to the server is successful. The version of the installed MariaDB server is shown in the Database server section.
3. Using PHP Script
Create a PHP file with the following script to make the connection with the database server. The script prints a success message if the database connection is successful. Otherwise, it prints a failure message.
//Initialize connection variable
$username = 'fahmida';
$password = 'secret';
$host = 'localhost';
//Create a connection with the database server
$db_connection = new mysqli($host, $username, $password);
//Check the connection
if(!$db_connection)
die('Unable to connect with the database server.' . mysql_error());
echo 'Connected to the database server successfully.';
mysql_close($db_connection);
?>
The following output shows that the database connection is successful:
Create and Delete Database
The SQL to create and delete the Database is mentioned in the following:
Create Database Syntax:
CREATE DATABASE [IF NOT EXISTS] db_name
Here, IF NOT EXISTS option is optional. It is used to check whether the database is created before or not. If the database is created before, the database will not create again.
Example:
The following SQL statement creates the database named test if it is not created before.
The following output shows that the database is created successfully:
Delete Database Syntax:
DROP DATABASE db_name
Any existing database can be deleted by using the preivous DROP command.
Example:
The following output shows that the database test has been deleted:
MariaDB Data Types
The table of the MariaDB database supports the various data types to store the different types of data. MariaDB data types are categorized into four groups. These are given in the following:
A. Numeric Data Types
Many types of the numeric data types can be used to store the number values in MariaDB database tables. The purposes of using the different numeric data types are described in the following table:
Numeric Data types | Purposes |
---|---|
BOOLEAN | It is used to store TRUE or FALSE values. |
TINYINT | It is used to store a very small integer. |
SMALLINT | It is used to store a small integer. |
MEDIUMINT | It is used to store a medium-sized integer. |
INT | It is used to store an integer. |
BIGINT | It is used to store a very big integer. |
DECIMAL | It is used to store fixed-point numbers. |
FLOAT | It is used to store a single-precision floating-point number. |
DOUBLE | It is used to store a double-precision floating-point number. |
BIT | It is used to store a bit of value. |
B. String Data Types
Many types of string data types can be used to store the character or string values in MariaDB database tables. The purposes of using the different string data types are described in the following table:
String Data Types | Purposes |
---|---|
CHAR | It is used to store a fixed-length character string. |
VARCHAR | It is used to store a variable-length character string. |
TINYTEXT | It is used to store a very small non-binary string. |
TEXT | It is used to store a small non-binary string. |
MEDIUMTEXT | It is used to store a medium-sized non-binary string. |
LONGTEXT | It is used to store a large non-binary string. |
TINYBLOB | It is used to store a very small binary large object. |
BLOB | It is used to store a small binary large object. |
MEDIUMBLOB | It is used to store a medium-sized binary large object. |
LONGBLOB | It is used to store a very large binary large object. |
BINARY | It is used to store a fixed-length binary string. |
VARBINARY | It is used to store a variable-length binary string. |
ENUM | It is used to store the enumeration data. |
SET | It is used to store the set data. |
C. Temporal Data Types
Temporal data types are used to store the data and the time-related data in the database tables. The purposes of using the different temporal data types are described in the following table:
Temporal Data Types | Purposes |
---|---|
DATE | It is used to store the date value in the format, YYYY-MM-DD. |
TIME | It is used to store the time value in the format, hh:mm:ss. |
DATETIME | It is used to store the date and time value in the format, YYYY-MM-DD hh:mm:ss. |
TIMESTAMP | It is used to store the current date and time value in the format, YYYY-MM-DD hh:mm:ss. |
YEAR | It is used to store the value in 2-digits format (YY) or 4-digits format (YYYY). |
D. Spatial Data Types
Many spatial data types are used to store the various geographical values in the MariaDB database tables. The purposes of using the different spatial data types are described in the following table:
Spatial Data Types | Purposes |
---|---|
POINT | It is used to store point values (X and Y coordinates. |
MULTIPOINT | It is used to store the collection of point values. |
POLYGON | It is used to store polygon values. |
MULTIPOLYGON | It is used to store the collection of polygon values. |
GEOMETRY | It is used to store the spatial value of any type. |
GEOMETRYCOLLECTION | It is used to store the collection of geometry values. |
LINESTRING | It is used to store curve value. |
MULTILINESTRING | It is used to store the collection of LINESTRING values. |
The uses of some data types for creating a table are shown in the next part of this tutorial.
Create and Delete Tables
The way of creating and deleting the tables of the MariaDB database are shown in this part.
Create Table Syntax:
column_1_definition,
column_2_definition,
column_2_definition,
...,
table_constraints
) engine=storage_engine;
Here, IF NOT EXISTS option is optional and it is used to create the table if the table is not created before. A unique table name is used after the CREATE TABLE keyword to create the table. Next, the list of column names with the data types and necessary attributes are defined for the table. Each column name is separated by a comma. Lastly, the storage engine name of the table is defined. The default storage engine name is InnoDB if no engine type is defined at the time of the table creation.
Each column definition of the table can contain the following options:
The unique name is used for each column of the table followed by a data type that is supported by the MariaDB database. The NOT NULL attribute is used with the column name if the column can’t store the NULL value. The DEFAULT VALUE attribute is used to store a default value in the column if no value is inserted in the column at the insertion time. The AUTO_INCREMENT attribute is used to increment the value of the by 1 automatically. This attribute is mainly used for the PRIMARY KEY column.
Example:
Run the following command to create a database named testdb if it is not created before:
Run the following command to select the testdb database:
Run the following command to create a table named products 6 fields of the different data types:
id int auto_increment,
name varchar(255) not null,
type varchar(50) not null,
manufacturing_date date not null,
expire_date date not null,
price decimal(5,2) not null,
primary key(id)
);
The following output appears if the table is created successfully:
Delete Table Syntax:
DROP TABLE [IF EXISTS] table_name;
IF EXISTS option can be used to check whether the table already exists or not before creating the table.
Example:
The following output appears if the table is deleted successfully:
CRUD Operations
CRUD operations indicate the four types of operations. These are Create/Insert, Read/Select, Update, and Delete records into the table. These operations are explained with the examples in this part.
1. Insert Data
Run the following INSERT query to insert a single record into the products table:
(name, type, manufacturing_date, expire_date, price)
VALUES ("Diploma Milk 1 KG","Milk","2022-01-12","2023-01-12", 600);
The following output appears if a new record is inserted successfully into the table:
Run the following INSERT query to insert three records into the products table:
(name, type, manufacturing_date, expire_date, price)
VALUES ("FRESH Oil 5 KG","Oil","2022-06-15","2024-05-15", 900),
("Teer Salt 1 KG","Salt","2022-02-10","2023-02-11", 50),
("FRESH Sugar 1 KG","Sugar","2022-05-25","2024-01-19", 100) ;
The following output appears if three records are inserted successfully into the table:
2. Read Data
Run the following SELECT query to read all records from the products table:
The following output appears if the SELECT query works properly:
3. Update Data
Run the following UPDATE query that updates the values of the type and price fields if the id value of the row is 1.
SET type = "Powder Milk", price = 650
WHERE id = 1;
The following output appears if the UPDATE query works properly:
4. Delete Data
Run the following DELETE query that deletes the record(s) from the products table where the value of the type is “Sugar”:
The following output appears if the DELETE query works properly:
Run the following DELETE query to make the table empty:
Use of Clauses
Different clauses are used with the SELECT, INSERT, UPDATE, and DELETE queries. The uses of commonly used clauses are mentioned in the following:
- WHERE Clause
It is used with the SELECT, INSERT, UPDATE, and DELETE queries to filter the data. - FROM Clause
It is mainly used to select the data from the table. - DISTINCT Clause
It is used to retrieve a unique data from the table. - ORDER BY Clause
It is used to read the records of the table in sorted order. - GROUP BY Clause
It is used to retrieve the records from the table by grouping one or more columns. - HAVING Clause
It is used with the GROUP BY clause to retrieve the records based on the condition.
Example:
The uses of the ORDER BY clause are shown in the following example.
Run the following INSERT query to add three more records to the products table for testing purposes:
(name, type, manufacturing_date, expire_date, price)
VALUES ("Teer Oil 5 KG","Oil","2021-06-15","2023-05-15", 950),
("Arong Salt 500G","Salt","2020-02-19","2022-12-11", 20),
("FRESH Salt 1 KG","Salt","2022-06-25","2024-03-19", 55);
Run the following SELECT query to read all the records from the products table by ordering the price value in descending order.
ORDER BY price DESC;
The following output appears after executing the previous query:
Use of Comparison Operators
Different types of comparison operators are supported by the MariaDB server that is used with the WHERE clause of the query. Some commonly used comparison operators are mentioned in the following table:
Comparison Operator | Purpose |
---|---|
!= | It is used for not equal comparison. |
< | It is used for less than comparison. |
<= | It is used for less than or equal comparison. |
<=> | It is used for NULL-safe equal comparison. |
= | It is used for equal comparison. |
> | It is used for greater than comparison. |
>= | It is used for greater than or equal comparison. |
BETWEEN AND | It is used to check the values that are between the values. |
NOT BETWEEN | It is used to check the values that are not between the values. |
IN | It is used to check the values that match the list of the values. |
NOT IN | It is used to check the values that do not match the list of the values. |
IS NOT NULL | It is used to check whether the value is not NULL or not. |
IS NULL</td> | It is used to check whether the value is NULL or not. |
Example:
Run the following SELECT query with IN operator to read all the records that contain the “Salt” and “Oil” in the type field of the products table:
FROM products
WHERE type IN (“Salt”, “Oil”)
ORDER BY type;
The following output appears after executing the previous query:
Use of Logical Operators
Different types of logical operators are supported by the MariaDB server that is used with the WHERE clause of the query. Some commonly used logical operators are mentioned in the following table:
Logical Operator | Purpose |
---|---|
! | It is used for logical NOT comparison. |
&& | It is used for logical AND comparison. |
XOR | It is used for logical XOR comparison. |
|| | It is used for logical OR comparison. |
Example:
Run the following SELECT query that uses the logical OR to retrieve the records from the products table:
FROM products
WHERE type = “Powder Milk” || type = “Salt”;
The following output appears after executing the previous query:
Use of Aggregate Functions
Different types of aggregate functions are supported by the MariaDB server that is used with the SELECT query. Some commonly used aggregate functions are mentioned in the following table:
Aggregate function | Purpose |
---|---|
avg() | It is used to find out the average of non-null numbers. |
count() | It is used to count the number of rows in a table. |
group_concat() | It is used to concatenate the string from a group with various options. |
max() | It is used to find out the maximum value in a set. |
min() | It is used to find out the minimum value in a set. |
Sum() | It is used to find out the sum of a particular numeric field. |
Stddev() | It is used to find out the population standard deviation. |
Stddev_pop() | Same as stddev() |
stddev_samp() | It is used to find out the sample standard deviation. |
Var_pop() | It is used to find out the population standard variance. |
Varp_sam() | It is used to find out the sample variance. |
Variance() | Same as var_pop(). |
Bit_and() | It is used to find out the bitwise AND. |
Bit_or() | It is used to find out the bitwise OR. |
Bit_xor() | It is used to find out the bitwise XOR. |
Examples:
Run the following SELECT query that uses the COUNT() function to count the total number of rows of the products table:
FROM products;
The following output appears after executing the previous query:
Run the following SELECT query that uses the SUM() function to calculate the sum of the price field based on the value of the type field of the products table:
FROM products
GROUP BY type;
The following output appears after executing the previous query:
Run the following SELECT query that uses the MAX() function to find out the maximum price value of the products table:
FROM products;
The following output appears after executing the previous query:
Conclusion
The purposes of using the MariaDB database server and the basic uses of this server are explained in this tutorial. Many advanced-level features like the JOIN clause, functions, procedures, triggers, etc. are more useful features of this server that are not covered in this tutorial. The new database users will get the basic concept of the database server and be able to start working with the MariaDB server after reading this tutorial.