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)

牛客网SQL篇刷题篇(38-47)相关推荐

  1. C语言牛客网(NowCoder)刷题篇

    大家好!我是沐曦希

  2. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等

    NOI题库 python题解-2022.01.07整理(1.1-1.3) NOI题库 python题解-2022.01.07整理(1.1-1.3)_dllglvzhenfeng的博客-CSDN博客 N ...

  3. LeetCode 牛客网 C++ 算法 刷题必备基础知识

    LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} 文章目录 LeetCode 牛客网 C++ 算法 刷题必备基础知识 {ignore} main综合模板 数组排序库 字符串库 ...

  4. 洛谷、牛客网、AcWing 刷题(python版)

    牛客网python专项练习整理(一) https://blog.csdn.net/weixin_41913008/article/details/87203468 牛客网剑指offer--python ...

  5. 牛客网c语言刷题130,开篇入门刷题,战胜对编程的恐惧,适合初学者食用。

    大一,大二初学者训练题 1. BC1-实践出真知 2. BC2-我是大V 3. BC3-有容乃大 4. BC7-缩短二进制 5. BC19-反向输出一个四位数 6. BC28- 大小写转换 本文所有题 ...

  6. 牛客网与leetcode刷题(高频题中简单or中等的)

    目录 1.反转链表 2.排序 3.先序中序后序遍历 4.最小的k个数 5.子数组的最大累加和 6. 用两个栈实现队列 7.142. 环形链表 II 8.20. 有效的括号 9.最长公共子串(动态规划) ...

  7. 牛客网C语言刷题(指针篇)

    ✅作者简介:大家好我是:嵌入式基地,是一名嵌入式工程师,希望一起努力,一起进步!

  8. 牛客网SQL大厂真题二刷小白白话总结(二)用户增长场景(某度信息流)

    二.用户增长场景(某度信息流) 目录 二.用户增长场景(某度信息流) SQL7 2021年11月每天的人均浏览文章时长(简单) SQL8 每篇文章同一时刻最大在看人数(中等) SQL9 2021年11 ...

  9. 牛客网SQL大厂真题二刷小白白话总结(五)某宝店铺分析(电商模式)

    目录 SQL25 某宝店铺的SPU数量(简单) SQL26 某宝店铺的实际销售额与客单价(简单) SQL27 某宝店铺折扣率(中等) SQL28 某宝店铺动销率与售罄率(较难) SQL29 某宝店铺连 ...

  10. 牛客网SQL大厂真题二刷小白白话总结(三)电商场景(某东商城)

    三.电商场景(某东商城) 目录 SQL13 计算商城中2021年每月的GMV(简单) SQL14 统计2021年10月每个退货率不大于0.5的商品各项指标(中等) SQL15 某店铺的各商品毛利率及店 ...

最新文章

  1. 失败的Omni协议与继续前行的虫洞协议
  2. 【Groovy】闭包 Closure ( 自定义闭包参数 | 自定义单个闭包参数 | 自定义多个闭包参数 | 闭包参数默认值指定 )
  3. 杂谈人工智能说大数据
  4. MathType可以在Word、PPT中插入矩阵吗
  5. 调整xfce中的鼠标大小到48以上-目前还没有完成
  6. SAP UI5应用里搜索功能的实现
  7. vuejs深入浅出—基础篇
  8. CXF入门教程(一)
  9. 大家都在发圣诞树,我偏偏要发一个圣诞小游戏给大家玩【内附源码】
  10. linux shell常用函数,ps
  11. mysql 表格入门_MySQL-快速入门(1)基本数据库、表操作语句
  12. excel锁定某一列,不给修改
  13. 12306网站火车票抢票详细攻略(gohome抢票程序)
  14. 谈谈毕业之后的第一份工作的感悟
  15. 使用 NW.js 将 Web 应用打包为桌面应用nw-builder
  16. IDEA必备插件系列 - Key Promoter X(快捷键使用提示)
  17. 【渝粤教育】广东开放大学 搜索引擎营销(SEM) 形成性考核 (47)
  18. 一文了解 Python 中的生成器
  19. ycsb mysql_使用 YCSB 测试 MySQL on TerarkDB
  20. NB-IoT与LTE差异

热门文章

  1. 视频质量检测中的TP、FP、Reacll、Precision
  2. 【转载保存】Lucene7.1.0超详细的使用文档
  3. FileOutputStream为false时候注意的问题
  4. 一文详解Redis中BigKey、HotKey的发现与处理
  5. 超燃!支付宝技术双11纪录片《一心一役》全球独家首发
  6. 分布式系统:一致性协议
  7. 阿里巴巴开源的通用缓存访问框架JetCache介绍
  8. 触发死锁怎么办?MySQL 的死锁系列:锁的类型以及加锁原理了解一下!
  9. Spark精华问答 | 谈谈spark中的宽窄依赖
  10. 基于Kubernetes的持续部署方案