mysql 唯一键忽略空串_数据库简答题

文章目录

1、简单说一说drop、delete与truncate的区别

2、什么是主键?什么是外键?并说出它们的作用

3、说出char和varchar的区别,及它们的适用场景

4、说出不小于3种mysql数据库支持的约束,并说明它们的使用场景

5、说出5种SQL中常用的聚合函数,并说明它们的作用

6、说出SQL中内连接、左连接、右连接的区别

7、谈谈数据库连接池的作用

8、数据库有100条数据,怎么查询第50,51条

9、什么是数据库事务

10、数据库事务的四大特性

11、事务并发访问会产生的问题(隔离性引发的问题)

12、MySQL是怎么管理事务的

13、谈谈对事务的保存点理解

14、数据库去重

15、group by 的注意事项

16、什么是索引?

17、索引的分类

18、索引的优缺点

19、什么情况应该使用索引?什么情况下又不应该使用?

20、主键(primary key)和唯一索引(unique index)区别

21、什么是视图?

22、表和视图的关系

23、mysql查询条件里如何拼接字符串

24、列举几种表连接方式, 有什么区别?

25、having是什么

26、在数据库中查询语句速度很慢,如何优化?

27、union和union all有什么不同?

28、在数据库中你怎么把时间进行格式化

29、count(*)和count(1)的效率哪个更高?

30、超键、候选键、主键、外键分别是什么?

31、数据库图形化工具的好处

32、数据库主键,不设置主键会怎么样

1、简单说一说drop、delete与truncate的区别

drop 用于删除结构:数据库、表

delete 删除数据,可以回滚

truncate 删除结构重建构建,不可以回滚

基于mysql

delete不重置自动增长列的计数值

truncate重置自动增长列的计数值

2、什么是主键?什么是外键?并说出它们的作用

主键:唯一标识一条记录的字段或字段的组合称为主键。

主键不能重复,也不允许为空

外键:用来维护两个表之间数据的一致性,。

外键可以有重复的, 也允许有空值

作用:

主键:用来保证数据完整性,保证记录的唯一性

外键:通过设置外键和其他表建立关联关系(一对一,一对多,多对多)

3、说出char和varchar的区别,及它们的适用场景

char是一种固定长度的字符串类型,

varchar是一种可变长度的字符串类型;

适用场景:

char一般用来存储长度固定字段,如:手机号,身份证号等

varchar一般用来存储不固定长度的字段:如:用户名,昵称等

4、说出不小于3种mysql数据库支持的约束,并说明它们的使用场景

主键约束:在主键上使用

外键约束:建立俩个表之间的关系时使用

唯一约束:保证数据表中某个字段数据的唯一性时使用

非空约束:需要保证数据库字段值不为空时使用

自动增长列:数据值自增时使用,字段类型必须是整数,且必须使用主键修饰。

5、说出5种SQL中常用的聚合函数,并说明它们的作用

avg():返回指定组中的平均值,空值被忽略;

count():返回指定组中的项目个数

max():返回指定数据中的最大值;

min():返回指定数据中的最小值;

sum():返回指定数据的和,只能用于数字列,空值忽略;

6、说出SQL中内连接、左连接、右连接的区别

内连接:是从结果表中删除与其他被连接表中没有匹配行的所有行

左连接(左外连接):以左表作为基准进行查询,左表数据都显示,连接条件成立右表数据显示,条件不成立显示null

右连接(右外连接):以右表作为基准进行查询,右表数据都显示,连接条件成立左表数据显示,条件不成立显示null

7、谈谈数据库连接池的作用

作用:

1.资源重用,避免了数据库连接频繁建立、关闭的开销

2.更快的系统响应速度,直接从连接池中获取连接,响应速度加快

3.控制资源的使用,连接池能自动维护池中的连接数量,提高资源的利用率。

常用的数据库连接池:DBCP、C3P0、Druid

8、数据库有100条数据,怎么查询第50,51条

select * from table_name limit 49, 2

原因:MySQL的limit用法:

select * from table limit m,n

其中m是指记录开始的index,从0开始,表示第一条记录;n是指从第m+1条开始,取n条。

9、什么是数据库事务

事务:业务中的一组操作,要么全部成功,要么全部失败,不可分割的工作单位。

10、数据库事务的四大特性

数据库事务的四大特性为:ACID,分别是原子性、一致性、隔离性和持久性

原子性:不可分割的工作单位,操作要么全部成功,要么全部失败;

一致性:一个事务执行前后,表中数据必须保持一致。比如:如果从A账户转账到B账户,不可能因为A账户扣了钱,而B账户没有加钱;

隔离性:事务的隔离性是指在并发环境中,并发的事务是互相隔离的,一个事务的执行不能被其它事务干扰;

持久性:事务一旦提交后,数据库中的数据必须被永久的保存下来。

11、事务并发访问会产生的问题(隔离性引发的问题)

脏读:一个事务读取到了另一个事务中尚未提交的数据

不可重复读:一个事务读取到了另一个事务中已经提交的数据,通常为update时引发的问题

幻读:一个事务读取到了另一个事务中已经提交的数据,通常为insert或delete时引发的问题

12、MySQL是怎么管理事务的

操作开始前开启事务,操作成功完成提交事务,操作失败回滚事务。

开启事务:start transaction

