Mysql Interview Questions
MySQL is one of the widely used open-source database platforms in the world today. According to mysql.com website, this platform is trusted by the world’s 10 top sites that are considered trustworthy and are frequency visited. Overviewing these MySQL Interview Questions for experienced as well as individuals and the other crucial factors mentioned here can be remarkably result oriented for candidates and new learners to this niche.
|What is MySQL?||It the most popular Open Source database management system, is developed and supported by Oracle Corporation.|
|Latest Version||8.0.19 released in 14th December 2019|
|Created By||Oracle Corporation.|
|Written in||C and C++ language|
|About License||GNU Public License|
Best Mysql Interview Questions And Answers
MySQL is one of the widely used open source database platforms in the world today. The data in a MySQL database is stored in the form of tables, which consist of many columns and rows. It is a reliable, stable and robust platform with advanced performance and security features.
MySQL is used for a wide range of purposes like data warehousing, e-commerce, web applications, and logging applications.
- Don't use "sp_" while creating stored procedure.
- Dont use "*" while you are using SELECT command. Also avoid unnecessary columns in SELECT clause.
- You can use table aliases while writing queries.
- Avoid the usage of the wildcard (%) at the starting of a predicate.
- DISTINCT and UNION need to be used solely if it is necessary.
A database index is the structure of a fact that improves the velocity of operations in a table. It can be created the usage of one or greater columns, presenting the foundation for each fast random lookups and efficient ordering of getting admission to records. Indexes are used to locate rows with specific column values quickly.
|Primary Key||Unique Key|
|A table can hold only one primary key||It can be more than one unique key in one table|
|A Primary Key cannot be NULL.||A Unique key can have NULL.|
These are most commonly used storage engine in MySQL are MyISAM and InnoDB.
Difference between MyISAM and InnoDB are given below:-
- MyISAM does no longer support transactions, however InnoDB supports transactions.
- MyISAM helps Table-level Locking, however InnoDB supports Row-level Locking.
- MyISAM helps full-text search, however InnoDB does not.
- MyISAM designed for the need for speed but InnoDB designed for most performance.
- MyISAM does now not aid overseas keys, but InnoDB helps foreign keys.
- We can use commit and rollback with InnoDB however not in MyISAM.
- MyISAM does no longer assist ACID (Atomicity, Consistency, Isolation, and Durability) however InnoDB supports the ACID property.
- In the InnoDB table, the AUTO_INCREMENT field is a section of the index but now not in MyISAM.
- MyISAM stores its tables, data, and indexes in disk area the usage of a separate table name.FRM, desk name.MYD and table name.MYI however InnoDB stores its tables and indexes in a tablespace.
The default port is 3306. We can change it in
/etc/MySQL/my.conf there is a port variable. We can update this port according to our need
MySQL -u username -p database_name < file.sql
Here username is your database username like "root," database_name is your database name, file.sql is your SQL file name with complete path.
|Primary Key||Candidate Key|
|It is a column that uniquely identifies a record. In Mysql, only one candidate key can behave like Primary Key.||It can be any column that can qualify as a unique key in the database. In MySQL, there can be multiple candidate keys in one table. Each candidate key can behave like as a primary key.|
In Mysql, a trigger is a database object that is directly associated with a table. It will be activated when a defined action is executed for the table. It can be performed when you run one of the following MySQL like INSERT, UPDATE and DELETE occurred in a table. It's activation time can be BEFORE or AFTER
mysql> delimiter //
mysql> CREATE TRIGGER age_check BEFORE INSERT ON people FOR EACH ROW IF NEW.age < 0 THEN SET NEW.age = 0; END IF;
mysql> delimiter ;
SELECT * FROM EmployeeTable1 AS Emp1 WHERE (1) = ( SELECT COUNT(DISTINCT(Emp2.amount)) FROM EmployeeTable2 AS Emp2 WHERE Emp2.amount > Emp1.amount)
|NOW() give you the current date time in the format 'YYYY-MM_DD HH:MM: SS'||CURRENT_DATE() will only give you the current date in format "YYYY-MM_DD"|
Comparisons operators are used to comparing one expression to another value or expression. It is just like = , < , > , => , =<, <>
- It removes all rows from a table.
- It does not require a WHERE clause.
- Truncate cannot be used with indexed views.
- It is performance wise faster.
- It removes Some or All rows from a table.
- A WHERE clause is used to remove particular rows according to the matched condition. All rows will be deleted when we did not use Where condition in Query.
- It removes rows one by at a time.
- It can be used with indexed views.
- It removes a table from the database.
- All table's rows, indexes, and privileges will also be removed when we used this command.
- The operation cannot be rolled back.
IS NULL checks to see if the cell is empty but
IS NOT NULL checks to see if the cell is not empty.
SELECT id FROM users WHERE 'user_type' IS NOT NULL;
SELECT id FROM users WHERE 'user_type' NOT IS NULL;
Note: This is very essential MySQL query interview questions.
- Mysql is available free because it is open source, but SQL is not open-source.
- Mysql offers updatable views, but SQL offers indexed views that are more powerful.
- Mysql does not support XML, but SQL supports XML.
- Mysql not supported Auto tuning but SQL can.
- Mysql did not support User-defined functions, but SQL supported.
- Mysql support Transaction is very much limited but SQL support extensively and entirely offered.
- Mysql not offered Stored procedures and full joins but offered in SQL.
- Mysql does not support the Cursor feature but is there in SQL.
|MyISAM Dynamic||MyISAM static|
|This is a table storage format which is basically used when some columns in the existing tables use variable data types such as VARCHAR, BLOB, TEXT, VARBINARY, etc.)||This is also a table storage format which is basically used when all columns in the existing table’s uses fixed width data types.|
|The representation of data in MongoDB is totally different from Mysql, as in MongoDB data is represented in the collection of JSON documents.
MongoDB is an object-oriented database
|The representation of Mysql database is totally different form Mongodb, as in Mysql data is stored in the form of tables (Row and columns).
Mysql is a structured query database.
Binary data can be stored in Mysql in different ways such as
- The short length of binary data can be stored in the form of string as a VARCHAR
- A BLOB data type allows users to store an arbitrary amount of binary data.
DELETE FROM Admin WHERE id IN(SELECT * FROM(SELECT id FROM Admin GROUP BY name HAVING COUNT(*) > 1) AS A)
Regex is an operational and powerful pattern that can help the users for the implementation of a powerful search utility function for database systems. Moreover, it is an operator which is used when we require matching regular expressions. In addition to this, it also supports a wider range of meta-characters which allow flexibility and more control over the database structure when performing pattern matching.
Match beginning of string(^):
SELECT name FROM users WHERE name REGEXP '^bestinterviewquestion';
UPDATE `your_table_name` SET new_field=old_field
In general slow query, the log is basically used in Mysql for the determination of which database queries will take a long duration to run. Moreover, a slow query log in MySQL simplifies that operations in the context of efficient and time-consuming queries.
In order to enable the slow query log the command- Get global slow_query_log – ‘ON’; is used
The maximum size of the HEAP table can be controlled by the MySQL config variable called
SELECT id, GROUP_CONCAT(department SEPARATOR ' ') AS department FROM employee group by id;
Between operator is used to select a range of data between two values. It can be texts, numbers, and dates, etc.
Select * from TABLENAME where FIELDNAME between VALUE1 and VALUE2
IN operator is used to check for a value in the given set of values.
Select * from TABLENAME where FIELDNAME IN ('VALUE1','VALUE2',...)
The MySQL aggregate function performs a calculation on a set of values, and it returns a single value as output. It ignores NULL values when it performs calculation except for the COUNT function.
MySQL provides many aggregate functions that are listed below.
- MAX() etc
Functions are generally used for computations, but procedures are usually used for executing business logic.
The function returns only 1 value, but the procedure can return multiple values.
The function can be called directly by SQL statement like select functionName from dual, but procedures cannot be called directly.
The function can be used in the SQL Query directly, but a procedure can not be used in a SQL query.
In Mysql, joins are used to retrieve data from multiple tables. It is performed whenever two or more tables are joined.
There are three types of MySQL joins:-
- MySQL INNER JOIN
SELECT columns FROM table_1 INNER JOIN table_2 ON table_1.column = table_2.column;
- MySQL LEFT JOIN
SELECT columns FROM table_1 LEFT JOIN table_2 ON table_1.column = table_2.column;
- MySQL RIGHT JOIN
SELECT columns FROM table_1 RIGHT JOIN table_2 ON table_1.column = table_2.column;
- CHAR can have a maximum of 255 characters, but VARCHAR can hold a maximum of 65,535 characters.
- CHAR field is a fixed length, but VARCHAR is a variable length field.
- CHAR uses static memory allocation, but VARCHAR uses dynamic memory allocation.
SELECT std_id, COUNT(std_id) as cnt FROM Student GROUP by std_id having cnt > 1
SELECT id, name, department FROM Employee where MOD(id,2) = 1
SELECT * FROM Student where MOD(id,2) = 0
Create table std as Select * from Student;
SELECT EmpId, Project, Salary, COUNT(*)
GROUP BY EmpId, Project, Salary
HAVING COUNT(*) > 1;
SELECT * FROM EmployeeSalary
SELECT * FROM ManagerSalary
WHERE term is used for filtering rows, and it applies to every row but HAVING term is used to filter groups.
WHERE can be used without the GROUP BY but HAVING clause cannot be used without the GROUP BY.
These are the set of rules applied to columns on the table. It is used to bound the type of data that can go into a table.
Types of constraints
- PRIMARY KEY
- FOREIGN KEY
- Not NULL
SELECT DISTINCT name FROM Users;
// Here name is the field & Users is the Table name
SHOW INDEX FROM TABLE_NAME;
select count(*) from TABLE_NAME where 'status' = 1;
- Kana Sensitivity
- Case Sensitivity
- Accent Sensitivity
- Width Sensitivity etc
In MySQL, a temporary table is a distinct type of table that approves you to save a transient end result set, in which you can reuse countless instances in a single session. A brief table is created with the aid of the use of the
CREATE TEMPORARY TABLE statement.
It is the best way to upload large CSV files through the LOAD DATA command.
LOAD DATA LOCAL INFILE "your file name"
INTO TABLE table name
FIELDS TERMINATED by ’,’
LINES TERMINATED BY ’\n’
Timestamp in MySQL
Timestamp in MySQL is used when users want to convert the value from the current time zone to UTC zone for the sake of storage or UTC time zone to the current time zone for retrieval.
DateTime in MySQL
DateTime in MySQL is used to insert values ‘yyyy-mm-dd’ in the table where yyyy is the year, mm is the month and dd is the date. This keyword is used to retrieve or to display DATETIME values in Mysql.
The data in a MySQL database is stored in the form of tables, which consist of many columns and rows. It is a reliable, stable and robust platform with advanced performance and security features.
Development History of MySQL
The first version of MySQL was released in May 1995 by a Swedish company MySQL AB.
To get into complete detail of MySQL interviews, we are mentioning some of the essential MySQL Interview Questions and Answers for experienced. Go through the issues as they will help you.
Advantages of MySQL
- Data Security
- On-Demand Scalability
- High Performance
- Excellent Uptime
- Lowered TCO (Total Cost of Ownership)