版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《数据库原理与应用》任务3.4录入电力调度管理系统基础数据项目3数据查询与管理主讲人:刘培林第11讲
你的数据你做主—数据操纵通过前面几个任务,全面分析和使用了电力调度管理系统的数据,本任务探讨电力调度管理系统数据的录入方法,完成前面所使用数据的录入工作。1)“10102”街道新装了3个电表,3个电表某天的用电情况如表3-6所示,请将3条用电记录插入到T_CONSUME表中。2)模拟自动记录用电数据,在某一个规定的时间自动读取“10101”街道电表的用电情况到T_CONSUME表中。CONSUME_IDCONSUME_DATEUSER_IDCONSUME_NUMREMARK备注C10009002025-07-271000000999150NULL新用户C10008992025-07-271000000998200NULL新用户C10008982025-07-271000000997180NULL新用户素质目标能力目标知识目标掌握向数据表插入数据语句的用法。能够向数据表插入数据。培养精益求精、严谨细致的素质。3.4.1值插入1基本用法值插入形式,即构造一行或者多行数据,并将它们插入到表中,语法格式如下。<插入表达式>::=INSERT[INTO][<模式名>.]<基表名>|<视图名>[(<列名>{,<列名>})]VALUES<ins_value>[,<ins_value>,<ins_value>]参数说明如下。1)<模式名>指明该表或视图所属的模式,默认为当前模式。2)<基表名>指明被插入数据的基表的名称。3)<视图名>指明被插入数据的视图的名称,实际上DM将数据插入到视图引用的基表中。4)<列名>必须是表或视图中的列的名称,且同一列名不允许出现两次,但排列顺序可以与定义时的顺序不一致。插入的记录时,这个列表中的每一列都被VALUES子句赋一个值。如果在此列表中省略了表的一个列名,则新插入的行在这些列上将取空值或默认值,如该列在基表定义时说明为NOTNULL时将会出错;如果此列表被省略,则隐含指定该表或视图的所有列,新插入的行必须在每个列上均有<插入值>。5)<ins_value>指明在列表中对应的列的插入的列值,值的个数、类型和顺序要与<列名>一一对应。如果列表被省略了,插入的列值按照基表中列的定义顺序排列。所有的插入值和系统内部相关存储信息一起构成了一条记录,一条记录的长度不能大于页面大小的一半;插入指定值的时候,可以同时指定多行值,这种叫做多行插入或者批量插入。多行插入不支持列存储表;多行插入时,每一行都会进行相应的约束检查,只要有一行不满足约束,所有的值都不能插入成功。【例3-65】向T_AREA表中插入一条记录,其中AREA_ID列的值为“999”,AREA_NAME列的值为“测试值”。INSERTINTOEPDMS.T_AREA(AREA_ID,AREA_NAME)VALUES('999','测试值');上面代码中,列值插入的顺序与数据表的结构一致,可以省略列名,书写如下。INSERTINTOEPDMS.T_AREAVALUES('999','测试值');但是,以上两个代码只能任选一个执行一次,不能两个都执行或某一个多次执行,因为AREA_ID列是主键,具有唯一性,两个都执行或某一个多次执行会违反主键的唯一性约束要求,报错信息如图所示。AREA_ID列是主键,不允许为空,AREA_NAME列做了非空约束,也不允许为空,需要注意空是NULL,不是空字符串,以下代码执行是正确的,执行后AREA_NAME列的值为空字符串。INSERTINTOEPDMS.T_AREAVALUES('998','');以下代码执行会报“违反列[AREA_NAME]非空约束”的错误,因为AREA_NAME列的值不允许为空,出错信息显示如图所示。INSERTINTOEPDMS.T_AREAVALUES('997',NULL);2包含引用关系的插入如果两表之间存在引用和被引用关系,应先插入被引用表的数据,再插入引用表的数据。【例3-66】向T_COMMUNITY表中插入一条记录,其中COMMUNITY_ID列的值为“99999”,COMMUNITY_NAME列的值为“测试值”,AREA_ID列的值为“999”。INSERTINTOEPDMS.T_COMMUNITY(COMMUNITY_ID,COMMUNITY_NAME,AREA_ID)VALUES('99999','测试值','999');在例3-66执行完成的基础上,如果将本例的数据修改为COMMUNITY_ID列的值为“99998”,COMMUNITY_NAME列的值为“测试值”,AREA_ID列的值为“997”,插入数据代码如下。INSERTINTOEPDMS.T_COMMUNITY(COMMUNITY_ID,COMMUNITY_NAME,AREA_ID)VALUES('99998','测试值','997');运行代码,会报“违反引用约束[FK_COMMUNITY_AREA]”的错误,因为AREA_ID列是T_COMMUNITY表的外键,取值应为T_AREA表AREA_ID列的值或NULL值(这里T_COMMUNITY表限定了AREA_ID列的值不允许为空,所以AREA_ID列的值也不能取NULL值),在例3-65中,AREA_ID列的值为“997”的数据插入失败,不存在AREA_ID列的值为“997”的数据,违反了外键约束。所以,需要在插入语句执行之前先操作外键引用的主键表,也即先执行以下语句。INSERTINTOEPDMS.T_AREAVALUES('997','某区域');执行成功,成功再向T_AREA表中插入记录,然后再执行本例插入语句才可以。【例3-67】向T_COMMUNITY表中插入若干条记录,记录内容如下表所示。INSERTINTOEPDMS.T_COMMUNITY(COMMUNITY_ID,COMMUNITY_NAME,AREA_ID)VALUES('99997','1号街道','998'),('99996','2号街道','998'),('99995','3号街道','998');查询工具栏如下图所示,选择“手动提交”时,
按钮执行语句,
按钮提交执行,提交执行后才是永久执行了语句。COMMUNITY_IDCOMMUNITY_NAMEAREAR_ID999971号街道998999962号街道998999953号街道998语句执行之前一定要确保插入T_AREA表的语句已经成功执行和提交,也即INSERTINTOEPDMS.T_AREAVALUES('998','');语句成功执行并提交了。3自增列插入默认自增列的值自动插入值,也即插入时,既不指定自增列名也不给自增列赋值,则新插入行中自增列的当前值由系统自动生成。如果要手动插入自增列的值,必须通过语句将IDENTITY_INSERT设置为ON,才可以自定义自增列的值。自定义的值不能小于系统为自增列分配的默认值,否则仍然插入自增列的默认值。自增列的值一经插入,不允许修改。设置T_USERINFO表自增列手动插入的代码如下。SETIDENTITY_INSERTEPDMS.T_USERINFOON;3.4.2查询插入带有<查询表达式>的插入方式,称为查询插入,插入中使用的<查询表达式>也称为查询说明。查询插入能够将子查询返回的记录插入到表或视图的基表中,语法格式如下。<插入表达式>::=INSERT[INTO][<模式名>.]<基表名>|<视图名>[(<列名>{,<列名>})]<查询表达式>参数说明如下。1)<查询表达式>是一个子查询,选择的列表必须和INSERT语句中列名清单中的列具有相同的数量和能够相互转换的数据类型。2)其余参数说明同值插入。【例3-68】从T_ADMININFO表获取数据,插入到T_USERINFO数据表中,COMMUNITY_ID和BALANCE列的取值分别为“10101”和100。INSERTINTOEPDMS.T_USERINFO(USER_ID,USER_NAME,USER_PASSWORD,COMMUNITY_ID,BALANCE)SELECTADMIN_ID,ADMIN_NAME,ADMIN_PASSWORD,'10101',100
FROMEPDMS.T_ADMININFO;代码运行后将T_ADMININFO表的11条记录成功插入到了T_USERINFO数据表中,如下图所示。【例3-69】从T_USERINFO表和T_COMMUNITY表获取数据,插入到EPDMS.T_ADMININFO表中,ADMIN_TYPE和REMARK列的值分别取2和NULL。第1步:用等值连接查询T_USERINFO表和T_COMMUNITY表,返回包含指定列的子查询,代码如下。SELECTUSER_ID,USER_NAME,USER_PASSWORD,AREA_ID
FROMEPDMS.T_USERINFOT1,EPDMS.T_COMMUNITYT2WHERET1.COMMUNITY_ID=T2.COMMUNITY_ID;第2步:为子查询添加常量列,生成新的查询,代码如下。SELECTUSER_ID,USER_NAME,USER_PASSWORD,AREA_ID,2,NULLFROMEPDMS.T_USERINFOT1,EPDMS.T_COMMUNITYT2WHERET1.COMMUNITY_ID=T2.COMMUNITY_ID;第3步:将子查询应用到插入语句中,完成向T_ADMININFO表中插入数据,代码如下。INSERTINTOEPDMS.T_ADMININFO(ADMIN_ID,ADMIN_NAME,ADMIN_PASSWORD,AREA_ID,ADMIN_TYPE,REMARK)SELECTUSER_ID,USER_NAME,USER_PASSWORD,AREA_ID,2,NULLFROMEPDMS.T_USERINFOT1,EPDMS.T_COMMUNITYT2WHERET1.COMMUNITY_ID=T2.COMMUNITY_ID;[任务实施]
1技术分析1)“10102”街道新装了3个电表,是新用户,录入新用户用电消费情况是包含引用关系的插入,需要先在主键表T_USERINFO添加新用户,然后才能在T_CONSUME表录入数据。2)自动读取“10101”街道电表数据表明“10101”街道用户已经录入,使用查询录入插入向T_CONSUME数据表中插入数据效率更高,首先需要查询“10101”街道的用户,然后模拟生成T_CONSUME数据表不允许为空的数据,最后使用查询插入录入数据。[任务实施]
2实现步骤1)在主键表T_USERINFO中添加3个新用户,由于非空约束要求,需要假定USER_NAME、USER_PASSWORD、COMMUNITY_ID和BALANCE列的值,且COMMUNITY_ID列的值必须是T_COMMUNITY表的合法值,新用户属于“10102”街道,COMMUNITY_ID列的值是“10102”,分析后书写代码如下。INSERTINTOEPDMS.T_USERINFO(USER_ID,USER_NAME,USER_PASSWORD,COMMUNITY_ID,BALANCE)VALUES('1000000999','临时用户999','123','10102',0),('1000000998','临时用户998','123','10102',0),('1000000997','临时用户997','123','10102',0);[任务实施]
2)将3条新用户消费记录插入T_CONSUME表中,代码如下。INSERTINTOEPDMS.T_CONSUME(CONSUME_ID,CONSUME_DATE,USER_ID,CONSUME_NUM)VALUES('C1000900','2025-07-27','1000000999',150),('C1000899','2025-07-27','1000000998',200),('C1000898','2025-07-27','1000000997',180);3)在T_USERINFO表中查询“10101”街道的用户,代码如下。SELECTUSER_IDFROMEPDMS.T_USERINFOWHERECOMMUNITY_ID='10101';[任务实施]
4)使用“10101”街道的用户,构造一组待插入的数据,代码如下。--SYS_GUID()生成全球唯一标识符--GETDATE()返回系统当前时间--LEFT(char,10)返回字符串char最左边的10个字符组成的字符串--RAND()生成一个随机小数SELECTSYS_GUID(),LEFT(GETDATE(0),10),USER_ID,200*RAND()FROMEPDMS.T_USERINFOWHERECOMMUNITY_ID='10101';5)使用查询插入,将数据插入到T_CONSUME表中,代码如下。INSERTINTOEPDMS.T_CONSUME(CONSUME_ID,CONSUME_DATE,USER_ID,CONSUME_NUM)SELECTSYS_GUID(),LEFT(GETDATE(0),10),USER_ID,200*RAND()FROMEPDMS.T_USERINFOWHERECOMMUNITY_ID='10101';[任务测试]1)编写查询语句,查询新装3个电表的用电情况,代码如下。SELECT*FROMEPDMS.T_CONSUMEWHERECONSUME_I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工建设项目风险设计与管控
- 建筑工程施工试验与检测手册
- 脚手架搭设安全技术操作手册
- 矿山竣工验收方案
- 建筑工程BIM技术全过程应用实施方案
- 机电管线综合布置方案
- 基于云计算的建筑信息管理系统工程技术方案
- 摄像模组项目技术方案
- 防爆区域安全管理制度
- 配电自动化终端升级改造技术方案
- 2025年江苏省c类行测真题及答案解析
- 北京市科技计划项目(课题)结题经费审计工作底稿-参考文本
- 中医技术操作并发症的预防及处理
- 2024年秋季新科粤版九年级上册化学全册教学设计
- 中国慢性冠脉综合征患者诊断及管理指南2024版解读
- 学校食堂餐饮服务投标方案(技术标 )
- 高中英语选择性必修一单词表
- 家居与室内设计培训资料
- 高考物理一轮复习课件电磁感应单双杆模型图像问题
- 人工智能的伦理问题及其治理研究
- 员工工作态度培训PPT模板(含完整内容)11
评论
0/150
提交评论