牛客网SQL篇刷题篇(38-47)

1.视图:视图是可视化的表。

视图的作用:

第一点:使用视图,可以定制用户数据,聚焦特定的数据。

解释:

在实际过程中,公司有不同角色的工作人员,我们以销售公司为例的话,

采购人员,可以需要一些与其有关的数据,而与他无关的数据,对他没

有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视

图,以后他在查询数据时,只需select * from view_caigou 就

可以啦。

第二点:使用视图,可以简化数据操作。

解释:我们在使用查询时,在很多时候我们要使用聚合函数,同时还要

显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能

会很长,如果这个动作频繁发生的话,我们可以创建视图,这以后,我

们只需要select * from view1就可以啦~,是不是很方便呀~

第三点:使用视图,基表中的数据就有了一定的安全性

解释:

因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以

将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集

合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改

和删除,可以保证数据的安全性。

第四点:可以合并分离的数据,创建分区视图

解释:

随着社会的发展,公司的业务量的不断的扩大,一个大公司,下属都设有很

多的分公司,为了管理方便,我们需要统一表的结构,定期查看各公司业务

情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些

数据合并为一个表格里,就方便多啦,这时我们就可以使用union关键字,

将各分公司的数据合并为一个视图。

创建视图:

CREATE VIEW view_name

AS SELECT column_name(s) FROM table_name WHERE condition

2.强制索引

MYSQL中强制索引查询使用:FORCE INDEX(indexname);

SQLite中强制索引查询使用:INDEXED BY indexname;

题目:针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005,使用强制索引。

在SQLite中:

1

SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005

在Mysql中:

1

2

create index idx_emp_no on salaries(emp_no);

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

2.ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、修改或删除列。

如需在表中添加列,请使用下列语法:

ALTER TABLE table_name ADD column_name datatype

要删除表中的列,请使用下列语法:

ALTER TABLE table_name DROP COLUMN column_name

要改变表中列的数据类型,请使用下列语法:

ALTER TABLE table_name ALTER COLUMN column_name datatype

题目:在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为'2020-10-01 00:00:00'

ALTER TABLE actor

ADD create_date datetime NOT NULL default '2020-10-01 00:00:00'

3.删除重复记录

题目描述:删除emp_no重复的记录,只保留最小的id对应的记录。

 

讨论中答案:

题目描述:删除emp_no重复的记录,只保留最小的id对应的记录。

思路:1.找出每个emp_no里对应的最小id。2.删除除1里记录的所有数据。

1

2

3

4

5

6

7

delete from titles_test

where id not in

(

    select min(id)

    from titles_test

    group by emp_no

)

遭遇问题:you can't specify target table 'titles_test' for update in FROM clause

网查原因:在MYSQL里,不能先select一个表的记录,在按此条件进行更新和删除同一个表的记录,

解决办法:将select得到的结果,再通过中间表select一遍,这样就规避了错误,这个问题只出现于mysql,mssql和oracle不会出现此问题。

复制代码

1

2

3

4

5

6

7

8

9

10

delete from titles_test

where id not in

(

    select * from

    (

        select min(id)

        from titles_test

        group by emp_no

    ) as T1

)

4.replace函数

描述

将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现,直接使用update会报错。

