史上最简单MySQL教程详解(基础篇)之SQL语句(一)
插入语句——INSERT
其实在之前我们就已经接触过了【INSERT】语句,这里我们就更加详细的介绍一些【INSERT】语句。
语法:
INSERT INTO 表名 (列名1,列名2,列名3...) VALUES (值1,值2,值3...);
我们往之前就建好的【user】表中插入数据,运行结果如下:
mysql> INSERT INTO user VALUE (1,’张三’,0);
Query OK, 1 row affected (0.00 sec)
mysql> INsert INTO user(userId,sex) VALUE (2,1);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO user (userId,name) VALUE (3,’李四’);
Query OK, 1 row affected (0.00 sec)
INSERT INTO user (userId,sex,name) VALUE (4,1,’王五’);
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM user;
+——–+——+——+
| userId | name | sex |
+——–+——+——+
| 1 | 张三 | 0 |
| 2 | NULL | 1 |
| 3 | 李四 | 0 |
| 4 | 王五 | 1 |
+——–+——+——+
4 rows in set (0.27 sec)
这里我就详细的说下我这几行插入命令的区别:
- 第一个:对表中所有列进行值的插入,这个时候是可以省略列表的。但是需要注意的是,插入值的顺序必须要和列的顺序是一致的,否则很容易报错,或者插错数据。这一点要切记;
- 第二个:因为我们【name】这一列是没有默认值的,所以当我们插入数据时,这一列就会默认为【NULL】;’
- 第三个:这一列我们没有插入【sex】这个字段,但是当初我们建表的时候设置的默认值为【0】,所以当我们没有指定插入的值时,他就默认为【0】;
- 第四个: 虽然和第一个一样,我们每一个列都插入了数据,但是因为我们在插入时指定了插入的列的顺序,所以我们需要插入的值的顺序和我们写的列的顺序保持一致即可,不需要和表中列的顺序保持一致;
注意事项:
- 如果我们在定义表的结构的时候,如果给某列设置的是非空值即【NOT NULL】,那么我们在插入的时候一定要给这列赋予值,否则就会报错;
- 如果报错【ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’】那么就是我们在插入的时候造成了主键的冲突,因为主键的值通常是唯一的;
- 当我们插入的值为【字符串】,【日期】的情况下,必须要使用英文的单引号【”】进行包裹;
更新语句——UPDATE
当我们需要更新某个已经在数据表中存在的数据时,我们就需要使用到【UPDATE】语句。
语法如下:
UPDATE 表名 SET 列名1=值1,列名2=值2,...WHERE 条件表达式;
我们试着更新一下数据表中【userId】为【1】的数据,运行结果如下:
mysql> UPDATE user set name = ‘张四’ where userId =1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM user;
+——–+——+——+
| userId | name | sex |
+——–+——+——+
| 1 | 张四 | 0 |
| 2 | NULL | 1 |
| 3 | 李四 | 0 |
| 4 | 王五 | 1 |
+——–+——+——+
4 rows in set (0.00 sec)
我们就成功的将第一条数据的【name】从【张三】改成了【张四】;
注意事项:
- 条件表达式中【WHERE】后面的【=】与前面【SET】中的【=】是具有不同的含义的。【WHERE】中应该是比较运算符,判断是否相等,但是【SET】表达的则是赋值的含义。
- 【WHERE】这部分条件表达式实际上是跨域省略的,但是会将指定列的所有的数据都进行修改,例如:
mysql> UPDATE user SET sex =1;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 4 Changed: 2 Warnings: 0
mysql> SELECT * FROM user;
+——–+——+——+
| userId | name | sex |
+——–+——+——+
| 1 | 张四 | 1 |
| 2 | NULL | 1 |
| 3 | 李四 | 1 |
| 4 | 王五 | 1 |
+——–+——+——+ 我们就将所有的【sex】都改为了【1】; 所以在执行没有条件的UPDATE的命令前,请务必确认一下是否真的有必要进行这样的操作,因为这会影响到整张表的数据信息。
删除命令——DELETE命令
当我们需要删除表中存在的某一数据时,就需要使用到删除命令【DELETE】了。 语法如下:DELETE FROM 表名 WHERE 条件表达式;
我们尝试着删除【user】表中【userId】为【4】的数据,运行结果如图:
删除成功。 注意事项:mysql> DELETE FROM user where userId=4;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM user;
+——–+——+——+
| userId | name | sex |
+——–+——+——+
| 1 | 张四 | 1 |
| 2 | NULL | 1 |
| 3 | 李四 | 1 |
+——–+——+——+
3 rows in set (0.00 sec)
- 与【UPDATE】命令一样,【DELETE】命令后的条件语句也是可以省略的,这时将删除的是表中的所有数据。但是当我们需要删除表中的所有数据时,有一个更加高效的语句【TRUNCATE TABLE 】命令。语法如下:
TRUNCATE TABLE 表名;
【TRUNCATE TABLE 】命令与【DELETE】的区别是:【TRUNCATE TABLE 】首先将破坏整个表的数据结构,然后在重新创建一张结构相同的表;
因为【SELECT】的语句更加复杂,所以我们将在下一篇文章史上最简单MySQL教程详解(基础篇)之SQL语句(二)中进行讲解。