牛客网数据库SQL实战详细剖析(31-40)

简介: 牛客网数据库SQL实战详细剖析(31-40)

这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程。


具体题目可参考牛客网的SQL实战模块:https://www.nowcoder.com/ta/sql?page=0



一、牛客网数据库SQL实战详细剖析(1-10)二、牛客网数据库SQL实战详细剖析(11-20)三、牛客网数据库SQL实战详细剖析(21-30)



第三十一题:获取select * from employees对应的执行计划


explain select * from employees;


explain模拟优化器执行SQL语句,在5.6以及以后的版本中,除过select,其他比如insert,update和delete均可以使用explain查看执行计划,从而知道mysql是如何处理sql语句,分析查询语句或者表结构的性能瓶颈。


作用:https://blog.csdn.net/UFO___/article/details/80951869 第三十二题:将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分


select CONCAT(last_name,' ',first_name) as Namefrom employees;


解题思路:①不同字符串连接方法不一样,在Mysql中,可以利用CONCAT()函数将多个字符串连接起来,中间用逗号隔开。②空格用' '表示。 三十三题:创建一个actor表,包含如下列信息


列表 类型 是否为NULL 含义
actor_id smallint(5) not null 主键id
first_name varchar(45) not null 名字
last_name varchar(45) not null 姓氏
last_update timestamp not null 最后更新时间,默认是系统的当前时间



create table actor(actor_id smallint(5) not null,first_name varchar(45) not null,last_name varchar(45) not null,last_update timestamp not null default current_timestamp,primary key(actor_id));


解题思路:最关键的两点是创建主键和默认系统当前时间的设置。

第三十四题:对于表actor批量插入如下数据


actor_id first_name last_name last_update
1 PENELOPE GUINESS 2006-02-15 12:34:33
2 NICK WAHLBERG 2006-02-15 12:34:33



insert into actor values(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),(2,'NICK','WAHLBERG','2006-02-15 12:34:33');


解题思路:插入数据语法:insert into <表名> values (<数据1>,<数据2>....); 
第三十五题:对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作


actor_id first_name last_name last_update
'3' 'ED' 'CHASE' '2006-02-15 12:34:33'



insert ignore into actor values(3,'ED','CHASE','2006-02-15 12:34:33');

解题思路:如果数据存在则忽略,在insert into之间加个ignore就可以。 


第三十六题:对于如下表actor,其对应的数据为:

actor_id first_name last_name last_update
1 PENELOPE GUINESS 2006-02-15 12:34:33
2 NICK WAHLBERG 2006-02-15 12:34:33


 创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表。

actor_name表结构如下:

列表 类型 是否为NULL 含义
first_name varchar(45) not null 名字
last_name varchar(45) not null 姓氏



create table actor_nameselect first_name,last_name from actor;


解题思路:不同数据库语法不同,在Mysql中,可以加as,也可以不加as。 
第三十七题:针对表actor结构创建索引,对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname


CREATE UNIQUE INDEX uniq_idx_firstname ON actor(first_name);


CREATE INDEX idx_lastname ON actor(last_name)


解题思路:创建唯一索引:CREATE UNIQUE INDEX <唯一索引名> ON <表名> (<列名>);


创建一个简单的索引:CREATE INDEX <普通索引名> ON <表名> (<列名>); 


第三十八题:针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v


CREATE VIEW actor_name_view(first_name_v,last_name_v)ASselect first_name,last_namefrom actor;


解题思路:创建视图语句:CREATE VIEW <视图名称> (<视图列名1>,<视图列名2>…)AS<select 语句>; 


第三十九题:针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引


create index idx_emp_no on salaries(emp_no);



select * from salaries FORCE INDEX (idx_emp_no) where emp_no = 10005;


解题思路:先创建索引,再创建强制索引查询,索引名一定要加括号,否则错误。
强制索引:FORCE INDEX(<索引名>);SELECT * FROM <表名> FORCE INDEX (<索引名>)参考:http://www.jb51.net/article/49807.htm 


第四十题:在表actor中,在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'0000-00-00 00:00:00'


alter table actoradd column create_date datetime NOT NULL default '0000-00-00 00:00:00';


解题思路:添加列是使用变更表定义的ALTER TABLE语句,ALTER TABLE <表名> ADD COLUMN <列名> <列的定义>;


--end--

相关文章
|
20天前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
78 9
|
1月前
|
存储 缓存 监控
71.7万/秒到1.4万/秒!数据库查询优化实战
在现代计算机系统中,程序的局部性原理是优化性能的关键。通过利用时间局部性和空间局部性,可以显著提升数据访问效率,减少高开销的操作如内存访问和网络 I/O。本文将探讨如何利用空间局部性原理,在实际案例中减少数据库查询量,并通过详细的监控和优化措施确保系统的稳定性和高效性。
71.7万/秒到1.4万/秒!数据库查询优化实战
|
1月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
111 6
|
2月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
100 11
|
2月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
2月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
21天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
119 42
|
12天前
|
关系型数据库 MySQL 网络安全
如何排查和解决PHP连接数据库MYSQL失败写锁的问题
通过本文的介绍,您可以系统地了解如何排查和解决PHP连接MySQL数据库失败及写锁问题。通过检查配置、确保服务启动、调整防火墙设置和用户权限,以及识别和解决长时间运行的事务和死锁问题,可以有效地保障应用的稳定运行。
67 25
|
7天前
|
SQL 关系型数据库 MySQL
数据库数据恢复——MySQL简介和数据恢复案例
MySQL数据库数据恢复环境&故障: 本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL数据库没有备份,未开启binlog。 人为误操作,在用Delete命令删除数据时未添加where子句进行筛选导致全表数据被删除,删除后未对该表进行任何操作。

热门文章

最新文章