[MySQL]数据的增加(插入)、修改、删除与计算列
文章目录
- 1. 插入数据
- 1.1 表的准备
- 1.2 一次添加一条记录
- 1.2.1 为表的所有字段按默认顺序插入数据
- 1.2.2 为表的指定字段插入数据
- 1.3 一次添加多条记录
- 1.4 将查询结果插入到表中
- 2. 更新(修改)数据
- 2.1 语法
- 2.2 修改指定记录的指定数据
- 2.3 修改所有记录的指定数据
- 2.4 修改一条记录的多个字段
- 3. 删除数据
- 3.1 语法
- 3.2 删除指定记录
- 3.3 删除所有数据
- 4. 注意点
- 5. MySQL8新特性:计算列
1. 插入数据
插入数据,即向已有的表中增加一条记录。
1.1 表的准备
# 使用 atguigudb
USE atguigudb;# 新建表格
CREATE TABLE IF NOT EXISTS emp1 (id INT,`name` VARCHAR(15),hire_data DATE,salary DOUBLE(10, 2)
);# 查看表的结构
DESC emp1;
1.2 一次添加一条记录
1.2.1 为表的所有字段按默认顺序插入数据
语法:
INSERT INTO 表名
VALUES (value1, value2, ...);
注意:值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
# 向表 emp1 中插入一条记录
INSERT INTO emp1
VALUES (1, 'ZS', '2000-11-11', 3333);SELECT * FROM emp1;
1.2.2 为表的指定字段插入数据
为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
语法:
INSERT INTO 表名(column1 [column2, column3, ...])
VALUES (value1, [value2, value3, ...]);
注意:在 INSERT 子句中列出的列名顺序以及个数可以与定义表格时的顺序和个数不同,但是一旦列出,VALUES中要插入的value值需要与column列一一对应。如果不对应,将无法插入,并且MySQL会产生错误。
INSERT INTO emp1(id, hire_data, `name`, salary)
VALUES (2, '2001-12-12', 'LS', 4444);SELECT * FROM emp1;
INSERT INTO emp1(id, `name`, salary)
VALUES (3, 'WW', 5555);SELECT * FROM emp1;
1.3 一次添加多条记录
INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开,基本语法格式如下:
INSERT INTO 表名
VALUES
(value1 [,value2, ..., valuen]),
(value1 [,value2, ..., valuen]),
......
(value1 [,value2, ..., valuen]);
或者
INSERT INTO 表名(column1 [, column2, …, columnn])
VALUES
(value1 [,value2, ..., valuen]),
(value1 [,value2, ..., valuen]),
......
(value1 [,value2, ..., valuen]);
INSERT INTO emp1(id, `name`, salary)
VALUES (4, 'ZL', 6555),(5, 'LL', 6767);SELECT * FROM emp1;
一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句,但是多行的INSERT语句在处理过程中 效率更高 。因为MySQL执行单条INSERT语句插入多行数据比使用多条INSERT语句快,所以在插入多条记录时最好选择使用单条INSERT语句的方式插入。
1.4 将查询结果插入到表中
INSERT还可以将SELECT语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。
语法:
INSERT INTO 目标表名
(tar_column1 [, tar_column2, …, tar_columnn])
SELECT
(src_column1 [, src_column2, …, src_columnn])
FROM 源表名
[WHERE condition]
将查询结果插入到表中,即在 INSERT 语句中加入子查询,不必书写 VALUES 子句,子查询中的字段应与 INSERT 子句中的字段对应。
INSERT INTO emp1(id, `name`, salary, hire_data)
SELECT employee_id, last_name, salary, hire_date
FROM employees
WHERE department_id IN (70, 60);SELECT * FROM emp1;
注意:被插入数据的表中要添加数据的字段的长度不能低于查询表中查询的字段的长度。如果被插入数据的表中要添加数据的字段的长度低于查询表中查询的字段的长度的话,就有添加不成功的风险。
2. 更新(修改)数据
更新(修改)数据,对表中已有的记录进行修改。
2.1 语法
UPDATE 表名
SET 字段名 = 值, [字段名 = 值, ...]
[WHERE 条件];
使用 WHERE 子句指定需要更新指定数据的记录;如果省略 WHERE 子句,则表中的所有记录的指定数据都将被更新。
2.2 修改指定记录的指定数据
UPDATE emp1
SET hire_data = '2020-12-11'
WHERE id = 5;SELECT * FROM emp1;
2.3 修改所有记录的指定数据
UPDATE emp1
SET hire_data = '2021-11-11';
# WHERE id = 5;SELECT * FROM emp1;
2.4 修改一条记录的多个字段
UPDATE emp1
SET hire_data = '2000-01-01', salary = 9999
WHERE id = 1;SELECT * FROM emp1;
3. 删除数据
3.1 语法
DELETE FROM 表名
[WHERE 条件];
使用 WHERE 子句删除指定的记录;如果没有WHERE子句,DELETE语句将删除表中的所有记录。
3.2 删除指定记录
DELETE FROM emp1
WHERE id > 2;SELECT * FROM emp1;
3.3 删除所有数据
DELETE FROM emp1;
# WHERE id > 2;SELECT * FROM emp1;
4. 注意点
- 在插入、删除、修改数据时,有可能因为约束的影响,导致插入、删除、修改数据失败。
- DML操作默认情况下,执行完以后都会自动提交数据。如果希望执行完以后不自动提交数据,则需要使用
SET autocommit = FALSE
。
5. MySQL8新特性:计算列
计算列:简单来说就是某一列的值是通过别的列计算得来的。
例如,a列值为1、b列值为2,c列不需要手动插入,定义a+b的结果为c的值,那么c就是计算列,是通过别的列计算得来的。当a或b列的值发生修改,c列的值也会对应修改。
在MySQL 8.0中,CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。
计算可以提升查询数据时,需要查询出记录的某些列数据的计算结果的效率。使用计算列,不用在每次查询时每条记录都进行一次运算。
定义数据表tb1,然后定义字段id、字段a、字段b和字段c,其中字段c为计算列,用于计算a+b的值。
CREATE TABLE tb1
(id INT,a INT,b INT,# 计算列c INT GENERATED ALWAYS AS (a + b) VIRTUAL
);
插入数据
INSERT INTO tb1(a,b) VALUES (100,200);SELECT * FROM tb1;
更新数据
UPDATE tb1
SET a = 200
WHERE id IS NULL ;SELECT * FROM tb1;
[MySQL]数据的增加(插入)、修改、删除与计算列相关推荐
- 数据表的新建 修改 删除 mysql
数据表的新建 修改 删除 mysql 我们准备操做目标数据库了 操作哪个库,就选中哪个库 创建数据表 新建一个数据库 新建一个数据表(学生表) 数据表中记录:编号,姓名,成绩,身高 建库 建表 查看建 ...
- MySQL - SQL语句增加字段/修改字段/修改类型/修改默认值
1.应用场景 有时[比如在Linux服务器下]需要使用SQL语句直接对数据表进行新建/修改表结构, 填充/更新数据等. 或借助数据库管理工具执行SQL,但是这种方法,比较适合做微小的操作- 好处: 使 ...
- oracle+cascade=gt;true,mysql数据库主外键级联删除脚本RESTRICT -- CASCADE
在项目中,我们一般在数据库设计的时候做主外键关联设计,要么就不做.但是这样不符合规范,呵呵. 建立主外键关系的时候,默认是不能级联删除的.而出现往往在删除主表的数据时报错, 需要先删除从表然后再删除主 ...
- linux mysql 数据文件,Linux下修改MySQL数据库数据文件路径的步骤
使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件. 原路径:/var/lib/mysql 目标路径:/home/mysq ...
- Mysql 数据插入 修改删除
MYSQL基础上机练习题(二) 数据插入.修改.删除 一.实验目的: 数据插入.修改.删除 数据表的复制 字段分列 二.实验内容: 对实验一所展示的表进行数据输入.修改.删除 以下为Employee ...
- MySQL数据操作语言——插入语句、修改语句和删除语句
数据操作语言 (DML:Data Manipulate Language )包括: 插入:insert 修改:update 删除:delete 一.插入语句 方式一:(经典插入) 1. 语法: ...
- 数据库基础--数据库基础管理(创建库/表 以及插入修改删除表数据)
1.啥子是数据库–存储数据的仓库 2.什么是数据–音乐,电影,文本,图片等 常见的数据库软件 Oracle 不开源 跨平台 厂商:甲骨文 MySQL 开源 跨平台 厂商:甲骨文 SQL Server ...
- mysql 删除字段数据_MySQL教程37-MySQL修改/删除字段
这里主要介绍 MySQL 修改和删除数据表字段的方法. 修改字段名称 MySQL 中修改表字段名的语法规则如下: ALTER TABLE CHANGE : 其中: 旧字段名:指修改前的字段名: 新字段 ...
- 05_通过sql操作表中的数据_插入修改删除查询
123131 转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7014978.html
最新文章
- php 7.0 编译安装mysql_源码编译安装php7.0.5
- Leetcode-第 283 场周赛
- yum 和 rpm安装mysql彻底删除
- 小白教你用Java生成验证码
- 如何快速找出找出两个数组中的_看动画学算法之:排序-快速排序
- tsm2812通用定时器中断_通用定时器中断(TIM2)
- 理解 JMeter 聚合报告(Aggregate Report)
- F5和nginx配合转发前端请求
- pojo类中的布尔类型的变量为什么不能加is
- systemd和sysv服务管理和配置
- 机器学习降维之主成分分析
- java手机号正则验证(电信、联通、移动、香港)
- 【蓝桥杯】大臣的旅费(C++) (DSF+树的最大直径)
- 磁珠 符号_磁珠。标有FB的应该是磁珠!
- c语言程序设计诗句,诗歌大全
- 【EDUcoder实训作业题解】结构体
- 数字方法--按零补位
- 一、PS是PhotoShop的缩写
- [Discuz!模板] 听雨轩风格[GBK][utf8][一键安装 DIY][20110918更新]
- iceberg Flink操作
热门文章
- html制作电影界面,电影网站界面设计HTML_CSS模板
- flex osgi实现-potomac 实现页面与页面间数据传递和页面间各部分的数据传递
- Windows构建Flutter环境,无法访问maven.google.com
- live555 android,live555
- CornerStone 破解 最简单的破解方法
- android-gpuimage-plus
- 从 Linus Torvalds 的成功中,我发现了这五个“残酷”真相
- Numerical Optimization和Convex optimization 两本书的选择?
- Selenium+ChromeDriver爬取链家网二手房价(包括经纬度)信息
- c++栈的基础应用,括号匹配、逆波兰表达式求值