临时表

MySQL视图操作命令详解

和自甴很熟 提交于 2020-02-09 03:16:45
上篇博文分享了视图的好处 mysql视图的作用(详细) 乘热打铁,看到一篇视图创建的博文觉得不错 创建视图 在MySQL中,创建视图的完整语法如下: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION] 其对应的语法变量信息如下: [OR REPLACE] 中括号中的 OR REPLACE关键字是可选的。如果当前数据库中已经存在指定名称的视图时,没有该关键字,将会提示错误信息;如果使用了 OR REPLACE关键字,则当前正在创建的视图会覆盖掉原来同名的视图。 [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] ALGORITHM子句是可选的,它表示使用何种算法来处理视图。此外,它并不属于标准SQL的一部分,而是MySQL对标准SQL进行的功能扩展。 ALGORITHM可以设置三个值: MERGE、 TEMPTABLE或 UNDEFINED。如果没有 ALGORITHM子句,则默认值为 UNDEFINED(未定义的)。 对于 MERGE,会将引用视图的语句的文本与视图定义合并起来

.NET工程师必须掌握的知识点

风格不统一 提交于 2020-02-05 21:00:45
Microsoft SQL Server 数据库 一、创建和维护数据库 1、数据库   SQL Server 数据库的组成部分?(参见联机丛书)   如何保证数据库的完整性、安全性、并发性?   数据库设计创建步骤?(参见联机丛书 - 创建数据库计划)   数据库设计考虑的事项?(参见联机丛书) 2、SQL Server 表   设计表时应注意哪些?   如何创建和使用约束、默认值和空值?   数据完整性分类有哪些?并且它们分别包括哪些约束?   约束有哪些?语法?   如何添加、修改和删除列? 在哪些情况下不可删除列?   创建和修改表 3、SQL Server 索引   索引的概念   索引的体系结构   索引的特性   索引的优点   索引的缺点   索引语法结构   主键、约束和索引   索引创建基本准则   索引的实际应用   重建索引? 4、SQL Server 视图   http://hi.baidu.com/ztf704/blog/item/9274cefc64a93ffffc037fb4.html   视图概念   功能特性   视图的几大优点   在创建视图前请考虑则   索引视图   索引视图必须满足下列要求   分区视图   可更新分区视图   可更新的分区视图规则   可更新的分区视图数据修改规则   分布式分区视图规则   视图使用时机 5、SQL

数据库——百万级数据库优化方案

时光总嘲笑我的痴心妄想 提交于 2020-02-05 14:27:12
** 百万级数据库优化方案 ** 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库. 备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。 不要以为 NULL 不需要空间,比如:char(100) 型,在字段建立时,空间就固定了, 不管是否插入值(NULL也包含在内),都是占用 100个字符的空间的,如果是varchar这样的变长字段, null 不占用空间。 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num = 0 3.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num = 10 or Name = 'admin' 可以这样查询:

数据库设计中的12个技巧

不问归期 提交于 2020-02-04 10:43:13
数据库设计中的12个技巧 1.原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张 原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一 张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。 明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情 况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2.主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R图中,处于叶子部位的实体,可 以定义主键,也可以不定义主键(因为它无子孙),但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成 以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就 是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。因为: 主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。 3.基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: (1)原子性。基本表中的字段是不可再分解的。 (2)原始性。基本表中的记录是原始数据(基础数据)的记录。 (3)演绎性

数据库设计中的13个技巧

 ̄綄美尐妖づ 提交于 2020-02-04 10:27:06
