MySQL最主要的功能是管理数据, 也就是增/删/改/查, 也叫CURD, 从大的方面划分就是写操作和读操作
首先, 我们来学习写操作
1、添加操作
1) 基本用法
1. 插入哪张表?2. 插入表的哪些列(字段)?3. 这些列的值?
语法
INSERT INTO `表名`(`字段1`, ... `字段n`)VALUES(值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点
- 删除哪张表?
- 删除哪些行?
语法
DELETE FROM `表名` WHERE 条件
示例
DELETE FROM `student` WHERE `id`=3;
演示
