mysql 主键作用(mysql主键有什么用)

mysql 主键作用(mysql主键有什么用)数据库基础知识 1 什么是数据库 数据库是按照一定数据模型组织 存储管理和保护数据的集合 它可以是一个文件系统 也可以是一个支持数据访问的软件系统 2 什么是关系型数据库 关系型数据库是以关系模型 表 为基础的数据管理系统 它通过行和列的方式组织数据 采用结构化查询语言 SQL 进行数据的操作和管理 3 什么是非关系型数据库 非关系型数据库是指不使用表和关系模型的数据库 它以键值对

大家好,我是讯享网,很高兴认识大家。




讯享网

数据库基础知识

1.什么是数据库?

数据库是按照一定数据模型组织、存储管理和保护数据的集合。它可以是一个文件系统,也可以是一个支持数据访问的软件系统。

2.什么是关系型数据库?

关系型数据库是以关系模型(表)为基础的数据管理系统。它通过行和列的方式组织数据,采用结构化查询语言(SQL)进行数据的操作和管理。

3.什么是非关系型数据库?

非关系型数据库是指不使用表和关系模型的数据库。它以键值对、文档、列族等形式来组织和管理数据。非关系型数据库适用于大规模、高并发的数据存储和访问场景。

4.数据库的三大范式是什么?

   ▷第一范式(1NF):列不可再分,每个列都是 不可再分的基本数据单元。

   ▷第二范式(2NF):不存在部分函数依赖,每个非主键列依赖于全部主键。

   ▷第三范式(3NF):不存在传递依赖,每个非主键列直接依赖于主键。

5.什么是SQL?

SQL(Structured Query Language)是结构化查询语言,用于管理和操作关系型数据库。它包含了数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)等语句。

6.什么是ACID特性?

ACID(原子性、一致性、隔离性、持久性)是数据库事务的四个特性。原子性表示事务中的操作要么全部执行成功,要么全部失败;一致性表示事务执行后,数据库从一个一致状态转移到另一个一致状态;隔离性表示并发执行的事务之间是相互隔离的;持久性表示事务一旦提交,对数据的改变是永久的。

7.什么是事务?

事务是指由一个或多个操作组成的一个工作单位,要么全部执行成功,要么全部失败。事务具有原子性、一致性、隔离性和持久性四个特性,可以通过事务管理来保证数据的完整性和一致性。在关系型数据库中,事务由事务开始(BEGIN)、事务提交(COMMIT)和事务回滚(ROLLBACK)来控制。

SQL语法

1.SQL语句的分类有哪些?

   ▷DDL(数据定义语言):用于定义数据库结构,例如CREATE、ALTER、DROP等。

   ▷DML(数据操作语言):用于操作数据库中的数据,例如INSERT、UPDATE、DELETE等。

   ▷DQL(数据查询语言):用于查询数据库中的数据,例如SELECT。

   ▷DCL(数据控制语言):用于控制数据库的访问权限,例如GRANT、REVOKE等。

2.什么是DDL、DML、DQL和DCL ?

   ▷DDL(数据定义语言):用于定义数据库结构,例如CREATE TABLE、ALTER TABLE、DROP TABLE等。

   ▷DML(数据操作语言):用于操作数据库中的数据,例如INSERT INTO、UPDATE、DELETE FROM等。

   ▷DQL(数据查询语言):用于查询数据库中的数据,例如SELECT、FROM、WHERE等。

   ▷DCL(数据控制语言):用于控制数据库的访问权限,例如GRANT、REVOKE等。

3.如何创建数据库和表?

   ▷创建数据库:使用CREATE DATABASE语句,例如:CREATE DATABASE mydatabase;

   ▷创建表:使用CREATE TABLE语句,例如:CREATE TABLE mytable (column1 INT, column2 VARCHAR(50));

4.如何向表中插入数据?

使用INSERT INTO语句,指定要插入的表和对应的列和值,例如:INSERT INTO mytable (column1, column2) VALUES (10, ‘value’);

5.如何查询表中的数据?

使用SELECT语句,指定要查询的列和表,例如:SELECT column1, column2 FROM mytable;

