Files
mysql-press/docs/mysql/insert.md
2021-05-06 15:10:14 +08:00

169 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 数据操作
## 插入数据
上面已经创建了一个class表表的格式为
| name | sex | age |
| ---- | ---- | ---- |
所以应该如何添加数据呢?
```sql
insert into (,,....) value(,,...);
```
添加数据就是使用上面的格式。
所以class表添加数据的方法就是
```sql
insert into class(name,sex,age) value("张三","",20);
```
![图 1](../../images/d0563dc7845cb598cb300066e182aa2067e3fc6216946703fbb6c587a0078c49.png)
出现这样就是添加成功了
虽然到这里应该还有很多疑问,但是没办法一时解释清楚,请带着疑问走下去。
## 查询数据
已经插入数据了,那么如何查看呢?
```sql
select * from ;
```
这样就是查询数据的方法,让我们来试一下。
```sql
select * from class;
```
![图 2](../../images/4cdefb4aeb27679d91dd50227a7d2efc117dc1f60effabd42677dc9d0dfbdbe9.png)
看到了我们的数据已经出现在里面了,那么插入的数据都已经成功了。
## 插入数据详解
下面详细来了解一下插入数据的语句
```sql
insert into (,,....) value(,,...);
```
表名就可以不用说了,那么后面的字段名如何写呢?
### 必须是表中含有的字段
就像我们现在的class表只有name sex 与 age 这三个字段,所以插入的时候是`(name,sex,age)`
如果写一个不存在的字段就会报错比如下面我们写一个classname
```sql
insert info class(name,sex,age,classname) value("李三","",20,"一班");
```
![图 1](../../images/13ee6d4bd67ad0887098ee2a3ff5cb2ecae4245492c9f7914737eda82c445b8b.png)
现在就报错了
>ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'class(name,sex,age,classname) value("李三","男",20,"一班")' at line 1
翻译一下
> 错误106442000您的SQL语法有错误请查看与您的MySQL服务器版本对应的手册以了解使用“classnamesexageclassnamevalue”李三","男",20,"一班")' 在1号线
sql语法错误了不能写表内没有的字段
### 可以省略一些字段
举个例子
```sql
insert class(name) value("李四");
```
![图 2](../../images/05744f66e8ff044dfd7d26b6c5173b6d38e26946dee5866ab28ef6d090885620.png)
可以成功
查询一下
![图 3](../../images/cf4c2d67f9e61957ecd9e0b15f88708fa1b082c8466fe58e87f47c6fdd77c857.png)
只有名字 其他的都是null只要是不写的字段默认都会是null。
### 可以省略字段名
上面添加的时候都会写上字段名字,但是名字都是可以省略的,只需要遵循语法规范。
```sql
INSERT INTO table VALUE(value1,value2,...);
```
写法是怎么样的呢后面value的顺序需要跟建表时候的字段顺序一样而且数量需要一样的。
例如现在的这个表
```sql
insert into class value('王五','',11);
```
![图 1](../../images/70c8fced863114fc9da9c3bef072a664205ad74208834f4ad211bc0ac11b8907.png)
查询一下
![图 2](../../images/560eaa119c7b2d863f1d67f8e02479bc78590e2df918969ab45fef5bf0db348c.png)
已经出现了
如果说少些了或者多写了会怎么样呢?
```sql
insert into class value('王五','');
```
![图 3](../../images/47825a90e74ed9efc2bfd68edd33ff23fa1a4b83fb51b4293d49753782c84394.png)
```sql
insert into class value('王五','',11,2);
```
![图 4](../../images/43a26e249cb890dcad72ff1ae2f5b6d2510b88c3f3b897ddd2af1a551abd6251.png)
两个错误都是一样的,翻译一下
![图 5](../../images/34180375660480f0888de766b4ef42ed9a39ec72d4c33123101773af694b701e.png)
如果想这么添加必须个数一样,所以一般不会使用这样的添加方法。
### 一次添加多条数据
现在每次执行一行的时候都是添加的一条数据,有时候我们需要同时添加多条数据的时候怎么办呢?
```sql
INSERT INTO table VALUES(value1,value2,...),(value1,value2,...),(value1,value2,...),....;
```
使用上面的语法就可以比如我们现在的这个class表。
```sql
insert into class(name,sex,age) values('小红','',11),('小名','',11),('小白','',11);
```
这样一次我们添加三条数据,可以再往后添加更多的数据。
![图 6](../../images/269762a748666237f4c75c4e78526b32c2dff37db2346aea3757933f4ecc8f3d.png)
添加成功了,查询一下
![图 7](../../images/007b78cc30be892d485e497caa3bbb1f0203ec1cbeda4ab9378408cc018ce9a8.png)
下面添加的那三个已经成功添加进去了。
## 结束
插入数据已经说完了,下面就是修改数据和删除数据了。