MySQL的CRUD操作+使用视图

【0】README
0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review“MySQL数据检索+查询+全文本搜索” 的基础知识;

【1】插入数据
1)insert是用来插入(或添加)行到数据库表的。插入可以用以下几种方式使用(methods):
m1)插入完整的行;
m2)插入行的一部分;
m3)插入多行;
m4)插入某些查询的结果;
2)插入完整的行
2.1)对于属于 auto_increment 的列,我们用插入null 来替代;
2.2)编写插入行的安全方法:要指定插入列名,后面更values 的各个value,而不仅仅是插入values;
如 insert into product(id,vendor,price) values(null,1,1.1);
2.3)省略列: 如果表的定义允许,则可以在 insert 操作中省略某些列。省略列必须满足以下某个条件(conditions)
c1)该列定义为允许null值;
c2)在表定义中给出 default值,这表示如果不给出值,则使用该默认值;
2.4)提高整体性能:数据库经常被多个客户访问,对处理什么请求以及用什么次序处理进行管理是MySQL的任务。如果数据检索是重要的,则你可以通过在 insert 和 into 之间添加关键字 low_priority,指示MySQL 降低 insert语句的优先级;(如 insert low_priority into);
3)插入多行

Attention)提高insert性能:MySQL 用单条insert 语句处理多个插入比使用多条insert 语句要快,所以推荐使用如上图所示的insert 方式 ;

4)插入检索出的数据
4.1)intro:将select出的数据作为insert 插入的原始数据;



【2】更新和删除数据
1)更新数据
1.0)update语句由3部分组成:要更新的表, 列名和他们的新值, 确定要更新行的过滤条件;
1.1)更新单个列和更新多个列


1.2)ignore关键字:如果用update语句更新多个行,并且在更新这些行中的一行或多行时出现一个错误,则这个update操作被取消。即使是发生错误,也继续进行更新,可使用 ignore 关键字(update ignore product)
1.3)为了删除某个列的值,可以设置它为null(假设表允许null值);(图片t85)

2)删除数据
Attention)删除行使用delete,删除列使用 update(置null);

3)更新和删除的指导原则(rules),下面是许多SQL程序员使用update 和 delete 时所遵循的习惯;
r1)除非确实打算更新和删除每一行,否则绝对不要使用不带 where 子句的update 和 delete语句;
r2)保证每个表都有主键;
r3)在对update 和 delete 语句使用 where子句前,应该先用 select 进行测试,保证它过滤的是正确记录,以防编写的where子句不正确;
r4)使用强制实施引用完整性的数据库,这样MySQL将不允许删除具有与其他表相关联的数据的行;

【3】创建和操纵表
1)创建表
1.1)如果你想在一个表不存在时创建它,应该在表明前给出 if not exists语句;

1.2)使用NULL值

Attention)理解NULL: 不要把null值 与 空串相混淆,NULL 值是没有值,它不是空串。如果指定'’(两个单引号,其间没有字符),这在not null 列中是允许的;空串是一个有效值,它不是无值;
1.3)主键再介绍:单个主键 和 复合主键;

1.4)使用auto_increment:自动递增;
Attention)
A1)确定auto_increment的值:让MySQL 生成主键的一个缺点是你不知道这些值都是谁;
A2)如何在使用 auto_increment 列时获得这个值呢? select last_insert_id() 来获得;

1.5)指定默认值:如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用 create table 的列定义中的 default 关键字指定;


1.6)引擎类型:

1.6.1)intro to engine:MySQL 有一个具体管理和处理数据的 内部引擎。在你使用 create table 语句时,该引擎具体创建表,而在你使用select 语句或进行其他db 处理时,该引擎在内部处理你的请求;
1.6.2)如果省略engine 语句, 则默认的引擎是MyISAM;(干货——这里强烈建议添加engine关键字指定数据库表的引擎)
1.6.3)需要知道以下几个MySQL 的engines:
engine1)InnoDB:是一个可靠的事务处理引擎,它不支持全文本搜索;
engine2)MEMORY: 在功能上等同于 MyISAM,但由于数据存储在内存中,速度很快;
engine3)MyISAM:MyISAM是一个性能很高的引擎,它支持全文本搜索,但不支持事务处理;
Attention)外键不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键;

2)下面内容讨论的是更新表,删除表和重命名表的内容

以下内容转自: http://blog.163.com/zhangjie_0303/blog/static/99082706201191911653778/

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。

