《第5章 表数据操作.ppt》由会员分享,可在线阅读,更多相关《第5章 表数据操作.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1第第5章章 表数据操作表数据操作5.1 插入数据插入数据5.2 修改数据修改数据5.3 删除数据删除数据数据库原理与应用(基于MySQL)25.1 插入数据插入数据5.1.1 为表的所有列插入数据为表的所有列插入数据向数据库的表插入一行或多行数据,使用INSERT语句,其基本语法格式如下。语法格式:语法格式:INSERT LOW_PRIORITY|DELAYED|HIGH_PRIORITYIGNORE INTO table_name(col_name,.)VALUES(EXPR|DEFAULT,.),(.),.|数据库原理与应用(基于MySQL)35.1 插入数据插入数据语法格式:语法格式:
2、INSERT LOW_PRIORITY|DELAYED|HIGH_PRIORITYIGNORE INTO table_name(col_name,.)VALUES(EXPR|DEFAULT,.),(.),.|说明:说明:(1)table_name:需要插入数据的表名。(2)col_name:列名,插入列值的方法有两种:不指定列名:必须为每个列都插入数据,且值的顺序必须与表定义的列的顺序一一对应,且数据类型相同。指定列名:只需要为指定列插入数据。(3)VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。数据库原理与应用(基于MySQL)45.1 插入数据插入数据下面举例说
3、明给表的所有列插入数据时,列名可以省略。设student表、student1表和student2表已创建,其表结构参见附录1。【例5.1】向student1表插入一条记录(196001,董明霞,女,1999-05-02,通信,50)。在MySQL命令行客户端输入如下SQL语句:mysql INSERT INTO student1 -VALUES(196001,董明霞,女,1999-05-02,通信,50);执行结果:执行结果:Query OK,1 row affected(0.06 sec)数据库原理与应用(基于MySQL)55.1 插入数据插入数据使用SELECT语句查询插入的数据。mysq
4、l SELECT*FROM student1;查询结果:查询结果:+-+-+-+-+-+-+|sno|sname|ssex|sbirthday|speciality|tc|+-+-+-+-+-+-+|196001|董明霞|女|1999-05-02|通信|50|+-+-+-+-+-+-+1 row in set(0.00 sec)可以看出插入全部列的数据成功,在插入语句中,已省略列名表,只有插入值表,且插入值的顺序和表定义的列的顺序相同。数据库原理与应用(基于MySQL)65.1 插入数据插入数据如果插入值的顺序和表定义的列的顺序不同,在插入全部列时,则不能省略列名表,参见下例。【例5.2】向s
5、tudent1表插入一条记录,学号为“196002”,姓名为“李茜”,专业为“通信”,总学分48,性别为“女”,出生日期为“1998-07-25”。mysql INSERT INTO student1(sno,sname,speciality,tc,ssex,sbirthday)-VALUES(196002,李茜,通信,48,女,1998-07-25);执行结果:执行结果:Query OK,1 row affected(0.18 sec)数据库原理与应用(基于MySQL)75.1 插入数据插入数据使用SELECT语句查询插入的数据:mysql SELECT*FROM student1;查询结果
6、:查询结果:+-+-+-+-+-+-+|sno|sname|ssex|sbirthday|speciality|tc|+-+-+-+-+-+-+|196001|董明霞|女|1999-05-02|通信|50|196002|李茜|女|1998-07-25|通信|48|+-+-+-+-+-+-+2 rows in set(0.08 sec)数据库原理与应用(基于MySQL)85.1 插入数据插入数据5.1.2 为表的指定列插入数据为表的指定列插入数据为表的指定列插入数据,在插入语句中,只给出了部分列的值,其它列的值为表定义时的默认值,或允许该列取空值。【例5.3】向student1表插入一条记录,学
7、号为“196004”,姓名为“周俊文”,性别为“男”、取默认值,出生日期为“1998-03-10”,专业为空值,总学分为52。mysql INSERT INTO student1(sno,sname,sbirthday,tc)-VALUES(196004,周俊文,1998-03-10,52);执行结果:执行结果:Query OK,1 row affected(0.06 sec)数据库原理与应用(基于MySQL)95.1 插入数据插入数据使用SELECT语句查询插入的数据:mysql SELECT*FROM student1;查询结果:查询结果:+-+-+-+-+-+-+|sno|sname|s
8、sex|sbirthday|speciality|tc|+-+-+-+-+-+-+|196001|董明霞|女|1999-05-02|通信|50|196002|李茜|女|1998-07-25|通信|48|196004|周俊文|男|1998-03-10|NULL|52|+-+-+-+-+-+-+3 rows in set(0.00 sec)数据库原理与应用(基于MySQL)105.1 插入数据插入数据5.1.3 插入多条记录插入多条记录插入多条记录时,在插入语句中,只需指定多个插入值列表,插入值列表之间用逗号隔开。【例5.4】向student表插入样本数据,共6条记录,参见附录B。mysql IN
9、SERT INTO student -VALUES(191001,刘清泉,男,1998-06-21,计算机,52),-(191002,张慧玲,女,1999-11-07,计算机,50),-(191003,冯涛,男,1999-08-12,计算机,52),-(196001,董明霞,女,1999-05-02,通信,50),-(196002,李茜,女,1998-07-25,通信,48),-(196004,周俊文,男,1998-03-10,通信,52);执行结果:执行结果:Query OK,6 rows affected(0.03 sec)Records:6 Duplicates:0 Warnings:0
10、 数据库原理与应用(基于MySQL)115.1 插入数据插入数据使用SELECT语句查询插入的数据:mysql SELECT*FROM student;查询结果:查询结果:+-+-+-+-+-+-+|sno|sname|ssex|sbirthday|speciality|tc|+-+-+-+-+-+-+|191001|刘清泉|男|1998-06-21|计算机|52|191002|张慧玲|女|1999-11-07|计算机|50|191003|冯涛|男|1999-08-12|计算机|52|196001|董明霞|女|1999-05-02|通信|50|196002|李茜|女|1998-07-25|通信
11、|48|196004|周俊文|男|1998-03-10|通信|52|+-+-+-+-+-+-+6 rows in set(0.00 sec)数据库原理与应用(基于MySQL)125.1 插入数据插入数据5.1.4 REPLACE语句语句REPLACE语句的语法格式与INSERT语句基本相同,当存在相同的记录时,REPLACE语句可以在插入数据之前将与新记录冲突的旧记录删除,使新记录能够正常插入。【例5.5】对student1表,重新插入记录(196002,李茜,女,1998-07-25,通信,48)。mysql REPLACE INTO student1 VALUES -(196002,李茜,
12、女,1998-07-25,通信,48);执行结果:执行结果:Query OK,1 row affected(0.04 sec)数据库原理与应用(基于MySQL)135.1 插入数据插入数据5.1.5 插入查询结果语句插入查询结果语句将已有表的记录快速插入当前表中,使用INSERT INTOSELECT语句。其中,SELECT语句返回一个查询结果集,INSERT语句将这个结果集插入到指定表中。语法格式:语法格式:INSERT INTO table_name 1(column_list1)SELECT(column_list2)FROM table_name e2 WHERE(condition)
13、其中,table_name 1是待插入数据的表名,olumn_list1是待插入数据的列名表;table_name 2是数据来源表名,olumn_list2是数据来源表的列名表;olumn_list2列名表必须和olumn_list1列名表的列数相同,且数据类型匹配;condition指定查询语句的查询条件。数据库原理与应用(基于MySQL)145.1 插入数据插入数据【例5.6】向student2表插入student表的记录。mysql INSERT INTO student2 -SELECT*FROM student;执行结果:执行结果:Query OK,6 rows affected(0
14、.06 sec)Records:6 Duplicates:0 Warnings:0 数据库原理与应用(基于MySQL)155.2 修改数据修改数据修改表中的一行或多行记录的列值使用UPDATE语句。语法格式:语法格式:UPDATE table_name SET column1=value1,column2=value2,.WHERE 说明:说明:(1)SET子句:用于指定表中要修改的列名及其值,column1,column2,.为指定修改的列名,value1,value2,.为相应的指定列修改后的值。(2)WHERE子句:用于限定表中要修改的行,condition指定要修改的行满足的条件,若语
15、句中不指定WHERE子句,则修改所有行。数据库原理与应用(基于MySQL)165.2 修改数据修改数据5.2.1 修改指定记录修改指定记录修改指定记录需要通过WHERE子句指定要修改的记录满足的条件。【例5.7】在student1表中,将学生周俊文的出生日期改为“1999-03-10”。mysql UPDATE student1 -SET sbirthday=1999-03-10 -WHERE sname=周俊文;执行结果:执行结果:Query OK,1 row affected(0.07 sec)Rows matched:1 Changed:1 Warnings:0 数据库原理与应用(基于M
16、ySQL)175.2 修改数据修改数据使用SELECT语句查询修改指定记录后的数据:mysql SELECT*FROM student1;查询结果:查询结果:+-+-+-+-+-+-+|sno|sname|ssex|sbirthday|speciality|tc|+-+-+-+-+-+-+|196001|董明霞|女|1999-05-02|通信|50|196002|李茜|女|1998-07-25|通信|48|196004|周俊文|男|1999-03-10|NULL|52|+-+-+-+-+-+-+3 rows in set(0.00 sec)数据库原理与应用(基于MySQL)185.2 修改数据
17、修改数据5.2.2 修改全部记录修改全部记录修改全部记录不需要指定WHERE子句。【例5.8】在student1表中,将所有学生的学分增加2分。mysql UPDATE student1 -SET tc=tc+2;执行结果:执行结果:Query OK,3 rows affected(0.10 sec)Rows matched:3 Changed:3 Warnings:0 数据库原理与应用(基于MySQL)195.2 修改数据修改数据使用SELECT语句查询修改全部记录后的数据:mysql SELECT*FROM student1;查询结果:查询结果:+-+-+-+-+-+-+|sno|snam
18、e|ssex|sbirthday|speciality|tc|+-+-+-+-+-+-+|196001|董明霞|女|1999-05-02|通信|52|196002|李茜|女|1998-07-25|通信|50|196004|周俊文|男|1999-03-10|NULL|54|+-+-+-+-+-+-+3 rows in set(0.00 sec)数据库原理与应用(基于MySQL)205.3 删除数据删除数据删除表中的一行或多行记录使用DELETE语句。语法格式:语法格式:DELETE FROM table_name WHERE 其中,table_name是要删除数据的表名,WHERE子句是可选项,
19、用于指定表中要删除的行,condition指定删除条件,若省略WHERE子句,则删除所有行。数据库原理与应用(基于MySQL)215.3 删除数据删除数据5.3.1 删除指定记录删除指定记录删除指定记录需要通过WHERE子句指定表中要删除的行所满足的条件。【例5.9】在student1表中,删除学号为196004的行。mysql DELETE FROM student1 -WHERE sno=196004;执行结果:执行结果:Query OK,1 row affected(0.02 sec)数据库原理与应用(基于MySQL)225.3 删除数据删除数据使用SELECT语句查询删除一行后的数据:
20、mysql SELECT*FROM student1;查询结果:查询结果:+-+-+-+-+-+-+|sno|sname|ssex|sbirthday|speciality|tc|+-+-+-+-+-+-+|196001|董明霞|女|1999-05-02|通信|52|196002|李茜|女|1998-07-25|通信|50|+-+-+-+-+-+-+2 rows in set(0.00 sec)数据库原理与应用(基于MySQL)235.3 删除数据删除数据5.3.2 删除全部记录删除全部记录删除全部记录有两种方式:一种方式是通过DELETE语句并省略WHERE子句,则删除表中所有行,仍保留表的
21、定义在数据库中。另一种方式是通过TRUNCATE语句,则删除原来的表并重新创建一个表。数据库原理与应用(基于MySQL)245.3 删除数据删除数据1DELETE语句语句省略WHERE子句的DELETE语句,用于删除表中所有行,而不删除表的定义。【例5.10】在student1表中,删除所有行。mysql DELETE FROM student1;执行结果:执行结果:Query OK,2 rows affected(0.07 sec)使用SELECT语句进行查询:mysql SELECT*FROM student1;查询结果:查询结果:Empty set(0.00 sec)数据库原理与应用(基
22、于MySQL)255.3 删除数据删除数据2TRANCATE语句语句TRUNCATE语句用于删除原来的表并重新创建一个表,而不是逐行删除表中记录,执行速度比DELETE语句快。语法格式:语法格式:TRUNCATE TABLE table_name其中,table_name是要删除全部数据的表名。【例5.11】在student表中,删除所有行。mysql TRUNCATE student;执行结果:执行结果:Query OK,0 rows affected(0.21 sec)数据库原理与应用(基于MySQL)265.3 删除数据删除数据2TRANCATE语句语句使用SELECT语句进行查询:mysql SELECT*FROM student1;查询结果:查询结果:Empty set(0.01 sec)数据库原理与应用(基于MySQL)