📜  前58个MySql面试问题

📅  最后修改于: 2020-11-19 09:24:21             🧑  作者: Mango

MySQL面试问题

下面列出了最常见的MySQL面试问题和答案。

1)什么是MySQL?

MySQL是一个多线程,多用户的SQL数据库管理系统,安装量超过1100万。它是世界上第二大最受欢迎和广泛使用的开源数据库。有趣的是,如何为该查询语言指定MySQL名称。 My是由联合创始人Michael Widenius的女儿的名字创造的,而SQL是Structured Query Language的缩写。对于开发人员而言,使用MySQL是免费的,但是企业必须向Oracle支付许可费。

以前,MySQL最初是由一家营利性公司MySQL AB所拥有,然后由Sun Microsystems收购,然后由Oracle收购Sun Microsystems,因此Oracle目前拥有MySQL。

MySQL是基于结构化查询语言的Oracle支持的关系数据库管理系统(RDBMS)。 MySQL支持多种操作系统,其中最著名的包括Windows,Linux和UNIX。尽管可以使用MySQL开发各种应用程序,但它仅用于Web应用程序和在线发布。它是称为Lamp的开源企业的基本组成部分。

什么是灯?

Lamp是用于Web开发的平台。 Lamp使用Linux,Apache,MySQL和PHP作为操作系统,Web服务器,数据库和面向对象的脚本语言。因此缩写为LAMP。

2)MySQL用哪种语言编写?

MySQL用C和C++编写,其SQL解析器用yacc编写。

3)MySQL的技术规格是什么?

MySQL具有以下技术规格-

  • 结构灵活
  • 高性能
  • 可管理且易于使用
  • 复制和高可用性
  • 安全性和存储管理
  • 车手
  • 图形工具
  • MySQL企业监视器
  • MySQL企业安全
  • JSON支持
  • 复制和高可用性
  • 可管理性和易用性
  • OLTP和事务
  • 地理空间支持

4)MySQL和SQL有什么区别?

SQL被称为标准查询语言。它用于与MySQL之类的数据库进行交互。 MySQL是一个存储各种数据并保持其安全性的数据库。

需要PHP脚本来存储和检索数据库中的值。

SQL是一种计算机语言,而MySQL是一种软件或应用程序

SQL用于创建数据库管理系统,而MySQL用于启用数据处理,存储,删除和修改数据

5)5.数据库和表之间有什么区别?

数据库和表之间的主要区别是。区别如下:

  • 表是一种表示数据库中数据划分的方式,而数据库是表和数据的集合。
  • 表用于将彼此相关的数据分组并创建数据集。该数据集将在数据库中使用。以任何形式存储在表中的数据都是数据库的一部分,但事实并非如此。
  • 数据库是有组织的数据和用于访问它们的功能的集合,而表是用于存储数据的行和列的集合。

6)为什么要使用MySQL数据库服务器?

首先,MYSQL服务器可供开发人员和小型企业免费使用。

MySQL服务器是开源的。

MySQL的社区是巨大且支持的。因此,有关MySQL的任何帮助都将尽快解决。

MySQL具有很稳定的版本,因为MySQL进入市场已有很长时间了。先前版本中出现的所有错误均已被不断删除,并且每次更新后都提供非常稳定的版本。

MySQL数据库服务器非常快速,可靠并且易于使用。您可以轻松使用和修改软件。可以从互联网上免费下载MySQL软件。

7)MySQL中存在哪些不同的表?

默认情况下,有许多表仍然存在。但是,MyISAM是MySQL中使用的默认数据库引擎。存在五种类型的表:

  • 我的ISAM
  • 合并
  • 创意数据库

8)如何安装MySQL?

在我们的系统上安装MySQL可以使我们安全地创建,删除和测试Web应用程序,而不会影响实时网站的数据。在我们的系统上有很多使用MySQL的方法,但是最好的方法是手动安装它。手动安装使我们可以了解有关系统的更多信息,并提供对数据库的更多控制。要查看Windows中MySQL的安装步骤,请转到以下链接:

https://www.javatpoint.com/how-to-install-mysql

手动安装MySQL有几个好处:

  • 可以在一秒钟内完成将数据库从一个位置备份,重新安装或移动到另一个位置的操作。
  • 它为MySQL服务器的启动和关闭方式以及何时提供了更多控制。
  • 我们可以在任何地方安装MySQL,例如在便携式USB驱动器中。

9)如何检查MySQL版本?

我们可以使用以下命令在Linux上检查MySQL版本:

mysql -v

如果我们在Windows中使用MySQL,则打开MySQL命令行工具将显示版本信息,而不使用任何标志。如果我们想了解有关服务器信息的更多信息,请使用以下语句:

SHOW VARIABLES LIKE "%version%";

它将返回如下输出:

在此输出中,我们可以看到有关已安装的MySQL软件的其他版本信息,例如innodb_version,protocol_version,version_ssl_library等。

10)如何在MySQL中添加列?

列是表中的一系列单元格,为表中的每一行存储一个值。我们可以使用ALTER TABLE语句在现有表中添加列,如下所示:

ALTER TABLE table_name   
    ADD COLUMN column_name column_definition [FIRST|AFTER existing_column];

要了解更多信息,请单击此处。

11)如何在MySQL中删除表?

我们可以使用Drop Table语句删除MySQL中的表。该语句从数据库中永久删除表的完整数据,包括结构和定义。因此,删除表时需要小心。使用该语句后,我们无法在MySQL中恢复该表。声明如下:

DROP TABLE  table_name; 

要了解更多信息,请单击此处。

12)如何在MySQL中添加外键?

外键用于将一个或多个表链接在一起。它与另一个表的主键字段匹配以链接两个表。它使我们能够与表创建父子关系。我们可以通过两种方式向表添加外键:

  • 使用CREATE TABLE语句
  • 使用ALTER TABLE语句

以下是使用CREATE TABLE或ALTER TABLE语句定义外键的语法:

[CONSTRAINT constraint_name]  
    FOREIGN KEY [foreign_key_name] (col_name, ...)  
    REFERENCES parent_tbl_name (col_name,...)  

要了解更多信息,请单击此处。

13)如何连接到MySQL数据库?

MySQL允许我们主要通过两种方式与数据库服务器连接:

使用命令行工具

我们可以在MySQL安装文件夹的bin目录中找到命令行客户端工具。要调用此程序,我们需要浏览安装文件夹的bin目录并键入以下命令:

mysql

接下来,我们需要运行以下命令以连接到MySQL服务器:

shell>mysql -u root -p

最后,输入所选用户帐户root的密码,然后按Enter:

Enter password: ********

连接成功后,我们可以使用以下命令来使用:

USE database_name;

使用MySQL Workbench

我们可以使用MySQL Workbench与数据库建立连接,只需单击加号(+)图标或导航到菜单栏->数据库->连接到数据库,将出现以下屏幕。现在,您需要填写所有详细信息以建立连接:

一旦完成此设置,它将打开MySQL Workbench屏幕。现在,我们可以双击新创建的连接以连接数据库服务器。

要了解更多信息,请单击此处。

14)如何更改MySQL密码?

我们可以使用下面的语句在新的记事本文件中更改MySQL的root密码,并使用适当的名称保存它:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';

接下来,打开命令提示符并导航到MySQL目录。现在,复制以下文件夹并将其粘贴到我们的DOS命令中,然后按Enter键。

C:\Users\javatpoint> CD C:\Program Files\MySQL\MySQL Server 8.0\bin  

接下来,输入以下语句以更改密码:

mysqld --init-file=C:\\mysql-notepadfile.txt

最后,我们可以使用该新密码以root用户身份登录MySQL服务器。启动MySQL服务器后,将删除C:\ myswl-init.txt文件以确保更改密码。

要了解更多信息,请单击此处。

15)如何在MySQL Workbench中创建数据库?

要在MySQL Workbench中创建新数据库,我们首先需要启动MySQL Workbench并使用用户名和密码登录。转到导航选项卡,然后单击架构菜单。右键单击Schema菜单下的,然后选择Create Schema或单击数据库图标(红色矩形),如以下屏幕所示。

出现一个新的弹出屏幕,我们需要在其中填写所有详细信息。输入详细信息后,单击“应用”按钮,然后单击“完成”按钮以完成数据库创建。

要了解更多信息,请单击此处。

16)如何在MySQL Workbench中创建表?

启动MySQL Workbench,然后转到Navigation选项卡,然后单击Schema菜单,其中显示了所有先前创建的数据库。选择任何数据库,然后双击它。它将显示子菜单,我们需要在其中选择Tables选项。

选择表子菜单,右键单击它,然后选择创建表选项。我们还可以单击“创建新表”图标(以红色矩形显示)来创建表。它将打开新的弹出屏幕,我们需要在其中填写所有详细信息以创建表格。在这里,我们将输入表名和列详细信息。输入详细信息后,单击“应用”按钮,然后单击“完成”按钮以完成表的创建。

要了解更多信息,请单击此处。

17)如何在MySQL中更改表名?

有时我们的表名是无意义的。在这种情况下,我们需要更改或重命名表名称。 MySQL提供以下语法来重命名当前数据库中的一个或多个表:

mysql> RENAME old_table TO new_table;  

如果要更改多个表名,请使用以下语法:

RENAME TABLE old_tab1 TO new_tab1,  
             old_tab2 TO new_tab2, old_tab3 TO new_tab3; 

要了解更多信息,请单击此处。

18)如何在MySQL中更改数据库名称?

有时由于数据库名称无意义,我们需要更改或重命名数据库名称。要重命名数据库名称,我们首先需要在MySQL服务器中创建一个新数据库。接下来,MySQL提供mysqldump shell命令来创建所选数据库的转储副本,然后将所有数据导入到新创建的数据库中。以下是使用mysqldump命令的语法:

mysqldump -u username -p "password" -R oldDbName > oldDbName.sql

现在,使用以下命令将数据导入到新创建的数据库中:

mysql -u username -p"password" newDbName < oldDbName.sql 

19)如何在MySQL中导入数据库?

在MySQL中导入数据库是将数据从一个地方移动到另一个地方的过程。这是备份必要数据或在不同位置之间传输数据的非常有用的方法。例如,我们有一个通讯录数据库,这对于将其保存在安全的地方至关重要。因此,我们需要将其导出到一个安全的地方,每当它从原始位置丢失时,我们都可以使用导入选项将其还原。

在MySQL中,我们可以通过两种方式导入数据库:

  • 命令行工具
  • MySQL工作台

要阅读有关导入数据库的更多信息,请单击此处。

20)如何在MySQL中更改列名?

创建表时,我们错误地保留了其中一个列名。要在MySQL中更改或重命名现有的列名,我们需要一起使用ALTER TABLE和CHANGE命令。以下是用于在MySQL中重命名列的语法:

ALTER TABLE table_name   
    CHANGE COLUMN old_column_name new_column_name column_definition [FIRST|AFTER existing_column];  

假设该列的当前名称是S_ID,但是我们想用一个更合适的标题Stud_ID来更改它。我们将使用以下语句更改其名称:

ALTER TABLE Student CHANGE COLUMN S_ID Stud_ID varchar(10);

21)如何删除MySQL中的列?

我们可以使用ALTER TABLE语句删除,删除或删除现有表中的一个或多个列,如下所示:

ALTER TABLE table_name DROP COLUMN column_name1, column_name2....; 

要了解更多信息,请单击此处。

22)如何在MySQL中插入数据?

我们可以使用INSERT STATEMENT在MySQL表中插入数据。此语句使我们可以在表中插入单行或多行。以下是将记录插入表中的基本语法:

INSERT INTO table_name ( field1, field2,...fieldN )  
VALUES  ( value1, value2,...valueN );  

如果我们要在一个表中插入多行,请使用以下语法:

INSERT INTO table(field1, field2,...fieldN)
VALUES 
   (value1, value 2, ...),
   (value1, value2, ...),
    ...
   (value1, value2, ...);

要了解更多信息,请单击此处。

23)如何在MySQL中删除一行?

我们可以使用数据库内的DELETE STATEMENT从MySQL表中删除一行。以下是MySQL中DELETE语句从表中删除一个或多个行的通用语法:

DELETE FROM table_name WHERE Condition_specified;  

注意,如果我们没有使用语法指定WHERE子句,则此语句将从给定表中删除所有记录。

要了解更多信息,请单击此处。

24)如何在MySQL中联接两个表?

我们可以使用JOIN子句在MySQL中连接两个或多个表。 MySQL允许各种类型的JOIN子句。这些子句连接多个表,并且仅返回与所有表中的值和属性相同的记录。以下是在MySQL中联接两个或多个表的四种简单方法:

  • 内部联接
  • 左加入
  • 正确加入
  • 交叉连接

要了解更多信息,请单击此处。

25)如何在MySQL中联接三个表?

有时我们需要从三个或更多表中获取数据。有两种类型可以执行这些类型的联接。假设我们有三个表,分别为Student,Marks和Details。

假设学生有(stud_id,name)列,Marks有(school_id,stud_id,scores)列,Details有(school_id,address,email)列。

1.使用SQL Join子句

这种方法类似于我们连接两个表的方式。以下查询从三个表返回结果:

SELECT name, scores, address, email FROM Student s 
INNER JOIN Marks m on s.stud_id = m.stud_id 
INNER JOIN Details d on d.school_id = m.school_id;

2.使用亲子关系

这是联接两个以上表的另一种方法。在上表中,我们必须创建一个父子关系。首先,将X列创建为一个表中的主键,并将其作为另一表中的外键。因此,stud_id是Student表中的主键,并且将是Marks表中的外键。接下来,school_id是Marks表中的主键,并且是Details表中的外键。以下查询从三个表返回结果:

