Data Manipulation Language DML 数据库操作语句,用于增删改
插入全部字段 所有的字段名都写出来 INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3); 不写字段名 INSERT INTO 表名 VALUES (值 1, 值 2, 值 3…); 插入部分数据 INSERT INTO 表名 (字段名 1, 字段名 2, ...) VALUES (值 1, 值 2, ...); 没有添加数据的字段会使用 NULL 关键字说明 INSERT INTO 表名 – 表示往哪张表中添加数据 (字段名 1, 字段名 2, …) -- 要给哪些字段设置值 VALUES (值 1, 值 2, …); -- 设置具体的值 -- 注意 值与字段必须对应,个数相同,类型相同 值的数据大小必须在字段的长度范围内 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号) 如果要插入空值,可以不写字段,或者插入 null
具体操作:
插入部分数据,往学生表中添加 id, name, age, sex 数据 INSERT INTO student (id, NAME, age, sex) VALUES (1, '张三', 20, '男'); 向表中插入所有字段 所有的字段名都写出来 INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '广州'); 不写字段名 INSERT INTO student VALUES (3, '王五', 18, '男', '北京');
当我们使用 DOS 命令行进行 SQL 语句操作如有有中文会出现乱码,导致 SQL 执行失败 乱码产生的原因 因为 MySQL 的客户端设置编码是 utf8,而系统的 DOS 命令行编码是 gbk,编码不一致导致的乱码 查看 MySQL 内部设置的编码 show variables like 'character%'; 临时解决方案 修改 client、connection、results 的编码为 GBK,保证和 DOS 命令行编码保持一致 单独设置 set character_set_client=gbk; set character_set_connection=gbk; set character_set_results=gbk; 快捷设置 set names gbk; 注意:以上 2 种方式为临时方案,退出 DOS 命令行就失效了,需要每次都配置
-- 什么是蠕虫复制: 在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中 -- 语法格式: INSERT INTO 表名 1 SELECT * FROM 表名 2; 作用:将表名 2 中的数据复制到表名 1 中
具体操作:
创建 student2 表,student2 结构和 student 表结构一样 CREATE TABLE student2 LIKE student; 将 student 表中的数据添加到 student2 表中 INSERT INTO student2 SELECT * FROM student; 如果只想复制 student 表中 name,age 字段数据到 student2 表中使用如下格式 INSERT INTO student2(NAME, age) SELECT NAME, age FROM student;
不带条件修改数据 UPDATE 表名 SET 字段名=值; 带条件修改数据 UPDATE 表名 SET 字段名=值 WHERE 字段名=值; 关键字说明 UPDATE: 修改数据 SET: 修改哪些字段 WHERE: 指定条件
具体操作:
不带条件修改数据,将所有的性别改成女 UPDATE student SET sex='女'; 带条件修改数据,将 id 号为 2 的学生性别改成男 UPDATE student SET sex='男' WHERE id=2; 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京 UPDATE student SET age=26, address='北京' WHERE id=3;
不带条件删除数据 DELETE FROM 表名; 带条件删除数据 DELETE FROM 表名 WHERE 字段名=值; 删除表中所有记录 TRUNCATE TABLE 表名; -- truncate 和 delete 的区别: delete 是将表中的数据一条一条删除 truncate 是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
具体操作:
带条件删除数据,删除 id 为 3 的记录 DELETE FROM student WHERE id=3; 不带条件删除数据,删除表中的所有数据 DELETE FROM student;