MySQL数据基本操作
Posted heqiuyong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据基本操作相关的知识,希望对你有一定的参考价值。
表结构准备:
mysql> CREATE TABLE student( -> sid INT PRIMARY KEY AUTO_INCREMENT, -> sname VARCHAR(10), -> age INT, -> city VARCHAR(10) -> ); Query OK, 0 rows affected (0.08 sec)
一、数据插入操作
1.1 向表中所有字段插入数据
语法:insert into 表名 values (值列表);
mysql> INSERT INTO student VALUES (NULL,"张三",20,"广州"); Query OK, 1 row affected (0.03 sec) mysql> select * from student; +-----+--------+------+--------+ | sid | sname | age | city | +-----+--------+------+--------+ | 1 | 张三 | 20 | 广州 | +-----+--------+------+--------+ 1 row in set (0.00 sec)
注意:值列表必须与表结构中的字段相对应。
1.2 向表中指定字段插入数据
语法:insert into 表名 (字段1,字段2,...) values (字段1的值,字段2的值,...);
mysql> INSERT INTO student(sname,age) VALUES ("李四",22); Query OK, 1 row affected (0.03 sec) mysql> select * from student; +-----+--------+------+--------+ | sid | sname | age | city | +-----+--------+------+--------+ | 1 | 张三 | 20 | 广州 | | 2 | 李四 | 22 | NULL | +-----+--------+------+--------+ 2 rows in set (0.00 sec)
注意:1.values中的值列表需要与前面的字段列表相对应,字段列表的顺序可以与表结构字段的顺序不一致;
2.如果要插入空值,可以不写字段,或者插入null。
3.除了数值类型外,其它的字段类型的值必须使用引号引起。(单引号或双引号)
1.3 向表中同时插入多条数据
语法:insert into 表名 values (第一条记录的值), (第二条记录的值),...;
mysql> INSERT INTO student VALUES (NULL,"王五",17,"佛山"),(NULL,"赵六",24,"广州"); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from student; +-----+--------+------+--------+ | sid | sname | age | city | +-----+--------+------+--------+ | 1 | 张三 | 20 | 广州 | | 2 | 李四 | 22 | NULL | | 3 | 王五 | 17 | 佛山 | | 4 | 赵六 | 24 | 广州 | +-----+--------+------+--------+ 4 rows in set (0.00 sec)
1.4 向表中插入其它表的查询结果数据
语法:insert into 表名 select * from 其它表名 [where 条件];
mysql> CREATE TABLE mystudent LIKE student; Query OK, 0 rows affected (2.12 sec) mysql> INSERT INTO mystudent SELECT * FROM student WHERE age < 20; Query OK, 1 row affected (0.09 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM mystudent; +-----+--------+------+--------+ | sid | sname | age | city | +-----+--------+------+--------+ | 3 | 王五 | 17 | 佛山 | +-----+--------+------+--------+ 1 row in set (0.00 sec)
1.5 主键冲突替换插入数据
语法:replace into 表名 values (对应表结构字段的值列表);
mysql> REPLACE INTO student VALUES (2,"李小龙",22,"佛山"); Query OK, 2 rows affected (0.00 sec) mysql> select * from student; +-----+-----------+------+--------+ | sid | sname | age | city | +-----+-----------+------+--------+ | 1 | 张三 | 20 | 广州 | | 2 | 李小龙 | 22 | 佛山 | | 3 | 王五 | 17 | 佛山 | | 4 | 赵六 | 24 | 广州 | +-----+-----------+------+--------+ 4 rows in set (0.00 sec)
注意:虽然replace功能比insert强大,但replace插入比insert的效率要低。
二、数据更改操作
语法:update 表名 set 字段名=新的值, 字段名=新的值... where 条件;
mysql> UPDATE student SET sname = "李四" WHERE sid = 2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from student; +-----+--------+------+--------+ | sid | sname | age | city | +-----+--------+------+--------+ | 1 | 张三 | 20 | 广州 | | 2 | 李四 | 22 | 佛山 | | 3 | 王五 | 17 | 佛山 | | 4 | 赵六 | 24 | 广州 | +-----+--------+------+--------+ 4 rows in set (0.00 sec)
注意:如果不写where条件,将会把所有记录指定的字段更改为相同的值!
三、数据删除操作
3.1 删除表中指定数据
语法:delete from 表名 where 条件;
PS:此方式为物理删除,知道就行了,不建议使用,实际上一般使用逻辑删除,即使用一个字段(例如is_delete)标记是否删除
mysql> DELETE FROM student WHERE age > 20; Query OK, 2 rows affected (0.00 sec) mysql> select * from student; +-----+--------+------+--------+ | sid | sname | age | city | +-----+--------+------+--------+ | 1 | 张三 | 20 | 广州 | | 3 | 王五 | 17 | 佛山 | +-----+--------+------+--------+ 2 rows in set (0.00 sec)
3.2 删除表中所有数据
语法:delete from 表名;
或 truncate table 表名;
mysql> DELETE FROM student; Query OK, 2 rows affected (0.00 sec) mysql> select * from student; Empty set (0.00 sec)
注意:delete方式只删除表中所有数据,不清空auto_increment记录数,
truncate方式删除表中所有数据,并清空auto_increment记录数。
以上是关于MySQL数据基本操作的主要内容,如果未能解决你的问题,请参考以下文章