SELECT name, scores, address, email 
FROM Student s, Marks m, Details d 
WHERE s.stud_id = m.stud_id AND m.school_id = d.school_id;

要阅读有关外键的更多信息,请单击此处。

26)如何在MySQL中更新表?

我们可以使用SET和WHERE子句附带的UPDATE语句更新表中的现有记录。 SET子句更改指定列的值。 WHERE子句是可选的,用于指定条件。此语句还可用于一次更改单行或多行中一个或多个列中的值。以下是用于将数据修改到MySQL表中的UPDATE命令的通用语法:

UPDATE table_name   
SET field1=new-value1, field2=new-value2, ...  
[WHERE Clause]  

要了解更多信息,请单击此处。

27)什么是MySQL Workbench?

MySQL Workbench是用于在MySQL数据库上工作的统一可视数据库设计或GUI工具。它由Oracle开发和维护,提供SQL开发,数据迁移以及用于服务器配置,用户管理,备份等的综合管理工具。我们可以使用此服务器管理来创建新的物理数据模型,ER图和SQL开发。它适用于所有主要操作系统。 MySQL从MySQL Server v5.6及更高版本开始为其提供支持。

主要提供三个版本,如下所示:

  • 社区版(开源,GPL)
  • 标准版(商业版)
  • 企业版(商业版)

要了解更多信息,请单击此处。

28)如何在MySQL中删除主键?

MySQL主键是字段的单个或组合,用于唯一地标识表中的每个记录。主键列不能为null或为空。我们可以使用ALTER TABLE语句从表中删除或删除主键。以下语法用于删除主键:

ALTER TABLE table_name  DROP PRIMARY KEY;  

要了解更多信息,请单击此处。

29)如何在MySQL中创建存储过程?

存储过程是我们保存在数据库中的一组SQL语句。 SQL查询(包括INSERT,UPDATE,DELETE等)可以是存储过程的一部分。一个过程使我们可以通过执行一条语句来反复使用相同的代码。它存储在数据库数据字典中。

我们可以使用以下语法创建存储过程:

CREATE PROCEDURE procedure_name [ (parameter datatype [, parameter datatype]) ]  
BEGIN  
    Body_section of SQL statements
END;  

该语句可以通过参数返回一个或多个值,也可以不返回任何结果。以下示例对其进行了更清晰的说明:

DELIMITER $$  
CREATE PROCEDURE get_student_info()  
BEGIN  
SELECT * FROM Student_table;  
END$$  

要了解更多信息,请单击此处。

30)如何在MySQL中执行存储过程?

我们可以通过简单的CALL查询在MySQL中执行存储过程。该查询采用存储过程的名称以及我们需要传递给它的所有参数。以下是执行存储过程的基本语法:

CALL stored_procedure_name (argument_list);

让我们通过以下示例了解它:

CALL Product_Pricing (@pricelow, @pricehigh);

在这里,名为Product_Pricing的存储过程计算并返回最低和最高产品价格。

31)如何在MySQL中创建视图?

视图是一个数据库对象,其值基于基表。它是由查询通过联接一个或多个表创建的虚拟表。它的操作类似于基表,但不包含其自身的任何数据。如果基础表中发生任何更改,则相同的更改也会反映在视图中。

以下是在MySQL中创建VIEW的一般语法:

CREATE [OR REPLACE] VIEW view_name AS  
SELECT columns  
FROM tables  
[WHERE conditions];

要了解更多信息,请单击此处。

32)如何在MySQL中创建触发器?

触发器是数据库中的过程代码,只要数据库中特定表或视图上的某些事件发生,它就会自动调用。可以在将记录插入表中或更新任何列时执行该命令。我们可以使用以下语法在MySQL中创建触发器:

CREATE TRIGGER trigger_name  
    [before | after]  
   {insert | update | delete}  
    ON table_name [FOR EACH ROW]  
    BEGIN  
        --variable declarations  
        --trigger code  
    END; 

要了解更多信息,请单击此处。

33)如何在MySQL中清除屏幕?

如果我们在Windows中使用MySQL,则无法清除版本8之前的屏幕。那时,Windows操作系统提供了唯一的清除屏幕的方法,方法是退出MySQL命令行工具,然后再次打开MySQL。

MySQL版本8发行后,我们可以使用以下命令清除命令行屏幕:

mysql> SYSTEM CLS;

34)如何在MySQL中创建新用户?

