介绍MySQL中数据的插入,更新,删除操做前,我先建一个表。方便后面举例子。这是一个学生信息表:web
CREATE TABLE tab_student( Name CHAR(20), StuID VARCHAR(20), Rank INT );
建好之后,长成这样:
sql
语法形式以下(写成一行就行,我写两行是为了看起来方便):数据库
INSERT INTO table_name (att_1, att_2, ..., att_n)
VALUES (val_1, val_2, ..., val_n);
以最初咱们建立好的学生信息表为例,如今插入学生Alice,学号为01,排名2:svg
INSERT INTO tab_student (Name, StuID, Rank) VALUES ('Alice', '01', 2);
完成插入后,能够按下面的语句查询插入的数据记录:spa
SELECT * FROM tab_student;
获得的结果以下图所示:.net
有关数据查询的内容,我会在下一篇博客中详细说,如今有个大概印象就行。3d
其实,除了上述这种方法外,MySQL还提供了一种更加简洁的插入数据的方式,即省略字段名称,直接插入值。语法形式以下:code
INSERT INTO table_name VALUES (val_1, val_2, ..., val_n);
可是注意,此时插入的值必定要与表中定义的字段保持顺序上的一致。xml
除了插入完整的记录,也能够在数据库中插入数据记录的一部分。当有些字段已经被设置了默认值或者能够由事先自动增长的约束生成(这部份内容可参考以前的博文 MySQL基本操做一:数据库和表 中“表的约束”部分)时,咱们天然能够省略对这一部分字段的插入。blog
INSERT INTO table_name (att_1, att_2, ..., att_k)
VALUES (val_1, val_2, ..., val_k);
注:代码写成一行就行,我写两行是为了看起来方便
其实语法上与插入完整的数据记录并无什么分别,仍是要求属性值与属性(字段)相对应,只不过能够只插入一部分字段。仍是上面的例子,我如今插入Bob的数据,可是省略他的排名:
INSERT INTO tab_student (Name, StuID) VALUES ('Bob', '02');
能够看到,此时,Bob的排名被置为空。若是事先定义了这个字段为自动增长或默认,那就会显示自动增长的值或默认值。
语法形式以下(写成一行就行,我写3行是为了看起来方便):
INSERT INTO table_name (att_1, att_2, ..., att_n)
VALUES (val_11, val_12, ..., val_1n),
(val_21, val_22, ..., val_2n), ...;
给多个属性值的元组便可,很少解释了。
也能够插入多条数据记录的一部分(写成一行就行,我写3行是为了看起来方便):
INSERT INTO table_name (att_1, att_2, ..., att_k)
VALUES (val_11, val_12, ..., val_1k),
(val_21, val_22, ..., val_2k), ...;
道理与插入单条数据记录的一部分同样,不举例子了。
MySQL提供了能够将另外一个表中的查询结果插入本表,以实现数据记录的复制。语法形式以下:
INSERT INTO table_name1 (att_11, att_12, ..., att_1n)
SELECT (att_21, att_22, ..., att_2n) FROM table_name2 WHERE ... ;
其实从SELECT
开始后面的就是一个查询语句,咱们能够把从table_name2
中的一条或多条数据(能够看作是属性元组)插入table_name1
。
用UPDATE
语句更新数据。语法形式以下:
UPDATE table_name SET att_1 = val_1, att_2 = val_2 WHERE ....;
SET
后面跟属性=属性值
的等式,WHERE
语句用来设定要被更新的数据记录的条件。
例如,一个学生表格数据以下:
咱们如今将Alice
的排名改成3:
UPDATE tab_student SET Rank = 3 WHERE Name = 'Alice';
那表格变成了以下的样子:
语法形式与更新特定的数据记录是一致的,为了能更新全部的数据记录,只须要去掉WHERE
语句便可,或者令WHERE
后面的条件知足表中全部的数据记录。
用关键字DELETE
删除数据记录。注意删除数据库或者表咱们用的是关键字DROP
。删除数据记录的语法形式以下:
DELETE FROM table_name WHERE ....;
其中,WHERE
后面跟的是要被删除的数据所知足的条件。比方说上面那个学生表的例子,我如今要删除Bob的数据,那么应该写成这样:
DELETE FROM tab_student WHERE Name = 'Bob';
与前面说的更新全部数据记录的道理是同样的,不要WHERE
语句或者令WHERE
语句的条件知足全部的数据记录。