DML 语句

DML 语句

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 命令窗口操作数据乱码问题的解决

当我们使用 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;

你可能感兴趣的:(SQL)