MySQL中的USER是USER-TABLE中的一条记录。它包含登录信息,帐户特权以及MySQL帐户访问和管理数据库的主机信息。我们可以使用MySQL Create User语句在数据库服务器中创建一个新的用户帐户。它为新帐户提供身份验证,SSL / TLS,资源限制,角色和密码管理属性。

以下是在MySQL中创建新用户的基本语法:

CREATE USER [IF NOT EXISTS] account_name IDENTIFIED BY 'password'; 

要了解更多信息,请单击此处。

35)如何在MySQL中检查USERS?

如果要在MySQL中管理数据库,则需要查看数据库服务器中所有用户帐户的列表。以下命令用于检查数据库服务器中所有可用用户的列表:

mysql> SELECT USER FROM mysql.user; 

要了解更多信息,请单击此处。

36)如何在MySQL中导入CSV文件?

MySQL允许我们将CSV(逗号分隔值)文件导入数据库或表。 CSV是包含数据列表的纯文本文件,可以以表格格式保存。 MySQL提供了LOAD DATA INFILE语句来导入CSV文件。该语句用于读取文本文件并将其快速导入数据库表中。导入CSV文件的完整语法如下:

LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/filename.csv'   
INTO TABLE tablename   
FIELDS TERMINATED BY ','  
OPTIONALLY ENCLOSED BY '"'  
LINES TERMINATED BY '\r\n'   
IGNORE 1 ROWS;  

要了解更多信息,请单击此处。

37)如何在MySQL中插入日期?

MySQL允许我们使用INSERT STATEMENT在MySQL表中添加日期。 MySQL提供了几种数据类型来存储日期,例如DATE,TIMESTAMP,DATETIME和YEAR。 MySQL中日期的默认格式为YYYY-MM-DD。以下是在MySQL表中插入日期的基本语法:

INSERT INTO table_name (column_name, column_date) VALUES ('DATE: Manual Date', '2008-7-04'); 

如果我们要以mm / dd / yyyy格式插入日期,则需要使用以下语句:

INSERT INTO table_name VALUES (STR_TO_DATE(date_value, format_specifier));

38)如何在MySQL中检查数据库大小?

MySQL允许我们查询information_schema.tables表以获取有关表和数据库的信息。它将返回有关数据长度,索引长度,排序规则,创建时间等的信息。我们可以使用以下语法检查服务器上数据库的大小:

SELECT table_schema AS 'Database Name',
SUM(data_length + index_length) 'Size in Bytes',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) 'Size in MB'
FROM information_schema.tables
WHERE table_schema = 'testdb'
GROUP BY table_schema;

它将返回如下输出:

如果我们要检查特定数据库中表的大小,请使用以下语句:

SELECT table_name AS 'Table Name',
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Size in MB'
FROM information_schema.TABLES
WHERE table_schema = 'testdb'
ORDER BY (data_length + index_length) DESC;

它将返回如下输出:

39)如何在MySQL中建立索引?

索引编制是将无序列表查找到有序列表的过程。在MySQL中搜索表时,它有助于最大程度地提高查询效率。 MySQL索引的工作类似于书本索引。

假设我们有一本书,并且想获取有关搜索的信息。如果不建立索引,则需要一页一页地浏览所有页面,直到找不到特定主题为止。另一方面,索引包含关键字列表,以查找页面上提到的主题。然后,我们可以直接翻阅这些页面,而无需浏览所有页面。

40)谁拥有MySQL?

MySQL是最受欢迎的免费开源数据库软件,受GNU通用公共许可证约束。最初,它是由瑞典公司MySQL AB拥有和赞助的。现在,它由负责管理和开发数据库的Sun Microsystems(现为Oracle Corporation)收购。

要了解更多信息,请单击此处。

41)如何在MySQL中查看数据库?

使用MySQL服务器,查看或列出可用数据库是一项常见任务。我们可以使用以下命令查看MySQL服务器主机上的所有数据库:

mysql> SHOW DATABASES;

要了解更多信息,请单击此处。

42)如何在MySQL中设置自动递增?

自动增量是一种约束,它可以在将新记录插入表中时自动生成唯一编号。通常,它用于表中的主键字段。在MySQL中,我们可以使用ALTER TABLE语句为AUTO_INCREMENT列设置值,如下所示:

ALTER TABLE table_name AUTO_INCREMENT = value;

43)如何在MySQL中找到第二高的薪水?

MySQL使用LIMIT关键字,该关键字可用于限制结果集。它将使我们能够获得前几行,后几行或行范围。它也可以用来查找第二,第三或第n个最高薪水。它可以确保您使用order by子句首先对结果集进行排序,然后print提供准确结果的输出。以下查询用于获取MySQL中第二高的薪水:

