推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

2020年最新版MySQL面试题(四)

   2023-06-24 网络整理佚名1090
核心提示:这个较为好理解即查询操作,以关键字。DQL与DML共同构建了多数初级程序员常用的增删改查操作。表连接面试题子查询是多行多列的情况:结果集类似于一张虚拟表,不能用于where条件,用于子句中做为子表连接,而语句是对外表作loop循环,每次loop循环再对内表进行查询。因此,在不再需要一张表的时候,用drop;在想删除部分数据行时候,用;在保留表而删除所有数据的时候用。

存储过程和函数

1.什么是存储过程? 优缺点都有什么?

存储过程是预编译的 SQL 语句。 优点是允许模块化设计,即只需要创建一次,以后可以在程序中多次调用。 如果一个操作需要执行多个SQL,使用存储过程比纯SQL语句更快。

优势

缺点

扳机

1.什么是触发器? 触发器的使用场景有哪些?

触发器是用户在关系表上定义的特殊事件驱动存储过程。 触发器是当事件被触发时自动执行的一段代码。

使用场景

通过数据库中的相关表可以实现级联更改。 实时监控表中某个字段的变化需要进行相应的处理。 例如,可以生成一些商业号码。 注意不要滥用它,否则会给数据库和应用程序的维护带来困难。

需要牢记以上基础知识点,重点是要了解数据类型CHAR和CHAR的区别,以及表存储引擎和CHAR的区别。

2. MySQL中有哪些触发器?

MySQL数据库中有六种类型的触发器:

常用的SQL语句

1. SQL语句主要有哪些类型?

①数据定义语言DDL(Data)、DROP、ALTER。 上述操作主要是对逻辑结构的操作,包括表结构、视图和索引。

②数据查询语言DQL(Data Query)。 这个比较容易理解,就是根据关键字进行查询操作。 各种简单查询、连接查询等都属于DQL。

③数据操作语言DML(Data),,。 主要是针对上面的操作,即对数据进行操作。 对应上面提到的查询操作,DQL和DML共同构造了大多数初级程序员常用的增删改查操作。 查询是一种特殊的查询,分为DQL。

④ 数据控制函数DCL(数据)GRANT,,,。 主要原因是上述操作对数据库的安全性和完整性都有操作,可以简单理解为权限控制。

2. 什么是超级键、候选键、主键和外键?

①超键:能够唯一标识关系中元组的属性集,称为关系模式的超键。 一个属性可以作为超级键,多个属性的组合也可以作为超级键。 超级键包括候选键和主键。

②候选键:是最小的超级键,即没有冗余元素的超级键。

③主键:唯一、完整地标识数据库表中存储的数据对象的数据列或属性的组合。 一个数据列只能有一个主键,并且主键的值不能缺失,即不能为空值(Null)。

④外键:一个表中存在的另一表的主键称为该表的外键。

3. SQL 约束有哪些类型?

四到六个相关查询

SELECT * FROM A,B(,C)或者SELECT * FROM A CROSS JOIN B (CROSS JOIN C)#没有任何关联条件,结果是笛卡尔积,结果集会很大,没有意义,很少使用内连接(INNER JOIN)SELECT * FROM A,B WHERE A.id=B.id或者SELECT * FROM A INNER JOIN B ON A.id=B.id多表中同时符合某种条件的数据记录的集合,INNER JOIN可以缩写为JOIN

1.内部连接分为三类

2. 外连接(LEFT JOIN/RIGHT JOIN)

3.联合查询(UNION和UNION ALL)

SELECT * FROM A UNION SELECT * FROM B UNION ...

4.全连接(FULL JOIN)

SELECT * FROM A LEFT JOIN B ON A.id=B.id UNIonSELECT * FROM A RIGHT JOIN B ON A.id=B.id

5. 表连接面试问题

有2个表,1个R和1个S,R表有三列ABC,S表有两个CD列,每个表有3条记录。

R表

稳定的

交叉连接(笛卡尔积):

select r.*,s.* from r,s

内连接结果:

select r.*,s.* from r inner join s on r.c=s.c

左连接结果:

select r.*,s.* from r left join s on r.c=s.c

右连接结果:

select r.*,s.* from r right join s on r.c=s.c

全表连接的结果(MySql不支持,但支持):

select r.*,s.* from r full join s on r.c=s.c

5.什么是子查询?

六、子查询的三种情况

1、子查询为单行单列时:结果集为值,父查询使用:=等运算符

-- 查询工资最高的员工是谁?select  * from employee where salary=(select max(salary) from employee);

2、子查询是多行单列情况:结果集类似数组,父查询使用:in运算符

-- 查询工资最高的员工是谁?select  * from employee where salary=(select max(salary) from employee);

3、子查询多行多列:结果集类似于虚拟表,不能用在where条件中,而是在子句中作为子表使用

-- 1) 查询出2011年以后入职的员工信息-- 2) 查询所有的部门信息,与上面的虚拟表中的信息比对,找出所有部门ID相等的员工。select * from dept d,  (select * from employee where join_date > '2011-1-1') e where e.dept_id =  d.id;     -- 使用表连接:select d.*, e.* from  dept d inner join employee e on d.id = e.dept_id where e.join_date >  '2011-1-1'  

7.in和mysql的区别

mysql中的in语句是在外表和内表之间进行哈希连接,该语句是在外表上进行循环循环,然后在每个循环循环后查询内表。 大家一直认为它比in语句效率更高,但这种说法其实是不准确的。 这是为了区分环境。

八、与char的区别

炭化特性

特别的

总之,结合性能(char更快)和节省磁盘空间(更小),针对特定情况专门设计数据库是合适的。

9.(50)中50的含义

最多存储50个字符,(50)和(200)为hello存储相同的空间,但后者在排序时会消耗更多的内存,因为order by col使用了col长度的计算(引擎是相同的)。 在早期的MySQL版本中,50代表字节数,现在它代表字符数。

10. int(20)中20的含义

指显示字符的长度。 20表示最大显示宽度为20,但仍占用4字节存储,存储范围不变; 不影响内部存储,只影响有定义的int,前面加多少个0,方便报表显示。

11、mysql为什么要这样设计

对大多数应用程序来说没有意义,只是指定一些工具使用的字符数; int(1)和int(20)的存储和计算相同;

12、mysql中int(10)和char(10)和(10)的区别

1、int(10)中的10表示显示数据的长度,而不是存储数据的大小; 图(10)和(10)中的10表示存储数据的大小,即存储了多少个字符。

2、char(10)表示存储10个固定长度的字符,如果少于10个字符用空格填充,则占用较多的存储空间。

3、(10)表示存储10个变长字符,存储多少个,空格也按1个字符存储,与char(10)的空格不同,它代表占位符不算作一个人物。

13.FLOAT和FLOAT有什么区别?

FLOAT类型数据最多可存储8位十进制数,占用内存4个字节。

类型数据最多可存储18位十进制数字,占用内存8个字节。

14. drop 和 和有什么不一样?

三个都是删除的意思,但是三者之间也有一些区别:

因此,当不再需要表时,使用drop; 当你想删除一些数据行时使用它; 当您想在保留表的同时删除所有数据时使用它。

15. UNION 和 UNION ALL 有什么区别?

如果使用 UNION ALL,则不会合并重复行

UNION 效率高于 UNION ALL

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON