《第6章MySQL表数据管理电子课件 MySQL数据库管理与应用.pptx》由会员分享,可在线阅读,更多相关《第6章MySQL表数据管理电子课件 MySQL数据库管理与应用.pptx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第6章MySQL表数据管理电子课件 MySQL数据库管理与应用第6章 MySQL表数据管理主要内容6.1 插入数据6.2 更新数据6.3 删除数据6.4 约束对数据操作的限制6.5 本章小结6.1 插入数据6.1.1 使用INSERTVALUES语句插入一行数据语法格式:INSERT INTO tbl_name(col_name,col_name.)VALUES(value_list)说明:ltbl_name:要插入数据的表的名称;lcol_name:表中的列的名称;lvalue_list:要插入的数据对应各列的值,用逗号分隔6.1 插入数据6.1.1 使用INSERTVALUES语句插入一行
2、数据1.不指定列名语法格式:INSERT INTO tbl_name VALUES(value_list)【例6.1】向student表插入一行数据(20190101001,刘丽,女,2001-03-02,汉族,0101)。在MySQL命令行客户端输入命令:INSERT INTO student VALUES(20190101001,刘丽,女,2001-03-02,汉族,0101);6.1 插入数据6.1.1 使用INSERTVALUES语句插入一行数据2.指定列名语法格式:INSERT INTO tbl_name(col_name1,col_name2,)VALUES(value_list)
3、【例 6.2】向 student表 插 入 一 行 数 据,学 号 为20190101002,姓名为张林,出生日期为2000-09-12。在MySQL命令行客户端输入命令:INSERT INTO student(sno,sname,sbirthday)VALUES(20190101002,张林,2000-09-12);6.1 插入数据6.1.2使用INSERTVALUES语句插入多行数据语法格式:INSERT INTO tbl_name(col_name,col_name.)VALUES(value_list),(value_list)【例6.3】向student表插入3行数据。在MySQL命
4、令行客户端输入命令:INSERT INTO studentVALUES(20190102001,李宏,男,2001-08-29,回族,0102),(20200102001,孙明,男,2001-10-18,汉族,0102),(20200102002,赵均,男,2000-12-19,汉族,0102);6.1 插入数据6.1.3 使用INSERTSET语句插入数据语法格式:INSERT INTO tbl_nameSET col_name1=value1,col_name2=value2【例6.4】向student表插入一行数据,学号为20200101001,姓名为张莉,性别为女民族为汉族,专业为01
5、01。在MySQL命令行客户端输入命令:INSERT INTO studentSET sno=20200101001,sname=张莉,ssex=女,snation=汉族,mno=0101;6.1 插入数据6.1.4 使用INSERTSELECT语句插入数据语法格式:INSERT INTO tbl_name(col_name,col_name.)SELECT.【例6.5】向student_computer表插入student表中专业为0101的学生数据。在MySQL命令行客户端输入命令:INSERT INTO student_computerSELECT*FROM student WHERE
6、mno=0101;6.1 插入数据6.1.5使用REPLACE语句插入数据语法格式:REPLACE INTO tbl_name(col_name,col_name.)VALUES(value_list),(value_list)|SET col_name1=value1,col_name2=value2|SELECT说明:lREPLACE语句是MySQL对SQL标准的扩展,或者插入数据,或者删除再插入数据;lREPLACE语句的语法格式和工作原理与INSERT完全相同,只是如果表中的一个旧行与新行在主键或唯一索引上具有相同的值,则在插入新行之前会删除旧行。l只有当表具有主键或唯一索引时,REP
7、LACE才有意义。否则,它将等效于INSERT6.1 插入数据6.1.5使用REPLACE语句插入数据【例6.5】使用REPLACE语句向student表插入2行数据。(1)先执行SELECT语句查看student表中现有的数据,便于对比REPLACE语句执行前后的数据:SELECT*FROM student;(2)输入命令:REPLACE INTO studentVALUES(20190101002,张林,男,2000-09-12,汉族,0101),(20210201001,牛伟,男,2003-09-18,汉族,0201);(3)再执行SELECT语句查看student表中现有的数据:SEL
8、ECT*FROM student;6.2 更新数据6.2.1 单表更新语句语法格式:UPDATE tbl_nameSET col_name1=value1,col_name2=value2WHERE where_condition说明:lUPDATE子句指定要修改数据的表的名称;lSET子句指示要修改的列以及列的新值,每个值都可以是常量、表达式或关键字DEFAULT(将列显式设置为其默认值)。lWHERE子句指定要更新的行需满足的条件。6.2 更新数据6.2.1 单表更新语句【例6.6】在student表中将学生20190101002的专业改为0101。在MySQL命令行客户端输入命令:UPD
9、ATE studentSET mno=0101WHERE sno=20190101002;6.2 更新数据6.2.1 单表更新语句【例6.7】在student_computer表中将所有学生的专业编号mno修改为NULL。在MySQL命令行客户端输入命令:UPDATE student_computerSET mno=NULL;6.2 更新数据6.2.2 多表更新语句语法格式:UPDATE tbl_name1,tbl_name2,tbl_name3SET col_name1=value1,col_name2=value2WHERE where_condition说明:l多表更新语句执行覆盖多个表
10、的更新操作,UPDATE子句列出操作涉及到的所有的表的名称;lWHERE子句需要指定表之间的连接条件,用于在多个表之间匹配行。6.2 更新数据6.2.2 多表更新语句【例6.8】在student_computer表中将学生的专业改为student表中对应学生的专业。在MySQL命令行客户端输入命令:UPDATE student,student_computerSET student_computer.mno=student.mnoWHERE student_computer.sno=student.sno;6.3 删除数据6.3.1 单表删除语句语法格式:DELETE FROM tbl_nam
11、e WHERE where_condition说明:lDELETE子句指定要删除数据的表的名称;lWHERE子句指定要删除的行需满足的条件,如果没有WHERE子句,则删除表中所有行。6.3 删除数据6.3.1 单表删除语句【例6.9】删除student表中专业编号为0101的学生记录。在MySQL命令行客户端输入命令:DELETE FROM studentWHERE mno=0101;6.3 删除数据6.3.2 多表删除语句语法格式:DELETE tbl_name1.*,tbl_name2.*.FROM tbl_name1,tbl_name2,tbl_name3WHERE where_cond
12、ition或:DELETE FROM tbl_name1.*,tbl_name2.*.USING tbl_name1,tbl_name2,tbl_name3WHERE where_condition说明:lDELETE子句指定要删除数据的表的名称;lWHERE子句指定要删除的行需满足的条件,如果没有WHERE子句,则删除表中所有行。6.3 删除数据6.3.2 多表删除语句说明:l第一种格式中的DELETE后和第二种格式中的DELETE FROM后指定要删除数据的表的名称;l第一种格式中的FROM后和第二种格式中的USING后指定操作涉及的所有表的名称;lWHERE子句需要指定表之间的连接条件,
13、用于在多个表之间匹配行。6.3 删除数据6.3.2 多表删除语句【例6.10】删除student表中专业名称为软件工程的学生。在MySQL命令行客户端输入命令:DELETE studentFROM student,majorWHERE student.mno=major.mno and major.mname=软件工程;或者:DELETE FROM studentUSING student,majorWHERE student.mno=major.mno and major.mname=软件工程;6.3 删除数据6.3.3 使用TRUNCATE TABLE语句清空数据语法格式:TRUNCATE
14、 TABLE tbl_name说明:lTRUNCATE操作删除并重新创建表,这比DELETE逐个删除行快得多,特别是对于大型表;lTRUNCATE操作会导致隐式提交,因此无法回滚;lTRUNCATE TABLE语句不会引起DELETE触发器调用(触发器的内容参见第12章);l 对于InnoDB表或NDB表,如果存在来自引用该表的其他表的任何外键约束,则TRUNCATE TABLE失败;l 因为TRUNCATE操作删除并重新创建表,所以清空表数据后任何自动增量值都将重置为其起始值。6.4 约束对数据操作的限制6.4.1主键约束和唯一性对DML的限制主键约束和唯一性约束要求字段的值必须唯一,此外主
15、键约束还要求字段不能取空值。当向表中插入(INSERT)数据、更新(UPDATE)数据的时候,所插入的行或更新后的行在主键列或者唯一性约束所在列的值不能重复,否则操作将不能执行。6.4 约束对数据操作的限制6.4.1主键约束和唯一性对DML的限制【例6.12】向student表添加一个学生记录,该学生的学号与表中某一行重复。INSERT INTO student VALUES(20190101001,张三,男,2002-04-02,汉族,0101);6.4 约束对数据操作的限制6.4.2 CHECK约束对DML的限制CHECK约束要求字段的值必须满足检查条件。向表中插入(INSERT)数据、更
16、新(UPDATE)数据的时候,如果插入的数据或更新后的数据不满足条件,则操作将不能执行。【例6.13】向student表添加一个学生记录,性别为M。在MySQL命令行客户端输入命令:INSERT INTO student VALUES(20190101010,张三,M,2002-04-02,汉族,0101);6.4 约束对数据操作的限制6.4.3 外键约束对DML的限制外键约束通常在两个表的字段之间建立参照关系,创建外键约束后不仅外键约束所在的子表的DML操作收到外键约束的限制,被参照的父表执行DML操作时也要遵守外键约束的限制:l 对子表执行INSERT和UPDATE操作时,插入或更新的行在
17、外键列上的值要么为NULL要么必须是父表中主键已有的值;l对父表执行UPDATE修改主键的值和DELETE操作时,如果操作的行在子表中有匹配的子记录,则根据当初创建外键约束时所设置的操作方式执行不同的处理。6.4 约束对数据操作的限制6.4.3 外键约束对DML的限制如果没有指定ON DELETE或ON UPDATE选项,或者指定了RESTRICT或NO ACTION选项,因为违反了外键约束,所以对父表的UPDATE和DELETE操作失败;如果指定了SET NULL选项,则执行对父表的UPDATE和DELETE操作,并且将子表中对应的子记录在外键上的值设置为NULL;如果指定了CASCADE选
18、项,则执行对父表的UPDATE和DELETE操作,并且将级联修改子表中对应的子记录在外键上的值,或级联删除子表中对应的子记录。6.4 约束对数据操作的限制6.4.3 外键约束对DML的限制【例6.14】删除major表中编号为0101的专业。在MySQL命令行客户端输入命令:DELETE FROM major WHERE mno=0101;6.5 本章小结本章主要介绍了MySQL中的表数据操作,包括添加数据(INSRET语 句、REPLACE语 句)、更 新 数 据(UPDATE语 句)和 删 除 数 据(DELETE语 句、TRUNCATE TABLE语句),最后强调了约束对表数据操作的限制。通过本章的学习,读者将掌握在MySQL中如何管理表数据,并深刻理解完整性约束对数据的影响。