SELECT salary 
FROM (SELECT salary FROM employees ORDER BY salary DESC LIMIT 2) AS Emp ORDER BY salary LIMIT 1;

还有一些其他方法可以在MySQL中找到第二高的薪水,如下所示:

该语句使用子查询和IN子句获得第二高的薪水:

SELECT MAX(salary) 
FROM employees 
WHERE salary NOT IN ( SELECT Max(salary) FROM employees);

此查询使用子查询和<运算符返回第二高的薪水:

SELECT MAX(salary) From employees 
WHERE salary < ( SELECT Max(salary) FROM employees);

44)MySQL中的TRUNCATE和DELETE有什么区别?

  • TRUNCATE是DDL命令,而DELETE是DML命令。
  • 无法将TRUNCATE QL与Where命令一起使用,但可以将其与DELETE命令一起使用。
  • TRUNCATE不能与索引视图一起使用,而DELETE可以与索引视图一起使用。
  • DELETE命令用于从表中删除数据。它仅从表中删除数据行,而截断是一个非常危险的命令,因此应谨慎使用,因为它会从表中永久删除每一行。

45)MySQL中可能有多少个触发器?

MySQL数据库中只允许使用六个触发器。

  • 插入之前
  • 插入后
  • 更新之前
  • 更新后
  • 删除之前
  • 删除后

46)什么是堆表?

内存中存在的表称为HEAP表。在MySQL中创建堆表时,您需要将TYPE指定为HEAP。这些表通常称为内存表。它们被临时用于高速存储。它们不允许BLOB或TEXT字段。

47)MySQL中的BLOB和TEXT是什么?

BLOB是代表大型二进制对象的首字母缩写。它用于保存可变数量的数据。

BLOB有四种类型。

  • 天龙八部
  • BLOB
  • 中号
  • 龙宝

所有这些之间的差异是它们可以容纳的最大长度值。

TEXT是不区分大小写的BLOB。 TEXT值非二进制字符串(<字符>)。它们具有一个字符集,并且根据字符集的排序规则存储和比较值。

TEXT有四种类型。

  • 细语
  • 文本
  • 中文字
  • 长文本

48)MySQL中的触发器是什么?

触发器是一组响应某些事件而执行的代码。

49)堆表和临时表有什么区别?

堆表:

堆表位于临时用于高速存储的内存中。它们不允许BLOB或TEXT字段。

堆表不支持AUTO_INCREMENT。

索引不应为空。

临时表:

临时表用于保留临时数据。在某些情况下,保存临时数据会很有用。当前客户端会话终止后,将删除临时表。

主要区别:

堆表在客户端之间共享,而临时表不共享。

堆表只是另一个存储引擎,而对于临时表,则需要特殊特权(创建临时表)。

50)FLOAT和DOUBLE有什么区别?

FLOAT最多可存储8个精度的浮点数,并分配4个字节。另一方面,DOUBLE最多可存储18个精度的浮点数,并分配8个字节。

51)与Oracle相比,MySQL有何优势?

  • MySQL是一个免费,快速,可靠的开源关系数据库,而Oracle则很昂贵,尽管它们提供了Oracle免费版来吸引MySQL用户。
  • MySQL在笔记本电脑上仅使用不到1 MB的RAM,而Oracle 9i安装使用128 MB。
  • MySQL适用于启用数据库的网站,而Oracle适用于企业。
  • MySQL是可移植的。

52)MySQL有什么缺点?

  • 对于大型数据库,MySQL并不是那么有效。
  • 它不支持低于5.0的COMMIT和STORED PROCEDURES函数版本。
  • 事务处理效率不高。
  • MySQL的功能高度依赖于其他插件。
  • 发展不是社区驱动的。

53)CHAR和VARCHAR有什么区别?

  • CHAR和VARCHAR在存储和检索上有所不同。
  • CHAR列的长度是固定的,而VARCHAR的长度是可变的。
  • 最大编号最多可容纳255个字符的CHAR数据类型字符,而VARCHAR最多可容纳4000个字符。
  • CHAR比VARCHAR快50%。
  • CHAR使用静态内存分配,而VARCHAR使用动态内存分配。

54)MySQL_connect和MySQL_pconnect有什么区别?

Mysql_connect:

  • 它将打开与数据库的新连接。
  • 每次需要打开和关闭数据库连接时,都取决于请求。
  • 每次加载时都会打开页面。

Mysql_pconnect:

  • 在Mysql_pconnect中,“ p”代表持久连接,因此它将打开持久连接。
  • 数据库连接无法关闭。
  • 如果您的站点有更多的流量,这将更加有用,因为无需经常和在页面加载时打开和关闭连接。

