MySQL最主要的功能是管理数据, 也就是增/删/改/查, 也叫CURD, 从大的方面划分就是写操作读操作
首先, 我们来学习写操作

1、添加操作

1) 基本用法

  1. 1. 插入哪张表?
  2. 2. 插入表的哪些列(字段)?
  3. 3. 这些列的值?

语法

  1. INSERT INTO `表名`
  2. (`字段1`, ... `字段n`)
  3. VALUES
  4. (值1, 2, n)

示例一. 插入单条记录

# 先选择db1数据库
USE `db1`;
# 向t1表中添加一条数据
INSERT INTO `t1`
(`id`, `name`, `age`)
VALUES
(1, 'xiaoming', 20);

如何查看数据是否添加成功?

先了解一个基本的查询操作

# 查询表中的所有记录
select * from `表名`;

示例二. 一次插入多条记录

# 向t1表中一次添加多条记录
INSERT INTO `t1`
(`id`, `name`, `age`)
VALUES
(2, 'xiaomei', 18),
(3, 'xiaoqiang', 22);

一个() : 代表一条记录

多个()使用,隔开

扩展

如果已经在db1数据库下, 不用执行USE命令, 也可以显式的指定库名, 如

INSERT INTO db1.t1
(`id`, `name`, `age`)
VALUES
(1, 'xiaoming', 20);

2) 允不允许只插入部分字段和值?

允许插入部分字段,但是前面必须写字段名,并且省略的字段没有非空的约束。

尝试

INSERT INTO `student`
(`name`, `age`)
VALUES
('xiaomei', 18);

结论: _

3) 允不允许不写字段?

尝试

INSERT INTO `student`
VALUES
('laowang', 30);

尝试

INSERT INTO `student`
VALUES
(null, 'laowang', 30);

结论: _

4) 添加案例

  • 超出整型范围
INSERT INTO `t_int` (age) VALUES (300);
  • 浮点型精度丢失问题
INSERT INTO `t_float` VALUES (12345678.12, 123.12, 12345678.12);
  • 插入中文数据
INSERT INTO `t_char` (name) VALUES ('小明');
  • 如果插入的字符串超过长度, 会怎样?
INSERT INTO `t_char` (phone) VALUES ('130123456789');
  • 如果插入的值不在enum的选型类, 会怎样?
INSERT INTO `t_char` (sex) VALUES ('女博士');
  • 如果字段类型是字符型, 插入的数据是整型或者小数型会怎样?
INSERT INTO `t_char` (phone) VALUES (13012345678);
INSERT INTO `t_char` (phone) VALUES (123456789.1);
  • 如果字段不能为null, 但是添加的时候没有指定会怎样?
INSERT INTO `t_null` (id) VALUES (1);

设置了not null的字段, 在插入数据时必须出现在字段列表中

  • 如果设置了默认值, 但是添加的时候没有指定会怎样?
INSERT INTO `t_default` (name) VALUES ('xiaoming');

添加案例小结

  • 插入数据的类型最好与要求的类型一致
  • 插入的数据必须在有效范围内
  • 插入的数据为null时给默认值
  • 自增会在原来的基础上+1

2、修改操作

1. 修改哪张表?
2. 修改表的哪些列(字段)?
3. 这些列的值?
4. 条件

语法

UPDATE `表名`
SET
`字段1`=值1,
`字段2`=值2,
...
WHERE 条件

示例

UPDATE `student`
SET
`name`='xiaoming-new'
WHERE `id`=1;

演示

3.删除操作

2点

  1. 删除哪张表?
  2. 删除哪些行?

语法

DELETE FROM `表名` WHERE 条件

示例

DELETE FROM `student` WHERE `id`=3;

演示