mysql基础知识点总结

阿里巴巴面试题:你在项目中为什么选用mysql数据库,而不是NoSQL数据库呢?

答:面试官好,我们的项目中既使用了关系型数据库mysql,也使用了NoSQL数据库(非关系型数据库)Redis,这是根据不同的业务场景决定的。

    关系型数据库的优点:

    mysql数据库是关系型数据库,数据是以关系表的方式存储在硬盘中的,对于一些复杂的查询操作,关系型数据库比较方便。比方说商品,商品一般会对应三张表,分别是商品表、商品详细表、商品规格参数表,这三张表通过主外键关联在一起,如果我想查询到一条同时包含三张表中的某些字段的数据信息,需要用到关联查询,关系型数据库是很方便的。而NoSQL数据库是非关系型数据库,是基于键值对的,而且键值对与键值对之间是彼此独立,没有关联的。假如键对应着商品的主键ID,值对应着商品信息,所有的商品信息存储在一个字符串中,当你需要对商品信息中的某部分进行增、删、改、查操作的时候,都非常麻烦。

    mysql数据库安全性比NoSql(非关系型数据库)安全性要高。mysql支持事务,支持事务的四大特性ACID,即原子性、一致性、隔离性、持久性,安全性能非常好,而NoSQL数据库对事务支持的不完整,安全性能较低。

    非关系型数据库的优点:

    在一些涉及到频繁查询操作的节点上,以及一些临时存储的数据,我们需要利用NoSQL数据库进行缓存处理,以提高查询的效率,比如网站首页的访问,比如单点登录系统,比如临时购物车数据的存储。NoSQL数据库有如下优点:   

        易扩展NoSQL数据库没有关系型数据库的关系型特性,数据之间没关系,容易扩展。

        读写性能高。一般情况下,NoSQL数据库的数据存储在内存中,读写性能高。

        丰富的数据类型NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据类型,比如Redis,支持6中数据类型。

        高可用NoSQL很容易实现高可用的架构。


一句话描述mysql

答:mysql是一款免费、开源的关系型数据库。

SQL语言的四种类型是什么?

答:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL

DDL指什么?

答:数据定义语言。

DML指什么?

答:数据操纵语言。

DQL指什么?

答:数据查询语言。

DCL指什么?

答:数据控制语言。

对数据库//字段进行增、删、改、查的关键字分别是什么?

答:create(增)、drop(删)、alter(改)、show/desc(查)。

对表中的数据进行增、删、改、查的关键字分别是什么?

答:insert(增)、delete(删)、update(改)、select(查)。

谈谈deletedroptruncate的区别?

答:delete用来删除数据库、表和表中的字段

       drop 用来删除表中的数据,可以全部删除,也可以按条件进行删除

       truncate 用来删除表中的数据,只能全部删除,不能按条件进行删除

       delete drop 在删除完之后,可以用rollback回滚恢复

       truncate在删除完成之后不可以rollback回滚恢复

char与varchar的区别?varchar(50)中50代表的含义?
答:
char是定长字符串,varchar是变长字符串。varchar(50)中的50代表最多存放50个字符。

mysql中,常见的约束有哪些?

答:主键、外键、唯一、非空、自增长等。