6.如何更新表中的数据?

使用UPDATE语句,指定要更新的表和要更新的列和值,以及更新的条件,例如:UPDATE mytable SET column1 = 20 WHERE column2 = ‘value’;

7.如何删除表中的数据?

使用DELETE FROM语句,指定要删除的表和删除的条件,例如:DELETE FROM mytable WHERE column1 = 10;

8.如何修改表的结构?

使用ALTER TABLE语句,可以添加、修改和删除表的列,例如:

   ▷添加列:ALTER TABLE mytable ADD COLUMN column3 VARCHAR(50);

   ▷修改列定义:ALTER TABLE mytable MODIFY COLUMN column1 INT NOT NULL;

   ▷删除列:ALTER TABLE mytable DROP COLUMN column2。

表操作

1.什么是主键?

主键(Primary Key)是一个用来唯一标识表中每条记录的字段或一组字段。它的值必须是唯一的且不为空。

2.什么是外键?

外键(Foreign Key)是一个字段或一组字段,用于在一个表中创建对另一个表主键的引用。它用于建立表与表之间的关系。

3.什么是索引?

索引(Index)是一种数据结构,用于加快对表中数据的查找速度。它类似于书的目录,可以根据关键字快速定位到数据的位置。

4.什么是唯一索引?

唯一索引(Unique Index)是一种索引,用于确保被索引的列或列组中的值是唯一的,即不允许重复的值。

5.什么是主键索引?

主键索引(Primary Key Index)是一种特殊的唯一索引,用于对主键字段进行索引。主键索引的作用是确保主键的唯一性,同时也会加速对主键的查询操作。

6.如何创建索引?

创建索引可以使用ALTER TABLE语句,具体示例如下:

创建唯一索引:ALTER TABLE table_name ADD UNIQUE index_name(column1);

创建主键索引:ALTER TABLE table_name ADD PRIMARY KEY (column1);

7.如何删除索引?

删除索引可以使用ALTER TABLE语句,具体示例如下:

删除唯一索引:ALTER TABLE table_name DROP INDEX index_name;

删除主键索引:ALTER TABLE table_name DROP PRIMARY KEY;

8.如何修改表的字段?

使用ALTER TABLE语句,使用MODIFY COLUMN子句修改表的字段定义。

具体示例如下:

ALTER TABLE table_name MODIFY COLUMN column_name new_data_type;

9.如何删除表?

使用DROP TABLE语句,具体示例如下:

DROP TABLE table_name。

索引优化

1.为什么要使用索引?

使用索引可以提高数据库查询的速度和性能。索引允许数据库系统更快地定位和访问表中的数据,减少了数据扫描的时间和IO负载。

2.如何选择合适的索引?

选择合适的索引需要考虑查询频率和查询条件的选择性。通常,根据经常使用的查询条件创建索引是一个好的选择。同时,避免过度索引,只创建最常用的索引,以减少索引维护的开销。

3.什么是索引覆盖?

索引覆盖是指查询语句可以完全通过索引的结构来获取需要的数据,而不需要回表到数据页中获取其他列的数据。通过索引覆盖可以减少IO操作和提高查询性能。

4.什么是联合索引?

联合索引(Composite Index)是指由多个列组合在一起创建的索引。联合索引可以优化同时查询多个列的条件,提高查询的效率。

5.什么是最左前缀原则?

最左前缀原则是指在联合索引中,索引的顺序非常重要。索引可以按照从左到右的顺序逐步缩小检索范围,以提高查询性能。如果查询条件中的列顺序不符合索引的顺序,将无法使用到索引的优势。

6.什么是索引失效?

索引失效是指索引无法被查询语句有效利用,导致无法提高查询性能。常见的索引失效情况包括使用不符合索引顺序的查询条件、类型转换导致无法使用索引等。

7.什么是覆盖索引?

覆盖索引是指索引包含所有查询所需的列,而不需要回表查询数据页。通过覆盖索引可以减少IO操作,提高查询性能。 

性能优化

