0基础学MySQL数据库—从小白到大牛(10)数据处理增删改


一、插入数据

首先创建一张表:

mysql> CREATE TABLE IF NOT EXISTS emp1(
    -> id INT,`name` VARCHAR(15),hire_date DATE,salary DOUBLE(10,2)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> DESC emp1;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      | YES  |     | NULL    |       |
| name      | varchar(15)  | YES  |     | NULL    |       |
| hire_date | date         | YES  |     | NULL    |       |
| salary    | double(10,2) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

添加数据方式1:

INSERT INTO emp1
VALUES (1,'JSJ','2000-9-30',2200);
要清楚声明的字段的先后顺序
mysql> SELECT * FROM emp1;
+------+------+------------+---------+
| id   | name | hire_date  | salary  |
+------+------+------------+---------+
|    1 | JSJ  | 2000-09-30 | 2200.00 |
+------+------+------------+---------+
1 row in set (0.00 sec)

添加数据方式2:

按照自己声明的字段顺序添加
INSERT INTO emp1(id,`name`,salary,hire_date)
VALUES(2,'WZC',0,'2002-01-22');
mysql> SELECT * FROM emp1;
+------+------+------------+---------+
| id   | name | hire_date  | salary  |
+------+------+------------+---------+
|    1 | JSJ  | 2000-09-30 | 2200.00 |
|    2 | WZC  | 2002-01-22 |    0.00 |
+------+------+------------+---------+
2 rows in set (0.00 sec)

没有进行赋值的值为null
INSERT INTO emp1(id,`name`,salary)
VALUES(3,'LWM',0);

同时插入多条记录

INSERT INTO emp1(id,`name`,salary,hire_date)
VALUES(4,'Z',0,'2000-01-22'),(5,'X',0,'2001-01-22');

添加数据方式3:
将查询结果插入到表中

INSERT INTO 目标表名
(tar_column1 [, tar_column2,, tar_columnn]) 
SELECT
(src_column1 [, src_column2,, src_columnn]) 
FROM 源表名
[WHERE condition]


INSERT INTO emp1(id,`name`,salary,hire_date)
#查询语句
SELECT employee_id,last_name,salary,hire_date 	#查询的字段一定要与添加到表的字段一一对应
FROM employees
WHERE department_id IN (60,70);

目标表中要添加的字段的长度不能低于源表中查询的字段的长度,否则报错。因此使用之前应先查看对应的表结构字段的类型是否符合标准。如果目标表中要添加数据的字段的长度低于源表中查询的字段的长度的话,就有添加不成功的风险。

  • 在 INSERT 语句中加入子查询。
  • 不必书写 VALUES 子句。
  • 子查询中的值列表应与 INSERT 子句中的列名对应。

二、更新数据&修改数据

UPDATE dbname SET 字段=新数据 WHERE 具体哪个字段
如果没有WHERE的约束,可以实现批量修改数据

UPDATE emp1
SET hire_date = CURDATE()#返回当前日期
WHERE id = 5;

同时修改多个字段
UPDATE emp1
SET hire_date = CURDATE(),salary = 6000
WHERE id = 4;

三、删除数据

DELETE FROM… WHERE…

DELETE FROM emp1
WHERE id = 1;

四、小结

DML的操作默认情况下,是会自动提交数据的
如果希望执行后不自动提交数据,则需要使用 SET autocommit = FALSE

五、MySQL8新特性:计算列

什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。

在MySQL 8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。下面以CREATE TABLE为例。

举例:定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的值。 首先创建测试表tb1,语句如下:

CREATE TABLE tb1(
                id INT,
                a INT,
                b INT,
                c INT GENERATED ALWAYS AS (a + b) VIRTUAL 	#字段C即为计算列
                );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白努力学数据库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值