1.原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2.主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R图中,处于叶子部位的实体,可以定义主键,也可以不定义主键(因为它无子孙),但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。 3.基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: (1)原子性。基本表中的字段是不可再分解的。 (2)原始性。基本表中的记录是原始数据(基础数据)的记录。 (3)演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。 (4

2020年寒假假期总结0203

半腔热情 提交于 2020-02-03 15:46:55
  使用sqoop将hive中的统计数据导入到mysql中   思路:首先在hive上创建临时表,然后将统计数据放在临时表中,最后通过sqoop将临时表中的数据导入到mysql中。   例子:将各个官方部门回答的数量都导入到mysql中。   1.在hive中创建capital_temp表 create table capital_temp( object string, num int);   2.统计结果放入到临时表当中 insert capital_temp select object,count(1) as num from capital_info group by object   3.因为每个hive的表都在hdfs上有文件存储,所以我们只需将hdfs上的数据导入到mysql上即可。    bin/sqoop export --connect \ jdbc:mysql://192.168.133.130:3306/holiday2020?useUnicode=true\&characterEncoding=utf-8 \ --username root --password heiyang123 --table capital_temp \ --export-dir \ /user/hive/warehouse/capital_temp/000000_0 -

SQL: LEFT JOIN , RIGHT JOIN , INNER JOIN 区别 , on 和 where条件的区别

寵の児 提交于 2020-02-03 07:20:57
    数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。     例如如下两张表:     A(aid int , aname char(10) )     B(aid int , aname char(10) )     对应数据:                 执行语句: select * from a LEFT JOIN b on aid=bid               A左连接B , 先取A中的一条记录 , 去匹配B表中每一条数据 , 假设A中其中一条数据是a1,B中一条数据是b1;     如果a1和b1 匹配 on 条件 ,在on中条件为 true , a1 b1 连在一起成为一条结果的数据,如果是false , 不成为结果;     然后a1 和 b2 ,a1 和 b3 …… 以此类推。     如果 a1 跟 B表中任何一条数据都不匹配,则会返回一条像第一条数据一样的结果。B的列为 null 。     然后拿a2 和 b1 , a2和 b2 …… 以此类推。     所以左连接最后的结果数量,当A中和数据和B中的数据不止匹配一条时,会大于A的数据量。如果都没有匹配,或者都匹配一条,就会等于A的数据量。     像以下例子:     SELECT * from a LEFT JOIN b on a.aid>b

Mysql JOIN多表嵌套查询

↘锁芯ラ 提交于 2020-02-03 01:35:36
网上找的大多数有关嵌套查询的都是关于 IN 的使用,比如 SELECT * FROM tab1 WHERE key IN (SELECT key2 FROM tab2) 通常来说这样的嵌套只能处理比较简单的情况,在相对复杂的情况下可能要对多个键进行配对,在这里我记录一下,可能比较乱 SELECT 表 1. Shop AS 门店 , 表 1. Code AS 号码 , 表 1. Stock AS 股票 , 表 2. Name AS 名称 IFNULL ( 临时表 . Num , 0 ) AS 销量 FROM 表 1 LEFT JOIN 表 2 on 表 1. Code = 表 2. Code LEFT JOIN ( select Code , SUM ( Num ) as Num from 表 3 where Code = '111' group by Code ORDER BY Num DESC ) as 临时表 on 临时表 . Code = 表 1. Code where 表 1. Date = '2020-02-02' SUM(Num) 使用函数后不能再直接 .Num 进行使用了,会找不到,可以加一个as使用别名 LEFT JOIN 后面别忘了跟上表名,我在这里使用了嵌套的查询,并赋予别名,可以直接在select后面使用 SELECT IFNULL(临时表.Num,0) AS

MySQL 8.0新增特性详解【华为云技术分享】

[亡魂溺海] 提交于 2020-01-29 04:40:43
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/devcloud/article/details/91802620 欢迎添加华为云小助手微信(微信号: HWCloud002 或 HWCloud003 ),输入关键字“ 加群 ”,加入华为云线上技术讨论群;输入关键字“ 最新活动 ”,获取华为云最新特惠促销。华为云诸多技术大咖、特惠活动等你来撩! 1. MySQL8.0的版本历史 2016-09-12第一个DM(development milestone)版本8.0.0发布 2018-04-19第一个GA(General Availability)版本开始,8.0.11发布 2018-07-27 下一个GA版本,8.0.12发布 2018-10-22 下一个GA版本,8.0.13发布 2019-01-21 下一个GA版本,8.0.14发布 最新的GA版本为8.0.15,于2019-02-01发布 最近待GA的版本为8.0.16, 8.0.17, 从中可以看出,大概每1~3个月一个版本。 2. MySQL8.0中新增的特性 事务性数据字典 数据字典表以InnoDB表存储字典数据,位于mysql数据库下,对外不可见。有专门的表空间mysql.idb,位于数据目录下

优化SQL查询:如何写出高性能SQL语句

守給你的承諾、 提交于 2020-01-29 04:18:11
摘自 http://www.cnblogs.com/ATree/archive/2011/02/13/sql_optimize_1.html 1、 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式。 可见,执行计划并不是固定的,它是“个性化的”。产生一个正确的“执行计划”有两点很重要: (1) SQL语句是否清晰地告诉查询优化器它想干什么? (2) 查询优化器得到的数据库统计信息是否是最新的、正确的? 2、 统一SQL语句的写法 对于以下两句SQL语句,程序员认为是相同的,数据库查询优化器认为是不同的。 select*from dual select*From dual 其实就是大小写不同,查询分析器就认为是两句不同的SQL语句,必须进行两次解析。生成2个执行计划。所以作为程序员,应该保证相同的查询语句在任何地方都一致,多一个空格都不行! 3、 不要把SQL语句写得太复杂 我经常看到,从数据库中捕捉到的一条SQL语句打印出来有2张A4纸这么长。一般来说这么复杂的语句通常都是有问题的