55)“ i_am_a_dummy标志”在MySQL中做什么?

如果没有WHERE子句,“ i_am_a_dummy标志”使MySQL引擎可以拒绝执行任何UPDATE或DELETE语句。因此,如果程序员不使用WHERE子句,可以避免程序员删除整个表,这是我的错。

56)如何在MySQL中获取当前日期?

要获取当前日期,请使用以下语法:

SELECT CURRENT_DATE();  

57)使用MySQL时有哪些安全警报?

安装防病毒软件并配置操作系统的防火墙。

切勿将MySQL服务器用作UNIX根用户。

更改root用户名和密码限制或禁用远程访问。

58)如何通过mysqladmin更改现有用户的密码?

Mysqladmin -u root -p密码“ newpassword”。

59)UNIX时间戳和MySQL时间戳有什么区别?

实际上,Unix时间戳和MySQL时间戳都存储为32位整数,但是MySQL时间戳以YYYY-MM-DD HH:MM:SS格式的可读格式表示。

60)如何显示MySQL查询表中的第n个最高薪水?

让我们来一个名为雇员的表。

要找到第N个最高薪水是:

按薪资降级限制n-1,1从员工订单中选择不同的(薪水)

如果您想找到第三大薪水:

按薪水上限2,1从员工订单中选择不同的(薪水)

61)MySQL默认端口号是多少?

MySQL的默认端口号是3306。

62)什么是REGEXP?

REGEXP是使用正则表达式的模式匹配。正则表达式是为复杂搜索指定模式的有效方法。

基本上,它是用于描述搜索模式的特殊文本字符串。为了更好地理解它,可以在搜索.txt文件以列出文件管理器中的所有文本文件时想到日常生活中的情况。 .txt的等效正则表达式将是。* \。txt。

63)您可以为索引创建多少列?

一个标准表最多可以创建16个索引列。

64)NOW()和CURRENT_DATE()有什么区别?

NOW()命令用于显示当前年份,月份,日期以及小时,分钟和秒,而CURRENT_DATE()仅显示当前年份,月份和日期。

65)显示前20行的查询是什么?

SELECT * FROM table_name LIMIT 0,20;

66)编写查询以显示当前日期和时间?

如果要显示当前日期和时间,请使用-

SELECT NOW();

如果只想显示当前日期,请使用:

SELECT CURRENT_DATE();

67)MySQL中的保存点是什么?

任何事务中的定义点都称为保存点。

SAVEPOINT是MySQL中的一条语句,用于设置带有标识符名称的命名事务保存点。

68)什么是SQLyog?

SQLyog程序是最流行的admin GUI工具。它是最受欢迎的MySQL管理器和管理工具。它结合了MySQL管理员,phpMyadmin和其他功能。 MySQL前端和MySQL GUI工具。

69)如何在MySQL中备份数据库?

使用phpMyAdmin备份数据很容易。通过单击左侧导航栏中的数据库名称来选择要备份的数据库。然后单击导出按钮,并确保突出显示了要备份的所有表。然后在导出下指定所需的选项并保存输出。

70)有哪些在MySQL中不同列比较运算符?

的=,<>,<=,<,> =,>,<<,>>,<=,>,AND,OR或LIKE运算符是在MySQL运算符。这些运算符通常与SELECT语句一起使用。

71)编写查询以计算MySQL中表的行数。

从用户中选择COUNT个user_id;

72)编写查询以检索从20日开始的一百本书。

从20到100本书中选择book_title;

73)编写查询以选择赢得1、3、5或7场比赛的所有球队。

SELECT team_name FROM team WHERE team_won IN(1、3、5、7);

74)MySQL Server的默认端口是什么?

MySQL服务器的默认端口是3306。

75)MyISAM表如何存储?

MyISAM表以三种格式存储在磁盘上。

  • '.frm'文件:存储表定义
  • '.MYD'(MYData):数据文件
  • '.MYI'(MYIndex):索引文件

76)MySQL中ENUM的用法是什么?

ENUM是字符串对象。通过定义ENUM,我们允许最终用户提供正确的输入,以防万一用户提供的输入不属于ENUM定义的数据,则查询将不会执行,并且将显示一条错误消息,内容为“错误的查询”。例如,假设我们要以用户的性别作为输入,因此我们指定ENUM('male','female','other'),因此,只要用户尝试输入除这三个字符串以外的任何字符串,这会导致错误。

ENUM用于限制表中可能的值:

例如:

创建表月份(月份ENUM'January','February','March');插入月份值(“ 4月”)。

77)MyISAM与InnoDB相比有什么优势?

