实用SQL语句

廖雪峰数据库教学资料读书笔记.

实用的SQL语句

插入或替换

如果我们希望插入一条新纪录,但是如果记录已经存在,就先删除原纪录.此时可以使用REPLACE语句,这样就不必先查询,再决定是否先插入再删除. (可以看到name字段变色了, 尽量不要使用这种关键字.)

REPLACE INTO students (id,class_id,name,gender,score) VALUES (1,1,'小明','M',90); 

插入或更新

如果我们希望插入一条新纪录,但如果记录已经存在,那么更新该记录,此时,就可以使用INSERT INTO ... ON DUPLICATE KEY UPDATE ...语句

INSERT INTO students ( id, class_id, NAME, gender, score )
VALUES
	( 1, 1, '小明', gender = 'F', score = 90 ) 
	ON DUPLICATE KEY UPDATE NAME = "小明",
	gender = 'F',
	score = 90;

插入或忽略

如果我们希望插入一条新纪录(INSERT), 但如果记录已经存在, 就啥也不干直接忽略, 此时可以使用 INSERT IGNORE... 语句.

INSERT IGNORE INTO students ( id, class_id, NAME, gender, score )
VALUES
	( 1, 1, '小明', 'F', 99 );

创建快照

如果想要对一个表创建快照,即复制一份当前表的数据到一个新表, 即可以结合CREATE TABLE 和 SELECT:

CREATE TABLE students_of_class1 SELECT * FROM students WHERE class_id=1;

写入查询结果集

如果查询结果集需要写入到表中,可以结合INSERT和SELECT,将SELECT语句的结果集直接插入到指定表中,例如创建一个统计成绩的表statistics,记录各班的平均成绩.

CREATE TABLE statistics ( id BIGINT NOT NULL AUTO_INCREMENT, class_id BIGINT NOT NULL, average DOUBLE NOT NULL, PRIMARY KEY ( id ) );

INSERT INTO statistics ( class_id, average ) SELECT
class_id,
AVG( score ) 
FROM
	students 
GROUP BY
	class_id;

廖雪峰数据库教学资料读书笔记.

posted @ 2019-07-06 17:10  X-POWER  阅读(222)  评论(0编辑  收藏  举报