MySQL-增删改查增删改查
例子表结构
create table message(
id int unsigned auto_increment,
name varchar(20) not null comment '姓名',
phone varchar(20) comment '手机号',
site varchar(20) default '地址不详'comment '地址',
primary key(id)
);
增
向表里添加数据时有两种方法:①指定字段名(列名)②不指定字段名(列名)
不指定字段名时必须保证插入数据的顺序与表中定义的字段顺序相同
insert into…values
在MySQL数据库管理中,"增删改查"(CRUD,Create, Read, Update, Delete)是最基础且重要的操作。本文将重点讨论“增”这一部分,即如何向数据库表中添加数据。我们以创建一个名为`message`的表为例,来详细讲解两种插入数据的方法。
创建`message`表的SQL语句如下:
```sql
CREATE TABLE message (
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(20) NOT NULL COMMENT '姓名',
phone VARCHAR(20) COMMENT '手机号',
site VARCHAR(20) DEFAULT '地址不详' COMMENT '地址',
PRIMARY KEY (id)
);
```
这个表有四个字段:`id`、`name`、`phone`和`site`。`id`字段是主键,自动递增;`name`字段不允许为空,用于存储姓名;`phone`字段用于存储手机号,可为空;`site`字段用于存储地址,默认值为"地址不详"。
接下来,我们介绍两种向`message`表中添加数据的方法。
1. **指定字段名(列名)插入**:
在这种方法中,我们需要明确指定要插入的字段以及对应的值。例如:
```sql
INSERT INTO message (name, phone, site) VALUES ('钱一', '164981541', '北京');
```
这条语句会将姓名为"钱一",电话为"164981541",地址为"北京"的数据插入到`message`表中。注意,由于`id`字段设为自动递增,所以我们不需要手动输入该字段的值。
2. **不指定字段名(列名)插入**:
当不指定字段名时,需要按照表中字段的顺序提供值。例如:
```sql
INSERT INTO message VALUES ('2', '孙二', '16491285541', '上海');
INSERT INTO message VALUES ('3', '张三', '17891285541', '广州');
```
这两条语句分别插入了两条记录,顺序与表定义中的字段顺序一致。第一条记录中,虽然`id`字段值为'2',但由于设置了`AUTO_INCREMENT`,系统会自动忽略并生成新的ID。
另外,使用`INSERT`语句还有一种`SET`格式,它更适用于更新单个或多个特定字段的值:
```sql
INSERT INTO message SET name='李四';
INSERT INTO message SET name='王五', phone='415185156', site='深圳';
```
如上述示例所示,第一行代码插入了一个只有姓名为"李四"的记录,但因为`phone`和`site`字段在创建表时并未设置为`NOT NULL`,所以可以为空。第二行代码同时设置了姓名、电话和地址字段的值。
在实际应用中,根据需求选择合适的插入方式是非常关键的。在插入字符串时,记得用单引号将它们括起来,以确保数据的正确性。同时,理解每种字段的约束条件,如`NOT NULL`、`DEFAULT`等,对于避免错误和保证数据完整性至关重要。