mysql使用--数据的插入,删除和更新

1.UNION合并多个结果集
如:SELECT m1, n1 FROM t1 WHERE m1 < 2 UNION SELECT m2, n2 FROM t2 WHERE m2 > 2;
默认下,某行在参与合并两个结果集均存在时,最终结果集中只包含一行。
如希望最终结果集包含两行,用UNION ALL。
如:SELECT m1, n1 FROM t1 UNION ALL SELECT m2, n2 FROM t2;

2.插入数据
_1.插入完整的记录
如:INSERT INTO 表名 VALUES(列1的值, …, 列n的值);
值得注意的是上述values后的每个()中必须为表的每一列指定值。

_2.插入记录的一部分
如:INSERT INTO 表名(列1, 列2) VALUES (列1的值, 列2的值);
如果表不止两列,上述语句只为表中指定两列插入值,其余列采用默认值,其余列必须指定了默认值。

_3.批量插入记录
指的是VALUES后的()可以有多个,之间用逗号分割,以便一次插入多行。

_4.将某个查询的结果集插入表中

CREATE TABLE first_table (
first_column INT,
second_column VARCHAR(100)
);

CREATE TABLE second_table(
s VARCHAR(200),
i INT
);

如:INSERT INTO second_table(s, i) SELECT second_column, first_column FROM first_table WHERE first_column < 5;
可以实现将SELECT子句得到结果集的多行作为插入子句的值来源,插入second_table。

_5.INSERT IGNORE
对应一些是主键或UNIQUE键的列或列组合来说,它们不允许重复值出现。

ALTER TABLE first_table MODIFY COLUMN first_column INT UNIQUE;

如:INSERT IGNORE INTO first_table(first_column, second_column) VALUES(1, ‘哇哈哈’);
由于我们用IGNORE修饰了INSERT,这样当first_table在插入前已经存在first_column为1的行时,(1, ‘哇哈哈’)会被忽略;不存在时,(1, ‘哇哈哈’)将插入表中。
没有IGNORE修饰下,这样当first_table在插入前已经存在first_column为1的行时,上述插入会报错。

_6.INSERT … ON DUPLICATE KEY UPDATE
如:INSERT INTO first_table(first_column, second_column) VALUES(1, ‘哇哈哈’) ON DUPLICATE KEY UPDATE first_column=10, second_column=‘雪碧’;
上述语句的意思是,若first_table表插入前已经存在first_column值为1的行,则插入(1, ‘哇哈哈’)的实际行为将是设置此行的first_column为10,设置此行的second_column为’雪碧’;若不存在,则插入(1, ‘哇哈哈’)。

如:INSERT INTO first_table(first_column, second_column) VALUES (2, ‘红牛’), (3, ‘红茶’) ON DUPLICATE KEY UPDATE second_column = VALUES(second_column);
上述语句意思是,向表first_tables插入多行,对每一行如此行的first_column值在表中已经存在,则插入行的实际行为是表中对应行的second_column列设置为插入行中此列的值。

3.删除数据
DELETE FROM 表名 [WHERE 表达式];
执行过程为:
(1).从FROM子句得到结果集1
(2).通过WHERE子句对结果集1执行过滤得到结果集2
(3).将结果集2中每一行从表中移除。
忽略WHERE时,会删除表中所有行。

进一步,如:DELETE FROM first_table WHERE first_column > 4 ORDER BY first_column DESC LIMIT 1;
执行过程为:
(1).通过FROM子句得到结果集1
(2).通过WHERE子句对结果集1过滤得到结果集2
(3).通过ORDER BY对结果集2排序得到结果集3
(4).通过LIMIT对结果集3过滤得到结果集4
(5).从表中移除结果集4中每行

4.更新数据
UPDATE 表名 SET 列1=值1, 列2=值2, …, 列n=值n [WHERE 表达式];
执行过程为:
(1).基于表得到结果集1
(2).通过WHERE子句过滤结果集1得到结果集2
(3).对结果集2中每一行执行SET子句

进一步,如:UPDATE first_table SET second_column = ‘爽歪歪’ WHERE first_column > 4 ORDER BY first_column DESC LIMIT 1;
执行过程为:
(1).通过表名得到结果集1
(2).通过WHERE子句对结果集1过滤得到结果集2
(3).通过ORDER BY对结果集2排序得到结果集3
(4).通过LIMIT对结果集3过滤得到结果集4
(5).对结果集4中每一行执行SET子句

你可能感兴趣的:(5.2.数据库--MySql,插入,删除,更新)