MyISAM遵循保守的磁盘空间管理方法,并将每个MyISAM表存储在单独的文件中,可以根据需要对其进行进一步压缩。另一方面,InnoDB将表存储在表空间中。其进一步的优化是困难的。

78)MySQL_fetch_array(),MySQL_fetch_object(),MySQL_fetch_row()有什么区别?

Mysql_fetch_object用于作为对象从数据库中检索结果,而mysql_fetch_array以数组形式返回结果。这将允许通过字段名称访问数据。

例如:

使用mysql_fetch_object字段可以作为$ result-> name访问。

使用mysql_fetch_array字段可以通过$ result-> [name]访问。

使用mysql_fetch_row($ result),其中$ result是使用mysql_query()函数执行的成功查询返回的结果资源。

例:

$result = mysql_query("SELECT * from students");  
while($row = mysql_fetch_row($result))  
{  
        Some statement;  
}  

79)mysql_connect和mysql_pconnect有什么区别?

Mysql_connect()用于打开与数据库的新连接,而mysql_pconnect()用于打开与数据库的持久连接。它指定每次加载页面时,mysql_pconnect()不会打开数据库。

80)mysql_close()有什么用?

Mysql_close()无法用于关闭持久连接。但是,它可以用来关闭由mysql_connect()打开的连接。

81)什么是MySQL数据目录?

MySQL数据目录是MySQL存储其数据的地方。该数据字典下的每个子目录都代表一个MySQL数据库。默认情况下,MySQL =服务器mysqld管理的信息存储在数据目录中。

82)如何确定MySQL数据目录的位置?

Windows中MySQL数据目录的默认位置为C:\ mysql \ data或C:\ Program Files \ MySQL \ MySQL Server 5.0 \ data。

83)MySQL中正则表达式的用法是什么?

在MySQL中,查询中使用正则表达式来搜索字符串的模式。

  • *匹配字符串前面的0个实例。
  • +匹配字符串前面的一个实例。
  • ?匹配其前面的字符串的0或1个实例。
  • 。匹配一个字符。
  • [abc]匹配a或b或z
  • |分隔字符串
  • ^从一开始就锁定比赛。
  • “。”可用于匹配任何单个字符。 “ |”可以用来匹配两个字符串
  • REGEXP可用于将输入字符与数据库匹配。

例:

以下语句检索所有列employee_name包含文本1000(示例工资)的行:

Select employee_name  
From employee  
Where employee_name REGEXP '1000'  
Order by employee_name  

84)MySQL中“ i-am-a-dummy”标志的用法是什么?

在MySQL中,除非存在WHERE子句,否则“ i-am-a-dummy”标志使MySQL引擎拒绝UPDATE和DELETE命令。

85)哪个命令用于查看MySQL中表的内容?

SELECT命令用于在MySQL中查看表的内容。

解释访问控制列表。

ACL是与对象关联的权限列表。 MySQL将访问控制列表缓存在内存中,每当用户尝试验证或执行命令时,MySQL都会检查对象所需的权限,如果权限可用,则执行成功完成。

86)什么是InnoDB?

InnoDB是用于SQL的存储数据库。 InnoDB中还提供了ACID事务,还包括对外键的支持。自2005年收购Oracle后,最初由InnobaseOY拥有的公司现在属于Oracle Corporation。

87)什么是ISAM?

它是由IBM开发的文件管理系统,它允许记录按顺序甚至是随机访问。

88)我们如何在MySQL中运行批处理模式?

要在MySQL中执行批处理模式,我们使用以下命令:

mysql;
mysql mysql.out;

89)什么是联合表?

联合表是指向其他服务器上其他数据库上的表的表。

90)主键和候选键有什么区别?

为了识别表的每一行,我们将使用主键。对于一个表,仅存在一个主键。

候选键是一列或一组列,可用于唯一标识数据库中的任何记录,而不必引用任何其他数据。

91)MySQL中的驱动程序是什么?

以下是MySQL中可用的驱动程序:

  • PHP驱动
  • JDBC驱动程序
  • ODBC驱动程序
  • 包装纸
  • PYTHON驱动程序
  • PERL驱动程序
  • RUBY驱动程序
  • CAP11PHP驱动
  • Ado.net5.mxz

92)什么是DDL,DML和DCL?

SQL命令主要可以分为三类,即DDL,DML和DCL。数据定义语言(DDL)处理所有数据库模式,并定义数据应如何驻留在数据库中。诸如CreateTABLE和ALTER TABLE之类的命令是DDL的一部分。

数据操作语言(DML)处理数据的操作和操纵。 DML中的命令是“插入”,“选择”等。

数据控制语言(DCL)与授予和权限有关。简而言之,访问权限是由数据库定义的。