1.掌握MySQL数据库表的数据插入、修改、删除操作SQL语法格式
2.掌握数据表的数据的录入、增加和删除的方法
1. 验证性实验:在学校教师管理数据库中的teacherInfo表中完成插入数据、更新数据和删除数据操作。
2.设计性试验:在某超市的食品管理的数据库的Food表中完成插入数据、更新数据和删除数据操作。
(一)验证性实验
学校教师管理数据库中的teacherInfo表,其表的定义如下表所示,请完成如下操作。
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
num | 教工号 | INT(10) | 是 | 否 | 是 | 是 | 否 |
name | 姓名 | VARCHAR(20) | 否 | 否 | 是 | 否 | 否 |
sex | 性别 | VARCHAR(4) | 否 | 否 | 是 | 否 | 否 |
birthday | 出生日期 | DATETIME | 否 | 否 | 否 | 否 | 否 |
address | 家庭住址 | VARCHAR(50) | 否 | 否 | 否 | 否 | 否 |
1.创建teacherInfo表
CREATE TABLE teacherInfo( num INT(10) NOT NULL UNIQUE PRIMARY KEY, Name VARCHAR(20) NOT NULL, sex VARCHAR(4) NOT NULL, birthday DATETIME, address VARCHAR(50) );
2. 向teacherInfo表中插入记录。
INSERT INTO teacherInfo VALUES(1001,'张龙','男','1984-11-08','北京市昌平区'); INSERT INTO teacherInfo VALUES(1002,'李梅','女','1970-01-21','北京市海淀区'); INSERT INTO teacherInfo VALUES(1003,'王一丰','男','1976-10-30','北京市昌平区'); INSERT INTO teacherInfo VALUES(1004,'赵六','男','1980-06-05','北京市顺义区');
3.操作后查看表
SELECT * FROM teacherinfo;
4.更新教工号为1003的记录,将生日(birthday)改为“1982-11-08”。
UPDATE teacherInfo SET birthday='1982-11-08' WHERE num=1003;
5.将性别(sex)为“男”的记录的家庭住址(address)都变为“北京市朝阳区”。
UPDATE teacherInfo SET address='北京市朝阳区' WHERE sex='男';
6.删除教工号(num)为1002的记录删除。
DELETE FROM teacherInfo WHERE num=1002;
7.操作后查看表
SELECT * FROM teacherinfo;
(二)设计性实验
某超市的食品管理的数据库的Food表,Food表的定义如表所示,请完成插入数据、更新数据和删除数据。
Food表的定义
字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
foodid | 食品编号 | INT(4) | 是 | 否 | 是 | 是 | 是 |
Name | 食品名称 | VARCHAR(20) | 否 | 否 | 是 | 否 | 否 |
Company | 生产厂商 | VARCHAR(30) | 否 | 否 | 是 | 否 | 否 |
Price | 价格(单位:元) | FLOAT | 否 | 否 | 是 | 否 | 否 |
Product_time | 生产年份 | YEAR | 否 | 否 | 否 | 否 | 否 |
Validity_time | 保质期(单位:年) | INT(4) | 否 | 否 | 否 | 否 | 否 |
address | 厂址 | VARCHAR(50) | 否 | 否 | 否 | 否 | 否 |
1.创建食品管理数据库。
CREATE DATABASE foodCompanies;
2.创建Food表。
CREATE TABLE food( foodid INT(4) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(20) NOT NULL, Company VARCHAR(30) NOT NULL, Price FLOAT NOT NULL, Product_time YEAR, Validity_time INT(4), address VARCHAR(50) );
3.采用3种方式,将表的记录插入到Food表中。
(1)不指定具体的字段,插入数据: 'QQ饼干','QQ饼干厂',2.5,'2018',3,'北京'。
INSERT INTO food VALUES(foodid,'QQ饼干','QQ饼干厂',2.5,'2018',3,'北京');
(2)依次指定food表的字段,插入数据: 'MN牛奶','MN牛奶厂',3.5,'2019',1,'河北'
INSERT INTO food (`Name`,Company,Price,Product_time,Validity_time,address) VALUES ('MN牛奶','MN牛奶厂',3.5,'2019',1,'河北');
(3)同时插入多条记录,插入数据:
'EE果冻','EE果冻厂',1.5,'2017',2,'北京',
'FF咖啡','FF咖啡厂',20,'2012',5,'天津',
'GG奶糖','GG奶糖',14,'2013',3,'广东';
INSERT INTO food (`Name`,Company,Price,Product_time,Validity_time,address) VALUES ('EE果冻','EE果冻厂',1.5,'2017',2,'北京'), ('FF咖啡','FF咖啡厂',20,'2012',5,'天津'), ('GG奶糖','GG奶糖厂',14,'2013',3,'广东');
(4)操作后查看表
SELECT * FROM food;
4.将“MN牛奶厂”的厂址(address)改为“内蒙古”,并且将价格改为3.2。
UPDATE food SET address='内蒙古',Price=3.2 WHERE Company='MN牛奶厂';
5.将厂址在北京的公司的保质期(validity_time)都改为5年。
UPDATE food SET Validity_time=5 WHERE address='北京';
6.删除过期食品的记录。若当前时间-生产年份(producetime)>保质期(validity_time),则视为过期食品。
DELETE FROM food WHERE Validity_time<(2022-Product_time);
7.删除厂址为“北京”的食品的记录。
DELETE FROM food WHERE address='北京';
1.对于删除的数据,如何实现”逻辑删除“(即数据库中的数据不删除,给用户的感觉是删除了)?
答:通常使用一个is_deleted字段标示行记录是不是被删除(或者使用一个status字段代表所谓的“删除”状态),在逻辑上是数据是被删除的,但数据本身是依然存在的,逻辑删除恢复的话只要修改is_deleted等类似的状态标示字段就可以了,但是表的数据量肯定会比物理删除增加了,并且查询时经常要考虑到is_deleted字段,对索引都会有影响。
2.DROP命令和DELETE命令的本质区别是什么?
答:DELETE命令是数据库操作语言(DML),DROP命令是数据库定义语言(DDL)DELETE命令只删除内容、释放空间但不删除定义,而DROP命令即可以对行数据进行删除,也可以对整表数据进行删除。
DROP命令是删除内容和定义,并释放空间。执行DROP命令,将使此表的结构一起删除。
3.利用INSERT、UPDATE和DELETE命令可以同时对多个表进行操作吗?
答:不可以。
按要求完成,详细记录操作步骤,书写实验报告。所有实验环节均由每位学 生独立完成,认真记录操作过程,严禁抄袭他人实验结果。
通过本次实验实现了对表的操作,对于插入(insert)修改(updata)删除(delete)有了更深刻的认识,在插入语句中有多种方式插入数据,可指定列,可多条数据同时插入。在修改语句和删除语句中不光要声明需要操作的表,还需要添加where条件。在实验中,无论是插入还是修改,涉及到切换中英文输入法后,容易把一些符号也输入成中文,造成语法错误,需要注意。