MySQL数据处理之增、删、改的操作:
我们先新建一个表emp1作为研究对象,代码如下:
CREATE TABLE emp1(
id INT ,
emp_name VARCHAR(15),
hire_date DATE,
salary DOUBLE(10,2)
);
利用查询语句查询一下新建的表的具体数据,查询结果如下(表里是空的):
1.
添加数据
方式一:在给定的表里面直接添加数据
注意 :添加字段值的顺序要和原表里字段声明的顺序一致
参考代码如下:
INSERT INTO emp1
VALUES(1,'Tom',CURDATE(),80000);
此时,利用查询语句查询一下新建的表的具体数据,查询结果如下:
刚刚的数据(1,'Tom',CURDATE(),80000)
已经添加进表格了
++++++++++++++(分割线)+++++++++++++++
我们在实际开发中常常这样写(自己定义添加数据的字段的顺序),参考代码如下;
INSERT INTO emp1(id,salary,emp_name,hire_date)
VALUES(6,60000,'king',CURDATE());
此时,利用查询语句查询一下新建的表的具体数据,查询结果如下:
我们看到,刚刚的自定义的写法添加的数据已经进入了表格中。
接下来,我们讨论几种错误的写法,望读者引以为戒:
错误的写法1(位置没对应)
INSERT INTO emp1
VALUES(2,CURTIME(),'Junry',60000);
错误的写法2(有字段没有被给数据)
INSERT INTO emp1
VALUES(3,'LLL'500000);
注意:未声明赋值的字段,默认赋值为NULL,这种写法有时候会报错,后面的章节会讲解相应的解决和优化的方法
自定义添加顺序的时候,不一定每个字段都要给它定义位置,可以有字段不予赋值
INSERT INTO emp1(id,salary,emp_name)
VALUES(8,80000,'张三');
这种写法有时候会报错,后面会讲解相应的解决和优化的方法。
----------------------------------(分割线)--------------------------------
方式二:基于现有的表进行加工
注意:这种方法属于导入数据,接受数据的表格,它相应字段的字符串长度限制必须 >=
原表格相应字段的字符串长度限制,对应的数据类型必须一致。
还是以表 emp1 为研究对象,基于表 employees 进行加工,参考代码如下:
INSERT INTO emp1(id,emp_name,salary)
SELECT employee_id,last_name,salary
FROM employees
WHERE department_id IN (60,70,80);
备注:以上代码,将新表中的字段id,emp_name,salary
对应原表中的字段employee_id,last_name,salary
一一对应去添加数据。添加的数据来源于表 employees ,经过筛选,只将原表中id在 60、70、80 之间的数据添加进来。
执行以上添加命令的代码后,此时,利用查询语句查询一下新建的表的具体数据,查询结果如下:
我们会发现表中数据变成了42行(如图右下角勾画),增加的这40行来自employees表中id
在 60、70、80 之间的数据。
---------------------------------------------(分割线)-------------------------------------------
2.
删除操作:delete from ... where...
该操作自带批量操作的性质(可筛选性地删除,where
就是起筛选的作用)
举例代码如下:
举例1:删除 id=6 的这一行所有数据
DELETE FROM emp1
where id = 6 ;
执行该命令后,利用查询语句查询一下新建的表的具体数据,查询结果如下:
此时,我们发现,id=6 的这一行所有数据已经被删除了。
举例2:删除slary<4000 的行的所有数据
DELETE FROM emp1
WHERE salary < 6000;
执行该命令后,利用查询语句查询一下新建的表的具体数据,查询结果如下:
我们发现此时数据只剩38行了,说明那三行满足salary< 6000 的数据已经被删除了。
---------------------------------------------(分割线)-------------------------------------------
3.
修改操作 : update ... set ...,...,... where ...
(自带批量操作的性质)(可筛选性地删除,where
就是起筛选的作用)
举例代码如下:
举例1:将id=1 的人的salary 改成6600
UPDATE emp1
SET salary = 6600 # set 接修改的具体内容
WHERE id = 1;
执行该命令后,利用查询语句查询一下新建的表的具体数据,查询结果如下:
我们发现表中
id=1
的人的salary
变成了6600
举例2:将满足emp_name = 'Tom'
的那行的salary
改成7600,hire_date
改成2020-06-06
UPDATE emp1
SET salary = 7600,hire_date = '2020-06-06' #set 接修改的具体内容,可以接多条,共同修改。
WHERE emp_name = 'Tom';
备注:通过举例2可以看出该修改命令可以同时修改多个字段所对应的数据。
执行该命令后,利用查询语句查询一下新建的表的具体数据,查询结果如下:
我们可以发现,满足emp_name = 'Tom'
的那行的salary
变成了7600,hire_date
变成了2020-06-06
在这里需要再强调一下:由于约束的影响,可能会导致增、删、改 操作失败。