1.如何优化查询语句的性能?

   ▷选择合适的索引,减少全表扫描的开销。

   ▷避免使用SELECT ,只选择需要的列。

   ▷使用JOIN时,确保连接字段有索引。

   ▷避免使用子查询,尽量使用JOIN操作。

   ▷使用LIMIT限制返回的行数。

2.如何优化表的结构?

   ▷根据业务需求和查询模式设计合适的表结构。

   ▷避免使用过多的字段,只留下必要的列。

   ▷对经常用于查询的字段创建索引。

   ▷合理使用数据类型,尽量避免使用过大的数据类型。

   ▷根据实际情况拆分大表,减少单表数据量。

3.如何优化连接查询的性能?

   ▷确保连接字段有索引。

   ▷调整连接表的顺序,将结果集较小的表放在前面。

   ▷避免在连接查询中使用不必要的列。

   ▷尽量避免使用多表连接查询,考虑使用其他方式,如子查询、临时表等。

4.什么是查询缓存?如何使用查询缓存?

查询缓存是MySQL的一个功能,用于缓存查询语句的结果集。通过开启查询缓存,MySQL可以在执行查询之前检查查询语句是否已经执行过,并且结果是否在缓存中。可以使用以下语句来开启或禁用查询缓存:

   ▷开启查询缓存:SET GLOBAL query_cache_size = {缓存大小};

   ▷禁用查询缓存:SET GLOBAL query_cache_type = OFF;

5.什么是分库分表?

分库分表是指将一个大型数据库拆分成多个小型数据库或表,用于分散数据存储和提高查询性能。分库分表可以根据实际业务需要将数据根据某种规则进行划分,如按照用户ID、时间等进行水平拆分。

6.如何进行分页查询?

分页查询可以使用LIMIT语句来实现。例如,LIMIT 10 OFFSET 20 表示返回第21到第30行的结果。

7.如何进行分组和排序查询?

分组查询可以通过GROUP BY子句来实现。例如,SELECT department, COUNT() FROM employees GROUP BY department;

排序查询可以使用ORDER BY子句来实现。例如,SELECT * FROM employees ORDER BY salary DESC;表示按照薪资降序排序。

函数和存储过程

1.什么是MySQL函数?

MySQL函数是一段预定义的可重用代码块,接收输入参数并返回一个值。它可以在SQL语句中使用,用于实现一些常用的数据处理或计算操作。

2.如何定义和调用MySQL函数?

  ▷定义MySQL函数可以使用CREATE FUNCTION语句,指定函数名、参数列表和函数体。例如:  

   ▷调用MySQL函数可以使用SELECT语句,指定函数名和参数。

3.什么是存储过程?

存储过程是一段预定义的可重用代码块,可以接收输入参数并执行一系列的SQL语句。与函数不同的是,存储过程可以不返回结果或返回多个结果。

4.如何创建和调用存储过程?

创建存储过程可以使用CREATE PROCEDURE语句,指定存储过程名、参数列表和过程体。例如: 

调用存储过程可以使用CALL语句,指定过程名和参数。

5.如何传递参数和返回结果?

  ▷传递参数可以在函数或存储过程的定义中使用IN、OUT或INOUT来指定参数的类型。IN表示输入参数,OUT表示输出参数,INOUT表示既是输入又是输出参数。

  ▷返回结果可以使用RETURN语句来返回结果值,或者使用OUT或INOUT类型的参数来传递结果。在存储过程中使用OUT和INOUT参数时,需要在调用过程时声明相应的变量,并使用SELECT语句来获取结果。

数据库备份和恢复

1.如何备份和恢复数据库?

  ▷备份数据库可以使用mysqldump命令行工具。例如,备份名为mydatabase的数据库,可以使用以下命令:

这将将数据库备份到名为backup.sql的文件中。

  ▷恢复数据库可以使用mysql命令行工具。例如,将名为backup.sql的备份文件恢复到新建的mydatabase数据库中,可以使用以下命令:

这将执行备份文件中的SQL语句,将数据恢复到指定的数据库中。 

