学习MySQL的第九天
纸上得来终觉浅
绝知此事要躬行
数据处理的增删查改
一、添加数据
添加数据有两种方式,一种是一条一条的添加数据,另一种是通过对其他表的查询,将查询的结果插入到表中;第一种方式又可以分为三种方式:(1)逐字段匹配 (2)指明添加的字段进行对应添加(但是字段必须是表中存在的字段,且未包含的字段不能有不能为空的) (3)一次性插入多条。下面我们来进行演示:
# 准备工作:
USE the_first
CREATE TABLE IF NOT EXISTS emp1(
id INT,
name VARCHAR(5),
hire_data DATE,
salary DOUBLE(10,2)
);
DESC emp1;
SELECT *
FROM emp1;
# 方式1:一条一条的添加数据
# 第一种:逐字段匹配
INSERT INTO emp1
VALUES(1,'Tom','2005-07-15',3000);
# 第二种:指明添加的字段进行对应添加,但是字段必须是表中存在的字段,且未包含的字段不能有不能为空的
INSERT INTO emp1(id,`name`)
VALUES(2,'Mike')
# 第三种:一次性插入多条
INSERT INTO emp1(id,salary,name)
VALUES(3,4200,'Mark'),
(4,3500,'Jok');
# 方式2:将查询的结果插入到表中
SELECT * FROM emp1;


二、更新数据(修改数据)
UPDATE ... SET ... WHERE ...
2.1 可以实现批量修改数据
UPDATE emp1
SET hire_data = CURDATE()
WHERE id>2

2.2 同时修改一条数据的多个字段
UPDATE emp1
SET hire_data = CURRENT_DATE,salary = 6000
WHERE id=4;
SELECT * FROM emp1;
练习:将姓名中含有o 的人员的薪资提高30%
USE the_first
UPDATE emp1
SET salary = salary *1.2
WHERE name LIKE '%o%'
补充:修改数据时是有可能由于约束的原因导致添加不成功
三、删除数据
DELETE FROM ... WHERE ...
准备工作:
INSERT INTO emp1
VALUE(6,'i','2005-07-15',5555)
SELECT *
FROM emp1
DELETE FROM emp1
WHERE id = 6
小结:DML操作默认执行完之后都会自动提交数据,如果希望不自动提交数据,则需要使用
SET autocommit = FALSE.
四、MySQL新特性:计算列
generated always AS (a+b) VIRTUAL :自动计算字段a和b的和
USE emp;
CREATE TABLE test(
a INT,
b INT,
c INT generated always AS (a+b) VIRTUAL # 字段C为计算列
);
# 插入数据
INSERT INTO test(a,b)
VALUES(10,50)
# 修改test表中a的值
UPDATE test
SET a =40;
五、增删查改数据库练习
1.创建数据库dbtset11
CREATE DATABASE IF NOT EXISTS dbtest11;
2.创建表my_employees
USE dbtest11;
CREATE TABLE my_employees(
id INT(10),
first_name VARCHAR(255),
last_name VARCHAR(255),
user_id VARCHAR(255),
salary DOUBLE(10,2)
);
CREATE TABLE users(
id INT,
user_id VARCHAR(255),
department_id INT
);
3.显示表my_employees的结构
DESC my_employees
4.插入数据
INSERT INTO my_employees VALUES
(1,'patel','Ralph','Rpatel',895),
(2,'Dancs','Betty','Bdancs',860),
(3,'Biri','Ben','Bbiri',1100),
(4,'Newman','Chad','Cnewman',750),
(5,'Ropeburn','Audrey','Aropebur',1550);
SELECT * FROM my_employees
SELECT * FROM users
5.向表users中加入数据
INSERT INTO users VALUES
(1, 'Rpatel', 10),
(2, 'Bdancs' , 10) ,
(3, 'Bbiri', 20),
(4, 'Cnewman', 30),
(5, 'Aropebur', 40)
6.将3号员工的last_name修改为"drelxer"
UPDATE my_employees
SET last_name = 'drelxer'
WHERE id = 3;
7.将所有工资少于900的员工的工资修改为1000
UPDATE my_employees
SET salary = 1000
WHERE salary <=900
SELECT * FROM my_employees
8.将user_id为Bbiri的user表和my_employees表的记录全部删除
方式1:
DELETE FROM my_employees
WHERE user_id = 'Bbiri';
DELETE FROM users
WHERE user_id = 'Bbiri';
方式2:
DELETE t1,t2
FROM my_employees t1
JOIN users t2
ON t1.user_id = t2.user_id
WHERE t1.user_id = 'Bbiri';
SELECT *
FROM my_employees a JOIN users b
ON a.user_id = b.user_id
9.删除my employees、users表所有数据
DELETE FROM my_employees;
DELETE FROM users;
10.检查修改结果
SELECT *FROM my_employees;
SELECT * FROM users;
六、结语
凌空蹈虚,难成千秋伟业;求真务实,方能善作善成
须知少日拏云志,曾许人间第一流。我们还年轻,我们还有无限可能!