目录
0.准备工作
1. 插入数据
1.1 方式1:VALUES的方式添加
1.1.1 情况1:为表的所有字段按默认顺序插入数据
1.1.2 情况2:为表的指定字段插入数据
1.1.3 情况3:同时插入多条记录
1.1.4 小结:
1.2 方式2:将查询结果插入到表中
2. 更新数据
3. 删除数据
4.小结
5.mysql8.0新特性:计算列
6.练习
1. 创建数据库dbtest11
2. 运行以下脚本创建表my_employees
3. 显示表my_employees的结构
4. 向my_employees表中插入下列数据
5. 向users表中插入数据
6. 将3号员工的last_name修改为“drelxer”
7. 将所有工资少于900的员工的工资修改为1000
8. 将userid为Bbiri的user表和my_employees表的记录全部删除
9. 删除my_employees、users表所有数据
10. 检查所作的修正
11. 清空表my_employees
0.准备工作
数据文件:mysql查询sql文件-数据集文档类资源-CSDN文库
1. 插入数据
1.1 方式1:VALUES的方式添加 使用这种语法一次只能向表中插入一条数据。
1.1.1 情况1:为表的所有字段按默认顺序插入数据
语法格式:
INSERT INTO 表名 VALUES (value1,value2,....); 值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。1.1.2 情况2:为表的指定字段插入数据
语法格式:
INSERT INTO 表名(column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]); 为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。1.1.3 情况3:同时插入多条记录 INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开。
语法格式:
INSERT INTO table_name VALUES (value1 [,value2, …, valuen]), (value1 [,value2, …, valuen]), …… (value1 [,value2, …, valuen]);或
INSERT INTO table_name (column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]), (value1 [,value2, …, valuen]), …… (value1 [,value2, …, valuen]);说明:
1.使用INSERT同时插入多条记录时,MySQL会返回一些在执行单行插入时没有的额外信息,这些信息的含 义如下: ● Records:表明插入的记录条数。 ● Duplicates:表明插入时被忽略的记录,原因可能是这 些记录包含了重复的主键值。 ● Warnings:表明有问题的数据值,例如发生数据类型转换。
2.一个同时插入多行记录的INSERT语句等同于多个单行插入的INSERT语句,但是多行的INSERT语句 在处理过程中 效率更高 。因为MySQL执行单条INSERT语句插入多行数据比使用多条INSERT语句 快,所以在插入多条记录时最好选择使用单条INSERT语句的方式插入。
1.1.4 小结: 1. VALUES 也可以写成 VALUE ,但是VALUES是标准写法。 2. 字符和日期型数据应包含在单引号中。
1.2 方式2:将查询结果插入到表中 INSERT还可以将 SELECt 语句查询的结果插入到表中,此时不需要把每一条记录的值一个一个输入,只需 要使用一条INSERT 语句和一条 SELECT 语句组成的组合语句即可快速地从一个或多个表中向一个表中插入 多行。 语法格式: INSERT INTO 目标表名 (tar_column1 [, tar_column2, …, tar_columnn]) SELECT (src_column1 [, src_column2, …, src_columnn]) FROM 源表名 [WHERe condition] 说明: 1.在 INSERT 语句中加入子查询。 2.不必书写 VALUES 子句。 3.子查询中的值列表应与 INSERT 子句中的列名对应。
注意:
1.查询字段的数据类型必须要与添加到的表的字段的数据类型一一对应
2.添加到的表的字段的长度不能低于查询字段,否则存在添加不成功的风险。
2. 更新数据
使用 UPDATe 语句更新数据。语法如下:
UPDATE table_name SET column1=value1, column2=value2, … , column=valuen [WHERe condition] 可以一次更新 多条 数据。 如果需要回滚数据,需要保证在 DML 前,进行设置: SET AUTOCOMMIT = FALSE;注:在添加、修改或删除数据时,是可能存在不成功的。(可能时由于约束的影响)
3. 删除数据
使用 DELETE 语句从表中删除数据,语法格式如下: DELETE FROM table_name [WHERe]; table_name指定要执行删除操作的表;“[WHERe ]”为可选参数,指定删除条件,如果没有WHERe子句, DELETe语句将删除表中的所有记录。 注:在添加、修改或删除数据时,是可能存在不成功的。(可能时由于约束的影响)
4.小结
1.DML操作在默认情况下,执行完以后都会自动提交数据,如果希望执行完以后,不自动提交数据,则需要使用SET autocommit = FALSE;
2.在添加、修改或删除数据时,是可能存在不成功的。(可能时由于约束的影响) 3.基本语法: 添加:方式1: INSERT INTO 表名 VALUES (value1,value2,....); 方式2: INSERT INTO 目标表名 (tar_column1 [, tar_column2, …, tar_columnn]) SELECT (src_column1 [, src_column2, …, src_columnn]) FROM 源表名 [WHERe condition] 更新(修改): UPDATe table_name SET column1=value1, column2=value2, … , column=valuen [WHERe condition] 删除: DELETE FROM table_name [WHERe]; 5.mysql8.0新特性:计算列 什么叫计算列呢?简单来说就是某一列的值是通过别的列计算得来的。例如,a 列值为 1 、 b 列值为 2 , c 列 不需要手动插入,定义a+b 的结果为 c 的值,那么 c 就是计算列,是通过别的列计算得来的。 在MySQL 8.0 中, CREATE TABLE 和 ALTER TABLE 中都支持增加计算列。下面以 CREATE TABLE 为例进行讲解。
6.练习
1. 创建数据库dbtest11 CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8' ;
2. 运行以下脚本创建表my_employees USE dbtest11; CREATE TABLE my_employees( id INT ( 10 ), first_name VARCHAR ( 10 ), last_name VARCHAR ( 10 ), userid VARCHAR ( 10 ), salary DOUBLE ( 10 , 2 ) ); CREATE TABLE users( id INT , userid VARCHAR ( 10 ), department_id INT );
3. 显示表my_employees的结构
4. 向my_employees表中插入下列数据
5. 向users表中插入数据 1 Rpatel 10 2 Bdancs 10 3 Bbiri 20 4 Cnewman 30 5 Aropebur 40
6. 将3号员工的last_name修改为“drelxer”
7. 将所有工资少于900的员工的工资修改为1000
8. 将userid为Bbiri的user表和my_employees表的记录全部删除
9. 删除my_employees、users表所有数据
10. 检查所作的修正
11. 清空表my_employees



