数据库基础(基于达梦DM8)课件:数据的插入、删除和修改_第1页
数据库基础(基于达梦DM8)课件:数据的插入、删除和修改_第2页
数据库基础(基于达梦DM8)课件:数据的插入、删除和修改_第3页
数据库基础(基于达梦DM8)课件:数据的插入、删除和修改_第4页
数据库基础(基于达梦DM8)课件:数据的插入、删除和修改_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库基础(基于达梦DM8)数据查询及管理

4.2数据的插入、删除和修改02数据的修改01数据的插入03掌握WHERE子句用法04数据的删除数据的插入4.2.14.2.1数据的插入1.INSERT语句

数据插入语句INSERT用于向已定义好的表中插入单个或成批的数据。

INSERT语句有两种形式。一种形式是值插入,即构造一行或者多行,并将它们插入到表中;另一种形式为查询插入,它通过<查询表达式>返回一个查询结果集以构造要插入表的一行或多行。

无论使用哪一种形式,插入的数据都必须符合对应列的数据类型,且符合相应的约束,以保证表中数据的完整性。4.2.1数据的插入1.INSERT语句

INSERT[INTO][<模式名>.]<表名><[(<列名>{,<列名>})]

VALUES(<插入的列值>{,<插入的列值>})>|

<查询表达式> --详见任务4.3

①<列名>:列名是可以省略的,如果此列表被省略,则在VALUES子句和查询中必须为表中的所有列指定值,且对应值的顺序与表结构中列的顺序一一对应;对于选择部分列的列名作为插入指定的数据时,列的顺序没有特定要求,被未被选中的列要满足相应的约束(如允许为空、定义了默认约束、为自增列等),且对应的值的顺序要与选中列的顺序一一对应;4.2.1数据的插入1.INSERT语句

INSERT[INTO][<模式名>.]<表名><[(<列名>{,<列名>})]

VALUES(<插入的列值>{,<插入的列值>})>|

<查询表达式> --详见任务4.3

②<插入的列值>:指明在列名列表中对应的列的插入的列值。如果省略了列名列表,插入的列值按照表结构中列的定义顺序排列;

4.2.1数据的插入1.INSERT语句

INSERT[INTO][<模式名>.]<表名><[(<列名>{,<列名>})]

VALUES(<插入的列值>{,<插入的列值>})>|

<查询表达式> --详见任务4.3

③<查询表达式>:将一个SELECT语句所返回的记录插入表中,子查询中选择的列表必须和INSERT语句中列名清单中的列具有相同的数量;带有<查询表达式>的插入方式,称查询插入。插入中使用的<查询表达式>也称为查询说明。详细说明见任务4.3。4.2.1数据的插入【案例4-7】通过执行SQL语句将下表前6名职工插入数据库中职工表STAFF中。职工号姓名性别年龄电话号码籍贯部门号3001张x女26023-xxxxxx1江西1xxxx13002徐x女25023-xxxxxx2安徽1xxxx23003梁x男27023-xxxxxx3重庆1xxxx33004刘x女27023-xxxxxx4重庆1xxxx13005李x男26023-xxxxxx5山东1xxxx13006梁x女25023-xxxxxx6山东1xxxx23007徐x女29023-xxxxxx7江西1xxxx23008梁x男31023-xxxxxx8山西1xxxx33009徐x女31023-xxxxxx9江苏1xxxx34.2.1数据的插入【案例4-7】通过执行SQL语句将表4-1前6名职工插入数据库中职工表STAFF中。1)列名列表指定部分列

先通过指定部分列,插入前5名职工。INSERTINTOSCH_FACTORY.STAFF(部门号,姓名,性别,籍贯,年龄,电话号码)VALUES(1xxxx1,'张x','女','江西',26,'023-xxxxxx1'),(1xxxx2,'徐x','女','安徽',25,'023-xxxxxx2'),(1xxxx3,'梁x','男','重庆',27,'023-xxxxxx3'),(1xxxx1,'刘x','女','重庆',27,'023-xxxxxx4'),(1xxxx1,'李x','男','山东',26,'023-xxxxxx5');

4.2.1数据的插入【案例4-7】通过执行SQL语句将表4-1前6名职工插入数据库中职工表STAFF中。2)不指定列名列表

不指定列名列表来插入第6名职工。INSERTINTOSCH_FACTORY.STAFFVALUES('梁x','女',25,'023-xxxxxx6','山东',1xxxx2)数据的修改4.2.24.2.2数据的修改2.视图的作用

对于已经插入数据库的数据,时常要根据实际情况变化的需求、业务需求变化的需求或者更正的需求进行修改。UPDATE[<模式名>.]<基表名>SET<列名>=<<值表达式>|DEFAULT>{,<列名>=<<值表达式>|DEFAULT>}[<WHERE子句>]

<WHERE字句>详见4.2.3。需要特别注意的是,当省略WHERE子句时,表示对所有的行进行相同的修改。一般情况下UPDATE语句都会指定WHERE子句,所以在实际操作中应仔细检验,避免产生误操作。4.2.2数据的修改【案例4-9】将STAFF表中所有职工的性别都修改为“女”,年龄都修改为35。

UPDATESCH_FACTORY.STAFFSET性别='女',年龄=35;掌握WHERE子句用法4.2.34.2.3掌握WHERE子句用法

WHERE子句用于提取那些满足指定条件的行,指明操作所作用的行必须符合的条件。如果省略此子句,则相关操作作用在表或视图中所有的行。

