MySQL数据操作(DML)
表结构准备:
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 条件;
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记录数。
最新文章
- 使用java泛型设计通用方法
- jQuery 判断页面元素是否存在的代码
- 转:面试题:“你能不能谈谈,java GC是在什么时候,对什么东西,做了什么事情?”
- POJ 2388	Who&#39;s in the Middle(水~奇数个数排序求中位数)
- thinkphp添加空数据的解决办法
- /etc/profile和$HOME/.bash_profile
- RN组件之Navigator
- [LeetCode] Ugly Number II (A New Question Added Today)
- 解决服务器断电导致mysql数据库无法启动
- 高效算法——D 贪心,区间覆盖问题
- 动态代理写connection连接池Demo
- grub4dos新手指南-2
- Spring @Transactional 使用
- LibreOJ β Round #2 F. 数学上来先打表
- 设计模式——抽象工厂模式(C++实现)
- POJ 3678 Katu Puzzle (2-SAT)
- C++ Primer 笔记——关联容器
- 检查Rabbitmq中队列及消息个数,还有清空的方法
- Casper带有4个内建记录级别
- fuser命令