CREATE TABLE titles_test (    id int(11) not null primary key,    emp_no  int(11) NOT NULL,    title  varchar(50) NOT NULL,    from_date  date NOT NULL,    to_date  date DEFAULT NULL); insert into titles_test values ('1', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'), ('2', '10002', 'Staff', '1996-08-03', '9999-01-01'), ('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'), ('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'), ('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'), ('6', '10002', 'Staff', '1996-08-03', '9999-01-01'), ('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');

题解

update titles_test set emp_no=replace(emp_no,"10001","10005")

where id=5

http://https://blog.csdn.net/bingguang1993/article/details/80592579/(SQL中的替换函数replace()使用)

5.修改表名

题目:将titles_test表名修改为titles_2017

题解:

RENAME TABLE titles_test to titles_2017;

ALTER TABLE titles_test RENAME TO titles_2017;

6.ADD CONSTRAINT FOREIGN KEY 创建外键约束

创建外键语句结构:

ALTER TABLE <表名>

ADD CONSTRAINT FOREIGN KEY (<列名>)

REFERENCES <关联表>(关联列)

eg:alter table audit

add constraint FK_ID foreign key (emp_no)

REFERENCES employees_test(id)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot2 集成 xxl-job任务调度中心_参数传递

文章目录一、xxl-job任务调度中心1. 调度中心创建任务2. 调度中心创建执行器二、执行器任务编码2.1. 单参数2.2. 多参数三、调度中心参数传递测试3.1. 单个参数传递3.2. 多个参数传递前提&#xff1a;执行器和xxl-job任务调度中心启动完毕 一、xxl-job任务调度中心 1. 调度中心…

Java-用IDEA创建Java项目

1. 创建项目 2. 创建空项目 3. 输入项目名 &#xff14;.配置JDK 点击Project Structure 配置JDK 点击Apply->OK 5. 新建模块 https://www.bilibili.com/video/BV12J41137hu?p21&spm_id_frompageDriver

DevOps:从「蒸汽时代」到「高铁时代」,SUNMI DevOps转型之路 | 原力计划

作者 | 文振熙、刘文沣责编 | 徐威龙封图| CSDN 下载于视觉中国商米科技成立于 2013 年&#xff0c;总部位于上海市杨浦区创智天地&#xff0c;是一家具有产品创新基因和互联网基因的公司。商米在短时间内迅速成长为一家近1000人的企业&#xff0c;产品研发人数占比一度超过70%…

SpringBoot2 集成 xxl-job任务调度中心_路由策略

文章目录一、简述二、故障转移演示2.1. 启动2个执行器2.2. 添加执行器ip2.3. 故障转移策略2.4. 启动任务2.5. 模拟8081执行器宕机2.6. 结论三、轮训策略演示3.1. 启动2个执行器3.2. 添加执行器ip3.3. 轮训策略3.4. 启动任务3.5. 日志分析3.6. 故障转移3.7. 重新启动8082执行器四…

Uniapp组件之间传参

1.父组件内引入子组件&#xff0c;并且子组件使用父组件内的数据 将子组件引入到父组件&#xff1a; <uni-pop :opts"defaultOptions"></uni-pop> import uniPop from /components/uniPop/uniPop.vue 子组件使用父组件内的数据&#xff1a; 2------创建…

基于大数据的舆情分析系统架构 - 架构篇

前言 互联网的飞速发展促进了很多新媒体的发展&#xff0c;不论是知名的大V&#xff0c;明星还是围观群众都可以通过手机在微博&#xff0c;朋友圈或者点评网站上发表状态&#xff0c;分享自己的所见所想&#xff0c;使得“人人都有了麦克风”。不论是热点新闻还是娱乐八卦&am…

Java-标识符和关键字

关键字 标识符 https://www.bilibili.com/video/BV12J41137hu?p22&spm_id_frompageDriver

SpringBoot2 集成 xxl-job任务调度中心_阻塞策略

阻塞处理策略&#xff1a;调度过于密集执行器来不及处理时的处理策略&#xff0c;策略包括&#xff1a;单机串行&#xff08;默认&#xff09;、丢弃后续调度、覆盖之前调度 阻塞处理策略说明单机串行&#xff08;默认&#xff09;任务依次排队执行丢弃后续调度当上一个任务没…

反转!Python再次卫冕2020年编程榜,Java和C回落,你怎么看?​

2020年转眼Q1季度快要结束&#xff0c;在近几个月的榜单中&#xff0c;Python持续19年的火爆&#xff0c;走在在卫冕的道路&#xff0c;并且与老牌语言Java、C的差距拉得更远了一些。近期Udemy 制作了一份《2020 年职场学习趋势报告》&#xff0c;指出了哪些技能最受职场人关注…

HTTP状态码415 springboot项目

1.415报错&#xff0c;有可能是parameter写错了&#xff0c;前台不接收这种形式 controller写RequestBody&#xff0c;前台url写&#xff1f;name1&number1就会报错415

Windows下安装ab

文章目录1. 官网地址2. 传送门3. 发起压测1. 官网地址 https://www.apachelounge.com/download/ https://www.apachelounge.com/download/ 2. 传送门 快速下载 httpd-2.4.46-win32 快速下载 httpd-2.4.46-win64 3. 发起压测 进入bin目录 模拟100个请求 10个并发 请求慕…

Hive 热门数据分析面试题解析

作者 | 数据管道责编 | 徐威龙封图| CSDN 下载于视觉中国SQL中有一类函数叫聚合函数&#xff0c;比如count、sum、avg、min、max等&#xff0c;这些函数的可以将多行数据按照规整聚集为一行&#xff0c;一般聚集前的数据行要大于聚集后的数据行。而有时候我们不仅想要聚集前的数…

不改代码也能全面 Serverless 化,阿里中间件如何破解这一难题?

Serverless 话题涉及范围极广&#xff0c;几乎包含了代码管理、测试、发布、运维和扩容等与应用生命周期关联的所有环节。在线应用如何不改代码也能迁移到 Serverless 架构&#xff1f;今天&#xff0c;我们来揭秘阿里巴巴成千上万在线应用的Serverless 演进过程。 AWS Lambda …

java中的值传递

1.概述 引用类型中&#xff0c;java中全部都是值传递&#xff0c;传递对象里的值&#xff0c;而不会传递对象本身。 2.代码示例 public class Main {public static void main(String[] args) {Student a new Student();Student b new Student();a.setName("zhangsan&q…

linux 环境搭建 Sentinel 控制台

文章目录一、搭建Sentinel 控制台1. Sentine文档2. 下载稳定版本3. 启动sentinel4. 登录 sentinel一、搭建Sentinel 控制台 1. Sentine文档 https://github.com/alibaba/Sentinel/wiki/控制台 2. 下载稳定版本 https://github.com/alibaba/Sentinel/releases wget https:/…

2019阿里巴巴技术面试题集锦(含答案)

为帮助开发者们提升面试技能、有机会入职阿里&#xff0c;云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次整体放出。并通过这些笔试真题开放阿里巴巴工作机会&#xff0c;让更多的开发者加入到阿里这个大平台。 …

揭秘!闲鱼拉新投放系统如何设计

背景 闲鱼目前已经是国内最大的闲置物品交易平台。随着闲鱼体量的增长和用户规模不断扩大&#xff0c;闲鱼App上的一个普通banner抑或是feeds中的一张普通的卡片&#xff0c;每天都可能被数以千万计的人看到。 为了更好地服务好广大的用户群体&#xff0c;更加个性化的内容推…

Springboot/Cloud集成Sentinel 和 入门实战

文章目录一、Springboot/Cloud集成Sentinel1. spring-cloud-alibaba依赖2. 引入 Sentinel starter3. 配置application.yml3. 接入限流埋点4. 访问接口5. sentinel控制台二、入门实战2.1. 流控管理2.2. 快速访问请求一、Springboot/Cloud集成Sentinel 1. spring-cloud-alibaba依…

Java-变量、常量

变量 public class Demo06 {// 类变量 staticstatic double salary 888;// 实例变量&#xff1a; 从属于对象; 如果不自行初始化&#xff0c;这个类型的默认值是 0 0.0// 布尔值 &#xff1a; 默认是false// 除了基本类型&#xff0c;其余都是nullString name;int age;public …

为什么kill进程后socket一直处于FIN_WAIT_1状态

本文介绍一个因为conntrack内核参数设置和iptables规则设置的原因导致TCP连接不能正常关闭(socket一直处于FIN_WAIT_1状态)的案例&#xff0c;并介绍conntrack相关代码在conntrack表项超时后对新报文的处理逻辑。 案例现象 问题的现象&#xff1a; ECS上有一个进程&#xff0…