提交事务:commit

回滚事务:rollback

13、谈谈对事务的保存点理解

在事务的处理过程中,业务操作执行了一部分,可以记录一个保持点,程序继续执行,如果程序出现异常,可以回滚所有,也可以回滚到保持点,从而保证已经执行的部分操作可以进行事务的提交。

事务的保存点,类似单击游戏的存档和读档:

1、如果没有游戏的存档功能,每次玩单机游戏都会从第一关重新开始。

2、如果使用了游戏的存档功能,下次在玩游戏时,就会从存档处开始。

14、数据库去重

distinct 对查询结果去重。

借助group by 进行分组,也可以出现去重效果。

15、group by 的注意事项

1.除了聚合字段,select子句中出现的所有字段都必须在group by中出现

2group by后面可以写having,.having对分组结果进行过滤。

16、什么是索引?

索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。

索引的实现通常使用B树及其变种B+树。

索引相当于字典的目录,作用在于提升查询效率。

17、索引的分类

据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。

唯一索引:不允许其中任何两行具有相同索引值的索引。

主键索引:在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。

聚集索引:聚集索引通常提供更快的数据访问速度。

18、索引的优缺点

索引的优点:

通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;

可以大大加快数据的检索速度,这也是创建索引的最主要的原因;

索引的缺点:

创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加;

索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大;

当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度

参考:https://blog.csdn.net/u013310119/article/details/52527632

19、什么情况应该使用索引?什么情况下又不应该使用?

适用场景:

加快条件的判断速度;

在作为主键的列上,强制该列唯一

在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

在经常需要排序的列上创 建索引,因为索引已经排序

不适用场景:

查询少的列

数据内容少的列

text, image和bit数据类型的列不应该增加索引

修改多于查询的列不能加索引

20、主键(primary key)和唯一索引(unique index)区别

1, 主键一定是唯一性索引,唯一性索引并不一定就是主键。

2, 一个表中可以有多个唯一性索引,但只能有一个主键。

3, 主键列不允许空值,而唯一性索引列允许空值。

注意:唯一索引也称为唯一约束

21、什么是视图?

视图是一个虚拟表,其内容由查询定义。

从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。

从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。创建视图时候,可以是一个数据表的一部分,也可以是多个基表的联合,

从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例:查询,插入,修改,删除操作等。

22、表和视图的关系

用来创建视图的表叫做基表 base table

视图(view)是在基表之上建立的,它的结构(即所定义的列)和内容(即所有数据行)都来自基表,它依据基表存在而存在。一个视图可以对应一个基表,也可以对应多个基表。

区别:

1、视图是已经编译好的sql语句;而表不是。

2、视图没有实际的物理记录;而表有。

3、视图是窗口;表是内容

4、表占用物理空间而视图不占用物理空间

5、视图的建立和删除只影响视图本身,不影响对应的基本表。

23、mysql查询条件里如何拼接字符串

1.合并字段concat

select concat(user_name, password ) from tb_user;

下述只有mysql才有:

2.使用指定连接符合并字段 concat_ws

#是连接符:select concat_ws("#" , user_name , password ,id ) from tb_user;

3.合并结果group_concat,将所有结果显示在一个单元格中

:select group_concat(user_name , password ) from tb_user;

24、列举几种表连接方式, 有什么区别?

1.交叉连接:交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积

2.左右外连接:左连接以左表为基表,右表为从表,基表全部展示,从表数据对应匹配条件进行展示,没有匹配显示null

3.内连接:还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行。

25、having是什么

having关键字通常是与group by关键字联合使用

group by 进行分组,having对分组结果进行过滤。

26、在数据库中查询语句速度很慢,如何优化?

1 避免在where子句中进行null判断

2 避免在where子句中使用!=

3 避免在where子句中进行or条件连接

4 避免使用select*,而应该使用具体的字段名

5 避免使用like关键字

27、union和union all有什么不同?

都是集合运算,求的是并集:用于合并两个或多个 SELECT 语句的结果集

union:不允许出现重复的记录

union all:允许出现重复的记录

28、在数据库中你怎么把时间进行格式化

在数据库中可以使用 DATE_FORMAT(date,format)进行时间格式化(MySQL) Oracle:to_date

date 参数是合法的日期

format 参数规定日期/时间的输出格式

29、count(*)和count(1)的效率哪个更高?

count()和count(1)执行的效率是完全一样的

count(1)的执行计划将转化为count()

参考:

https://www.cnblogs.com/sueris/p/6650301.html

https://blog.csdn.net/moni_mm/article/details/82056021

30、超键、候选键、主键、外键分别是什么?

主键:唯一标识一条记录的字段或字段的组合称为主键。

主键不能重复,也不允许为空

外键:用来维护两个表之间数据的一致性,。

外键可以有重复的, 也允许有空值

31、数据库图形化工具的好处

可以直观的操作数据 查看数据,可以借助图形化界面轻松完成对数据库的常用操作

32、数据库主键,不设置主键会怎么样

1.主键用于表示数据(记录)的唯一性, 不设置主键会导致数据表中可能存在完全相同的数据;

2.一个表的外键必须是另一个表的主键,不设置主键将无法建立俩个表之间的关联关系;

3.设置主键时,会自动增加索引,有利于提高数据的检索速度;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值