2.  如何分别进行逻辑备份和物理备份?

  ▷逻辑备份是指将数据库中的数据导出为SQL语句的形式,以便在需要时可以通过执行这些SQL语句将数据恢复到数据库中。常用的逻辑备份工具是mysqldump。

  ▷物理备份是指直接备份MySQL数据库文件,包括数据文件、日志文件等。常用的物理备份方法有使用cp命令复制数据库文件,或者使用专业的数据库备份工具,如Percona XtraBackup和MySQL Enterprise Backup等。

  ▷逻辑备份可以跨平台恢复,并且备份文件通常较小,但恢复时间较长;而物理备份恢复速度较快,但备份文件较大,并且通常只能在相同的操作系统上进行恢复。选取逻辑备份还是物理备份取决于具体的备份策略和恢复需求。

数据库安全

1.什么是数据库安全?

数据库安全是指保护数据库免受未经授权的访问、数据泄露、数据损坏等安全威胁的一系列措施。它涉及到对数据库的访问控制、身份验证、数据加密、备份和恢复等方面的安全性保护。

2.如何创建用户并设置权限?

  ▷创建用户可以使用CREATE USER语句,指定用户名和密码。例如,创建用户名为myuser的用户,可以使用以下命令:

  ▷设置用户权限可以使用GRANT语句,指定权限和用户。例如,授予用户myuser对数据库mydatabase的全部权限,可以使用以下命令:  

  ▷在完成用户创建和权限设置后,需要使用FLUSH PRIVILEGES语句刷新权限表,使修改生效。

3.如何保护数据库的安全性?

  ▷设定复杂的密码策略,要求用户使用强密码,并定期更改密码。

  ▷限制数据库的网络访问,只允许特定的IP地址或域名进行访问。

使用合适的身份验证方法,如使用加密的连接和SSL证书。

  ▷实施权限控制,只授予用户所需的最低权限,并定期审查和更新权限设置。

  ▷对敏感数据进行加密存储,以防止数据泄露。

定期备份数据库,并将备份数据存储在安全的位置。

  ▷定期进行数据库安全审计,检查数据库的安全性和漏洞。

  ▷及时应用数据库软件的安全补丁和更新。

主从复制

1.什么是主从复制?

主从复制是一种数据库复制技术,其中一个数据库被定义为主数据库(Master),而其他一个或多个数据库则作为从数据库(Slave)。主数据库负责处理写操作并记录所做的更改,而从数据库则通过复制主数据库中的事务日志来同步更新。

2.如何配置主从复制?

配置主从复制通常需要完成以下步骤:

  ▷在主数据库上,启用二进制日志(binary logging),可以在MySQL配置文件中设置log-bin参数,并重启MySQL服务。

  ▷创建一个用于复制的用户,并为该用户分配适当的复制权限。

  ▷在从数据库上,编辑MySQL配置文件,设置server-id参数,确保唯一性。

  ▷启动从数据库,并执行CHANGE MASTER TO命令,配置连接到主数据库的设置,包括主数据库的IP地址、复制账号和密码等。

  ▷开启从库的复制进程,使从数据库开始复制主数据库的数据和更改。

3.主从复制的原理是什么?

主从复制的原理可以简单描述为以下步骤:

  ▷主数据库记录所有的写操作,将这些更改以二进制日志(binary log)的形式保存。

  ▷从数据库连接到主数据库,并通过复制主数据库的二进制日志来同步数据。

  ▷从数据库读取主数据库的二进制日志,并将其中的操作重放在自己的数据库上,使从数据库和主数据库保持数据一致性。

  ▷定期检查并应用主数据库的更改,以便及时同步数据。

使用主从复制可以实现数据的备份、负载均衡、故障恢复等功能。当主数据库发生故障时,可以快速切换到从数据库,确保数据的持久性和可用性。 

八月已临近尾声+3,

我们抽奖免费送书活动仍在继续,

还没有拿到这波福利的同学赶快冲!

点击阅读全文拿大礼!

更多干货我们下期再说!

往期回顾:

大厂高频Java面试题——SE篇(一)

我是小动,

深情与专一并存,

一家只做Java的培训机构。

戳戳戳!抽奖吧!

小讯
上一篇 2025-05-28 18:37
下一篇 2025-04-26 11:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/200071.html