MySql5.6从零开始学之插入、更新与删除数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fancheng614/article/details/82319383

为了方便操作,先建立一张表:

mysql> create table person(
    -> id int unsigned not null auto_increment,
    -> name varchar(50),
    -> age int,
    -> info varchar(200),
    -> primary key(id)
    -> );
Query OK, 0 rows affected (0.40 sec)

一、插入数据

数据库插入数据的方式有:插入完整记录、插入记录的一部分、插入多条数据,插入另一个查询结果。

1、为表的所有字段插入数据

基本语法: insert into table_name(column_list) values(value_list);

例:

-- 插入数据
mysql> insert into person(id,name,age,info) values(1,'meng',22,'mengfancheng');
Query OK, 1 row affected (0.06 sec)

-- 下面查询一下这个表,可以看到已经插入了一条数据
mysql> select * from person;
+----+------+------+--------------+
| id | name | age  | info         |
+----+------+------+--------------+
|  1 | meng |   22 | mengfancheng |
+----+------+------+--------------+
1 row in set (0.02 sec)

2、为表的制定字段插入数据

注意:这里插入指定字段时,如果之前创建表约束字段不能为空,这里要是没给那个不能为空的字段赋值,会报错。

语法和1中一样,这里看例子:

insert into person(name,age,info) values('meng',22,'mengfancheng');

3、同事插入多条数据

基本语法:insert into table_name(column_list) values(values_list),(values_list1)...;

例:

-- 同时插入多条数据
mysql> insert into person(name,age,info) values
    -> ('meng',22,'mengfancheng'),
    -> ('fan',23,'woshimengfancheng');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

-- 查询上面插入的多条数据
mysql> select * from person;
+----+------+------+-------------------+
| id | name | age  | info              |
+----+------+------+-------------------+
|  1 | meng |   22 | mengfancheng      |
|  2 | meng |   22 | mengfancheng      |
|  3 | fan  |   23 | woshimengfancheng |
+----+------+------+-------------------+
3 rows in set (0.00 sec)

Records:表明插入的记录条数
Duplicates:表明插入时被忽略的记录,原因可能是主键重复
Warnings:表明有事问题的数据值,例如发生了数据类型转换

4、将查询结果插入到表中

基本语法:insert into table_name1(column_list) select (column_list2) from table_name2 where (condition);

注意:column_list和column_list2字段个数必须相同,数据类型也要相同。

为了测试,这里再创建一张person_old表格:

-- 创建表格
mysql> create table person_old(
    -> id int not null primary key,
    -> name varchar(50),
    -> age int,
    -> info varchar(200)
    -> );
Query OK, 0 rows affected (0.05 sec)

-- 首次查询为空
mysql> select * from person_old;
Empty set (0.00 sec)

-- 将从person表中查出的数据插入到person_old表中
mysql> insert into person_old(id,name,age,info)
    -> select id,name,age,info from person where id in(1,2);
Query OK, 2 rows affected (0.08 sec)
Records: 2  Duplicates: 0  Warnings: 0

-- 查询验证
mysql> select * from person_old;
+----+------+------+--------------+
| id | name | age  | info         |
+----+------+------+--------------+
|  1 | meng |   22 | mengfancheng |
|  2 | meng |   22 | mengfancheng |
+----+------+------+--------------+
2 rows in set (0.00 sec)

二、更新数据

基本语法:update table_name set column_name1=value1,column_name2=value2,...column_namen=valuen where (condition);

例:

-- 修改之前的数据
mysql> select * from person;
+----+------+------+-------------------+
| id | name | age  | info              |
+----+------+------+-------------------+
|  1 | meng |   22 | mengfancheng      |
|  2 | meng |   22 | mengfancheng      |
|  3 | fan  |   23 | woshimengfancheng |
+----+------+------+-------------------+
3 rows in set (0.00 sec)

-- 修改数据,where语句后面可以加和查询语句一样的条件
mysql> update person set name='xiaomeng' where id=1;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1  Changed: 1  Warnings: 0

--修改之后验证
mysql> select * from person;
+----+----------+------+-------------------+
| id | name     | age  | info              |
+----+----------+------+-------------------+
|  1 | xiaomeng |   22 | mengfancheng      |
|  2 | meng     |   22 | mengfancheng      |
|  3 | fan      |   23 | woshimengfancheng |
+----+----------+------+-------------------+
3 rows in set (0.00 sec)

三、删除数据

基本语法:delete from table_name [where <condition>];

例:

-- 删除数据之前
mysql> select * from person;
+----+----------+------+-------------------+
| id | name     | age  | info              |
+----+----------+------+-------------------+
|  1 | xiaomeng |   22 | mengfancheng      |
|  2 | meng     |   22 | mengfancheng      |
|  3 | fan      |   23 | woshimengfancheng |
+----+----------+------+-------------------+
3 rows in set (0.00 sec)

-- 测试删除id为1的数据
mysql> delete from person where id=1;
Query OK, 1 row affected (1.92 sec)

-- 删除数据之后验证是否已经删除
mysql> select * from person;
+----+------+------+-------------------+
| id | name | age  | info              |
+----+------+------+-------------------+
|  2 | meng |   22 | mengfancheng      |
|  3 | fan  |   23 | woshimengfancheng |
+----+------+------+-------------------+
2 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/fancheng614/article/details/82319383
今日推荐