查看列:desc 表名;
修改表名:alter table t_book rename to bbb;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table bbb change nnnnn hh int;
修改列名SQLServer:exec sp_rename't_student.name','nn','column';
修改列名Oracle:lter table bbb rename column nnnnn to hh int;
修改列属性:alter table t_book modify name varchar(22);

for spec relative info, please visit  MySQL 添加列+修改列+删除列


【4】使用视图
1)intro to view:视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态减少数据的查询;

1.1)假如吧整个查询包装为一个名为 product_vendor的虚拟表,则可以如下轻松地检索出相同的数据;

1.2)这就是视图的作用:product_vendor 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询;(干货——视图包含的是一个SQL查询)
2)为什么使用视图?(reasons)
r1)重用SQL 语句;
r2)简化复杂的SQL操作;
r3)使用表的组成部分而不是整个表;
r4)保护数据;
r5)在创建视图后,可以用与表基本相同的方式利用它们。可以对视图执行select操作,过滤和排序操作,将视图联结到其他视图或表,甚至能添加和更新数据;
Attention)视图仅仅是用来查看存储在别处的数据的一种设施,视图本身不包含任何数据,因此它们返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过后的数据;
3)视图使用的一些限制(restriction)
r1)对于可创建的视图数目没有限制;
r2)为了创建视图,必须要有足够的访问权限;
r3)视图可以嵌套,即可以利用从其他视图中检索数据的查询来构造一个视图;
r4)order by 可以用在视图中,但如果从该视图检索数据的 select语句中也含有 order by,那么该视图中的 order by 将被覆盖;
r5)视图不能索引,也不能有关联的触发器或默认值;
r6)视图可以和表一起使用;
4)使用视图
4.1)视图用 create view 语句来创建;
4.2)使用show create view viewname来查看创建视图的语句;
4.3)使用drop 删除视图,其语法为 drop view viewname;
4.4)更新视图时,可以先用 drop 再用 create,也可以直接用 create or replace view。如果要更新的视图不存在,则第2条更新语句会创建一个视图;如果要更新的视图存在,则第2条语句会替换原有视图;

【4.1】利用视图简化复杂的联结
【4.2】用视图重新格式化检索出的数据

Attention)就像使用数据库表一样使用视图,包括 过滤数据 和使用视图与计算字段;

【4.3】更新视图
1)更新一个视图将更新其基表:如果你对视图增加或删除行,则实际上是对其基表增加或删除行;
2)但是,并非所有视图都是可更新的。基本上可以说,如果MySQL 不能正确地确定被更新的基数据,则不允许更新(包括插入和更新);这也是说,如果视图中有定义以下操作,则不能进行更新(operations):
o1)分组(使用 group by 和 having);
o2)联结;
o3)子查询;
o4)并;
o5)聚集函数(min()函数, count()函数,sum() 函数等);
o6)distinct;
o7)导出(计算)列;
Attention)视图主要是用于数据检索,而不是去更新数据;


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

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

相关文章

mega x_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)

mega x通过超过62个小时的培训来掌握最流行的编程语言,从而树立信誉良好的开发人员职业 嘿,怪胎, 这一周,我们JCG促销专区 ,我们有另一个极端的报价 。我们正在提供一个巨大的96%off的完整2020 Python编程…

tomcat(11)org.apache.catalina.core.StandardWrapper源码剖析

【0】README0.0)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(11)StandardWrapper源码剖析” 的基础知识;0.1)StandardWrapper 是 Catalina中对Wrapper接口的标准实现;要知道,tomcat 中有…

lambda表达式语法_使用类似Lambda的语法作为Java中的表达式进行切换

lambda表达式语法从Java 14开始, switch表达式具有其他Lambda式 ( case ... -> labels )语法,它不仅可以用作语句,还可以用作计算为单个值的表达式。 对于新的类似Lambda的语法,如果标签匹配&#xff0…

装饰器模式(讲解+应用)

转载自 设计模式(5)装饰器模式(讲解应用)目录 装饰器模式为什么使用装饰器模式应用实例 装饰器模式 看到装饰器是在看《Thinking in Java》一书的时候,看到文件读写那边的时候,有提到装饰器模式&#xff0c…

quarkus_使用Quarkus调试容器中的系统测试(视频)

quarkus如果您能够借助容器在本地进行端到端测试应用程序,则可以提高开发效率。 在下面的视频中,我将展示如何使用Quarkus在Docker容器中调试本地系统测试。 这是我关于有效测试的视频课程的Quarkus扩展。 要全面了解,还可以查看以下资源&a…

MySQL事务管理+安全管理+MySQL数据类型