WHERE字句可以与数据修改、数据删除、数据查询等操作结合使用。4.2.3掌握WHERE子句用法1.比较条件

当使用比较条件时,数值数据根据它们代数值的大小进行比较,字符串的比较则按序对同一顺序位置的字符逐一进行比较。若两字符串长度不同,短的一方应在其后增加空格,使两串长度相同后再作比较。

1.比较条件案例UPDATESCH_FACTORY.STAFFSET年龄=40WHERE年龄>30;

【案例4-11】执行SQL语句将STAFF表中年龄大于30岁的职工的年龄改为40岁。

此处是WHERE子句在UPDATE语句中发挥作用,使UPDATE只作用在“年龄”大于30的行。1.比较条件案例UPDATESCH_FACTORY.STAFFSET年龄=31WHERE年龄=40;

【案例4-12】执行SQL语句将STAFF表中年龄为40岁的职工的年龄改为31岁。2.逻辑条件

当WHERE子句需要指定较复杂的查询条件时,则需要使用逻辑运算符AND、OR和NOT将其连接成复合的逻辑表达式。

其优先级由高到低为:NOT、AND、OR,可以使用括号改变优先级。

2.逻辑条件

AND:组合两个条件,当两个条件都为真时,组合后的条件为真。OR:组合两个条件,当两个条件中有一个条件为真时,组合后的条件为真。NOT:对指定的条件取反。

2.逻辑条件案例UPDATESCH_FACTORY.STAFFSET姓名='张x'WHERE年龄=26AND籍贯='江西';【案例4-13】执行SQL语句将STAFF表中年龄为26且籍贯为“江西”的职工的名字修改为“张x”。2.逻辑条件案例UPDATESCH_FACTORY.STAFFSET姓名='梁x一'WHERE职工号=3003OR电话号码='023-xxxxxx4';【案例4-14】执行SQL语句将STAFF表中职工号为3003或电话号码为‘023-xxxxxx4’的职工的名字改为“梁x一”。2.逻辑条件案例UPDATESCH_FACTORY.STAFFSET姓名='刘x'WHERE姓名=’梁x一’ANDNOT性别='男';【案例4-15】执行SQL语句将STAFF表中姓名为“梁x一”且性别不为“男”且的职工名字改为“刘x”。3.范围条件

在WHERE字句中限定某个取值范围的数据时,除了使用逻辑条件的组合外,还可以使用更加简便的范围条件。

3.范围条件案例UPDATESCH_FACTORY.STAFFSET籍贯='上海'WHERE年龄BETWEEN27AND29;

【案例4-16】执行SQL语句将STAFF表中年龄在27(含)-29(含)范围内的职工的籍贯更改为“上海”。

从结果可见,AND关键字左右两边的数值都是包含在范围内的。其结果等价于。UPDATESCH_FACTORY.STAFFSET籍贯='上海'WHERE年龄>=27AND年龄<=29;4.模糊匹配条件

使用模糊匹配条件的WHERE字句语法如下。WHERE<列名>[NOT]LIKE‘<匹配字符串>’

模糊匹配条件用于对条件不完全确定的情况,如查找所有姓“李”的员工、查找名字包含某个字的项目等。

4.模糊匹配条件

使用模糊匹配条件的WHERE字句语法如下。WHERE<列名>[NOT]LIKE‘<匹配字符串>’

其中,<列名>必须是可以转化为字符类型的数据类型的列。为了匹配这种部分确定的条件,<匹配字符串>由确定的字符和“通配符”组成。

4.模糊匹配条件案例UPDATESCH_FACTORY.STAFFSET姓名='徐x瓜',籍贯='江西'WHERE姓名LIKE'徐%'AND电话号码LIKE'%7';

【案例4-17】执行SQL语句将STAFF表中姓“徐”且电话号码以“7”结束的职工的姓名改为“徐x瓜”,籍贯改为“江西”

'徐%'代表以“徐”开头后方包含任意长度字符的字符串;'%7'代表以“7”结尾,前方包含任意长度字符的字符串。4.模糊匹配条件案例UPDATESCH_FACTORY.STAFFSET电话号码='0898-xxxxxx7'WHERE姓名LIKE'徐__';

【案例4-18】执行SQL语句将STAFF表中姓“徐”,且名字为三个字的职工的电话号码改为0898-xxxxxx7。

'徐__'代表以“徐”开头后方包含两个字符的字符串。5.列表条件

如果列取值的范围不是一个连续的区间,可以使用列表条件来实现数据行的筛选。其语法形式如下。WHERE列名[NOT]IN(<列表值>)

5.列表条件案例UPDATESCH_FACTORY.STAFFSET部门号=1xxxx1WHERE职工号IN(3006,3008,3009);

【案例4-19】执行SQL语句将STAFF表中职工号3006、3008、3009的职工的部门调整至1xxxx1。

6.空值判断条件

空值是未知的值。当列的类型为数值类型时,NULL并不表示0;当列的类型为字符串类型时,NULL也并不表示空串。因为0和空串也是确定值。NULL只能是一种标识,表示它在当前行中的相应列值还未确定或未知。对于空值判断的语法形式如下。WHERE列名IS[NOT]NULL6.空值判断条件案例UPDATESCH_FACTORY.MANAGERSET备注='备注2'WHERE备注ISNULL;

【案例4-20】执行SQL语句将MANAGER表中备注为空的备注内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论