mysql基础知识点总结
一句话描述mysql?答:mysql是一款免费、开源的关系型数据库。 SQL语言的四种类型是什么?答:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL。 DDL指什么?答:数据定义语言。 DML指什么?答:数据操纵语言。 DQL指什么?答:数据查询语言。 DCL指什么?答:数据控制语言。 对数据库/表/字段进行增、删、改、查的关键字分别是什么?答:create(增)、
MySQL知识点总结
阿里巴巴面试题:你在项目中为什么选用mysql数据库,而不是NoSQL数据库呢?
答:面试官好,我们的项目中既使用了关系型数据库mysql,也使用了NoSQL数据库(非关系型数据库)Redis,这是根据不同的业务场景决定的。
关系型数据库的优点:
mysql数据库是关系型数据库,数据是以关系表的方式存储在硬盘中的,对于一些复杂的查询操作,关系型数据库比较方便。比方说商品,商品一般会对应三张表,分别是商品表、商品详细表、商品规格参数表,这三张表通过主外键关联在一起,如果我想查询到一条同时包含三张表中的某些字段的数据信息,需要用到关联查询,关系型数据库是很方便的。而NoSQL数据库是非关系型数据库,是基于键值对的,而且键值对与键值对之间是彼此独立,没有关联的。假如键对应着商品的主键ID,值对应着商品信息,所有的商品信息存储在一个字符串中,当你需要对商品信息中的某部分进行增、删、改、查操作的时候,都非常麻烦。
mysql数据库安全性比NoSql(非关系型数据库)安全性要高。mysql支持事务,支持事务的四大特性ACID,即原子性、一致性、隔离性、持久性,安全性能非常好,而NoSQL数据库对事务支持的不完整,安全性能较低。
非关系型数据库的优点:
在一些涉及到频繁查询操作的节点上,以及一些临时存储的数据,我们需要利用NoSQL数据库进行缓存处理,以提高查询的效率,比如网站首页的访问,比如单点登录系统,比如临时购物车数据的存储。NoSQL数据库有如下优点:
易扩展。NoSQL数据库没有关系型数据库的关系型特性,数据之间没关系,容易扩展。
读写性能高。一般情况下,NoSQL数据库的数据存储在内存中,读写性能高。
丰富的数据类型。NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据类型,比如Redis,支持6中数据类型。
高可用。NoSQL很容易实现高可用的架构。
1.一句话描述mysql?
答:mysql是一款免费、开源的关系型数据库。
2.SQL语言的四种类型是什么?
答:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL。
3.DDL指什么?
答:数据定义语言。
4.DML指什么?
答:数据操纵语言。
5.DQL指什么?
答:数据查询语言。
6.DCL指什么?
答:数据控制语言。
7.对数据库/表/字段进行增、删、改、查的关键字分别是什么?
答:create(增)、drop(删)、alter(改)、show/desc(查)。
8.对表中的数据进行增、删、改、查的关键字分别是什么?
答:insert(增)、delete(删)、update(改)、select(查)。
9.谈谈delete、drop和truncate的区别?
答:delete用来删除数据库、表和表中的字段
drop 用来删除表中的数据,可以全部删除,也可以按条件进行删除
truncate 用来删除表中的数据,只能全部删除,不能按条件进行删除
delete 和drop 在删除完之后,可以用rollback回滚恢复
truncate在删除完成之后不可以rollback回滚恢复
10.char与varchar的区别?varchar(50)中50代表的含义?
答:char是定长字符串,varchar是变长字符串。varchar(50)中的50代表最多存放50个字符。
11.mysql中,常见的约束有哪些?
答:主键、外键、唯一、非空、自增长等。
12.什么是主键约束?(primary key)
答:mysql中,能唯一标识一条记录的字段可称之为主键。主键的特点:一张表只能有一个主键,被主键约束的字段唯一且非空。
13.什么是外键约束?(foreign key)
答:在一个表中存在的另一个表的主键称为此表的外键。
14.唯一约束的关键字是什么?
答:unique。
15.非空约束的关键字是什么?
答:not null。
16.自增长约束的关键字是什么?
答:auto_increment。
17.查询关键字的顺序是怎样的?
答:select 列名 from 表名 where -> group by -> having -> order by -> limit;
18.模糊查询的关键字是什么?
答:like。
19.模糊查询中,_和%分别代指什么?
答:_代指一个字符,%代指任意多个字符。
20.去重复的关键字是什么?
答:distinct。
21.用order by进行排序时,有几种排序方式?
答:两种。asc(升序)和desc(降序),默认为asc。
22.常见的聚合函数有哪些?
答:sum(求和)、avg(求平均)、max(求最大值)、min(求最小值)、count(计数)。
23.having与where的区别?
答:1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤
2.having后面可以使用聚合函数,where后面不可以使用聚合函数
24.分页的关键字是limit,limit后经常跟两个参数,page和rows,分别指什么?
答:page指查询第几页,rows指每页几条数据。
25.什么是合并结果集?有什么要求?
答:合并结果集就是把两个select语句的查询结果合并到一起。被合并的两个结果列数和列类型必须一致。
26.合并结果集用到的关键字有哪些?区别是什么?
答:union和union all。union去除重复记录,union all不去除重复记录。
27.什么是子查询?
答:一条select语句结果作为另一条select语法一部分(查询条件、查询结果、表等)。
28.什么是连接查询?
答:若一个查询同时涉及两个或两个以上的表,则称之为连接查询。
29.连接查询会造成笛卡尔积,解决笛卡尔积的方法是什么?
答:利用主、外键关联关系。
30.常见的连接查询有哪些?
答:内连接、外连接(左外连接和右外连接)、自然连接、交叉连接等。
31.什么是内连接?内连接的关键字是什么?
答:仅将两个表中满足连接条件的行组合起来作为结果集,称为内连接。在内连接中,只有在两个表中匹配的行才能在结果集中出现。关键字:inner join ... on。
32.什么是左外连接?左外连接的关键字是什么?
答:在内连接的基础上,还包含左表中所有不符合条件的数据行,并在其中的右表列填写NULL。关键字:left join ... on。
33.右外连接的关键字是什么?
答:在内连接的基础上,还包含右表中所有不符合条件的数据行,并在其中的左表列填写NUL。关键字:right join ... on。
34.交叉连接的关键字是什么?
答:cross join。
35.什么是事务。
答:事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。
现实世界中最常见的事务例子可能就是转账了。
36.事务的4个特性?
答:ACID。
原子性(Atomic):事务是由一个或多个活动所组成的一个工作单元。原子确保事务中的所有操作全部发生或全部不发生。如果所有的活动都成功了,事务也就成功了。如果任意一个活动失败了,整个事务也失败并回滚。
一致性(Consistent):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态。现实的数据不应该被损坏。
隔离性(Isolated):事务允许多个用户对相同的数据进行操作,每个用户的操作不会与其他用户纠缠在一起。因此,事务应该被彼此隔离,避免发生同步读写相同数据的事情(注意的是,隔离性往往涉及到锁定数据库中的行或表)。
持久性(Durable):一旦事务完成,事务的结果应该持久化,这样就能从任何的系统崩溃中恢复过来。这一般会涉及将结果存储到数据库或其他形式的持久化存储中。
通俗的说事务,指一组操作,要么都成功执行,要么都不执行(原子性)
在所有的操作没有执行完毕之前,其它会话不能够看到中间改变的过程(隔离性)
事务发生前和发生后,数据的总额保持不变(一致性)
事务产生的影响不能被撤销(持久性)
37.事务中可能会出现的并发问题有哪些?
答:脏读、不可重复读、幻读。
解决并发问题的方法就是设置隔离级别。
在理想情况下,事务之间是完全隔离的,从而可以防止这些问题发生,但是完全隔离会导致性能问题,因为它通常会涉及锁定数据库中的记录,侵占性的锁定会阻碍并发性,要求事务互相等待以完成各自的工作。
考虑到完全的隔离会导致性能问题,而且并不是所有的应用程序都需要完全的隔离,所以有时应用程序需要在事务隔离上有一定的灵活性。因此就会有各种隔离级别。
38.事务中有几种隔离级别呢?
答:4种。读未提交(uncommitted)、读已提交(committed)、可重复读(repeatable_read)、串行化(serializable)。
读未提交(uncommitted):允许读取尚未提交的数据变更。可能会导致脏读、幻读或不可重复读。
读已提交(committed):允许读取并发事务已经提交的数据。可以阻止脏读、但是幻读或不可重复读仍有可能发生。
可重复读(repeatable_read):可以阻止脏读和不可重复读,但可能会导致幻读。
串行化(serializable):完全服从ACID的隔离级别,确保阻止脏读、不可重复读以及幻读。这是最慢的事务隔离级别,因为它通常是通过完全锁定事务相关的数据库表来实现的。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)