【0】README0.1)本文部分文字描述转自“MySQL 必知必会”,旨在review“MySQL事务管理安全管理MySQL数据类型” 的基础知识;【1】管理事务处理【1.1】事务处理1)并非所有引擎都支持事务管理,MyISAM 不支持,而…

超音速 启动_从根本上讲超音速亚原子Enterprise Java

超音速 启动我创建了一个视频,其中我用Quarkus解释了“超音速亚原子Java”,这是现代Java应用程序的运行时。 无论您是刚开始涉足Enterprise Java领域,还是已经是一位经验丰富的Java EE / J2EE开发人员,本课程都将指导您如何在2020…

利用java求积分(定积分和无穷限积分)

【0】README0.1)本文部分文字描述转自或译自 https://en.wikipedia.org/wiki/Simpson%27s_rule和 https://en.wikipedia.org/wiki/Numerical_integration#Methods_for_one-dimensional_integrals;旨在利用java求积分;(定积分和无穷…

Java的三种代理模式

转载自 Java的三种代理模式1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的…

后台审核管理 ergo_Kogito,ergo规则:从知识到服务,轻松自如

后台审核管理 ergo欢迎阅读有关Kogito倡议的博客系列的另一集,以及我们将Drools带入云的努力。 这些文章的目的是收集用户对我们提供给Kogito的功能的早期反馈。 在本文中,我们介绍了两种实现完整智能服务的新方法 : 独立的规则服务 集成智…

java转换文本文件到xlsx(自制缓冲区,无需先验文件行数)

【0】README0.1)本文代码利用了 Apache POI 框架 建立 java 到 xlsx 代码的联系;0.2)本文自制缓冲区从文本文件中读取数据读取,无需先验文件行数;0.3)本文通过缓冲区大小创建数组,数组容量自动增…

spring react_使用Spring WebFlux构建React性REST API –第3部分

spring react在上一篇文章的续篇中,我们将看到一个应用程序以公开React性REST API。 在此应用程序中,我们使用了 带有WebFlux的Spring Boot 具有响应式支持的Cassandra的Spring数据 卡桑德拉数据库 下面是应用程序的高级体系结构。 让我们看一下bui…

tomcat(12)org.apache.catalina.core.StandardContext源码剖析

【0】README0)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(12)StandardContext源码剖析” 的基础知识;1)Context实例表示一个具体的web 应用程序,其中包含一个或多个Wrapper实例,每个Wra…

jms面试题_最新的20多个JMS面试问答(2020)

jms面试题快速浏览JMS(Java消息服务)常见问题面试问题和答案。 2020年以来的最新问题已添加到列表中。 1.简介 在本教程中,我们将了解2020年经常问到的JMS面试问题。作为面试的一部分,如果您有6年以上的经验,就有机会…

tomcat(13)Host和Engine容器

【0】README0.1)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(13)Host和Engine容器” 的基础知识;0.2)Host容器:若你想在同一个tomcat部署 上运行多个Context 容器的话,就需要使用 Host 容…

spring react_使用Spring WebFlux构建React性REST API –第2部分

spring react在上一篇文章的续篇中,我们将看到React式流规范及其实现之一,称为Project Reactor 。 React流规范定义了以下接口。 让我们看看这些接口的细节。 发布者→发布者是潜在数量不受限制的序列元素的提供者,可按其订阅者的要求发布它…

tomcat(14)服务器组件和服务组件

【0】README0.1)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(14)服务器组件和服务组件” 的基础知识;0.2)for complete source code ,please visit https://github.com/pacosonTang/HowTomcatWorks/tree/maste…

组合模式的安全模式与透明模式

转载自 树形结构的处理——组合模式(四) 1 透明组合模式与安全组合模式 通过引入组合模式,Sunny公司设计的杀毒软件具有良好的可扩展性,在增加新的文件类型时,无须修改现有类库代码,只需增加一个新的文件类…

spring react_使用Spring WebFlux构建React性REST API –第1部分

spring react在本文中,我们将看到如何使用Spring WebFlux构建响应式REST API。 在进入React式API之前,让我们看看系统是如何发展的,传统REST实现遇到的问题以及现代API的需求。 如果您查看从旧版系统到下文所述的现代系统的期望,…

tomcat(15)Digester库

【0】README0.1)本文部分文字描述转自 “how tomcat works”,旨在学习 “tomcat(15)Digester库” 的基础知识;2)problemsolution:2.1)problem:如下面的代码,Bootstrap类实例化连接器…