什么是主键约束?(primary key

答:mysql中,能唯一标识一条记录的字段可称之为主键。主键的特点:一张表只能有一个主键,被主键约束的字段唯一且非空。

什么是外键约束?(foreign key

答:在一个表中存在的另一个表的主键称为此表的外键。

唯一约束的关键字是什么?

答:unique

 

非空约束的关键字是什么?

答:not null

 

自增长约束的关键字是什么?

答:auto_increment

查询关键字的顺序是怎样的?

答:select 列名 from 表名 where -> group by -> having -> order by -> limit;

模糊查询的关键字是什么?

答:like

模糊查询中,_%分别代指什么?

答:_代指一个字符,%代指任意多个字符。

去重复的关键字是什么?

答:distinct

order by进行排序时,有几种排序方式?

答:两种。asc(升序)desc(降序),默认为asc

常见的聚合函数有哪些?

答:sum(求和)、avg(求平均)、max(求最大值)、min(求最小值)、count(计数)。

havingwhere的区别

答:1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤

2.having后面可以使用聚合函数,where后面不可以使用聚合函数

分页的关键字是limitlimit后经常跟两个参数,pagerows,分别指什么?

答:page指查询第几页,rows指每页几条数据。

什么是合并结果集?有什么要求?

答:合并结果集就是把两个select语句的查询结果合并到一起。被合并的两个结果列数和列类型必须一致。

合并结果集用到的关键字有哪些?区别是什么?

答:unionunion allunion去除重复记录,union all不去除重复记录。

什么是子查询?

答:一条select语句结果作为另一条select语法一部分(查询条件、查询结果、表等)。

什么是连接查询?

答:若一个查询同时涉及两个或两个以上的表,则称之为连接查询。

连接查询会造成笛卡尔积,解决笛卡尔积的方法是什么?

答:利用主、外键关联关系。

常见的连接查询有哪些?

答:内连接、外连接(左外连接和右外连接)、交叉连接、完全连接等。

什么是内连接?内连接的关键字是什么?

答:仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接。在内连接中,只有在两个表中匹配的行才能在结果集中出现。关键字:inner join ... on

什么是左外连接?左外连接的关键字是什么?

答:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL。关键字:left join ... on

右外连接的关键字是什么?

答:在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NUL。关键字:right join ... on

交叉连接的关键字是什么?

答:cross join

完全连接的关键字是什么?

答:full join


什么是事务

答:事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。

       现实世界中最常见的事务例子可能就是转账了。

 

事务的4个特性?

答:ACID

原子性Atomic):事务是由一个或多个活动所组成的一个工作单元。原子确保事务中的所有操作全部发生或全部不发生。如果所有的活动都成功了,事务也就成功了。如果任意一个活动失败了,整个事务也失败并回滚。

一致性Consistent):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态。现实的数据不应该被损坏。

隔离性Isolated:事务允许多个用户对相同的数据进行操作,每个用户的操作不会与其他用户纠缠在一起。因此,事务应该被彼此隔离,避免发生同步读写相同数据的事情(注意的是,隔离性往往涉及到锁定数据库中的行或表)。

持久性Durable:一旦事务完成,事务的结果应该持久化,这样就能从任何的系统崩溃中恢复过来。这一般会涉及将结果存储到数据库或其他形式的持久化存储中。

 

通俗的说事务,指一组操作,要么都成功执行,要么都不执行(原子性)

在所有的操作没有执行完毕之前,其它会话不能够看到中间改变的过程(隔离性)

事务发生前和发生后,数据的总额保持不变(一致性)

事务产生的影响不能被撤销(持久性)


事务中可能会出现的并发问题有哪些?

答:脏读、不可重复读、幻读。

       解决并发问题的方法就是设置隔离级别。

       在理想情况下,事务之间是完全隔离的,从而可以防止这些问题发生,但是完全隔离会导致性能问题,因为它通常会涉及锁定数据库中的记录,侵占性的锁定会阻碍并发性,要求事务互相等待以完成各自的工作。

       考虑到完全的隔离会导致性能问题,而且并不是所有的应用程序都需要完全的隔离,所以有时应用程序需要在事务隔离上有一定的灵活性。因此就会有各种隔离级别。


事务中有几种隔离级别呢?

答:4种。读未提交(uncommitted)、读已提交(committed)、可重复读(repeatable_read)、串行化(serializable)。

  读未提交(uncommitted):允许读取尚未提交的数据变更。可能会导致脏读、幻读或不可重复读。

  读已提交(committed:允许读取并发事务已经提交的数据。可以阻止脏读、但是幻读或不可重复读仍有可能发生。

  可重复读(repeatable_read):可以阻止脏读和不可重复读,但可能会导致幻读。

  串行化(serializable):完全服从ACID的隔离级别,确保阻止脏读、不可重复读以及幻读。这是最慢的事务隔离级别,因为它通常是通过完全锁定事务相关的数据库表来实现的。


猜你喜欢

转载自blog.csdn.net/lz1170063911/article/details/80007805