1.语法
-- 基本语法 INSERT INTO table [(column,...)] VALUES (value,...),(...),...; -- Example INSERT INTO books VALUES(‘The Big Sleep‘,‘Raymond Chandler‘,‘1934‘); -- 须按照CREATE TABLE时列的顺序 -- 对于有默认值的列,可忽略或使用DEFAULT或NULL或指出需要插入数据的列 INSERT INTO books VALUES(‘The Thirty-Nine Steps‘,‘John Bchan‘,DEFAULT); INSERT INTO books (author,title) VALUES(‘Evenlyn Waugh‘,‘Brideshead Revisited‘); -- 多行插入 INSERT INTO books (title,author,year) VALUES(‘Visitation of Spirts‘,‘Randall Kenan‘,‘1989‘), (‘Heart of Darkness‘,‘Joseph Conrad‘,‘1902‘); -- 明确插入 INSERT INTO birds_families SET scientific_name = ‘Rallidae‘, oorder_id =113;
2. 插入其他表的数据
INSERT IGNORE INTO bird_families (scientific_name,brief_description,cornell_bird_order) SELECT bird_family,examples,bird_order FROM cornell_birds_families_orders; -- scientific_name 列设置了UNIQUE /* IGNORE 为了多行插入产生了重复列名而出错,以免语句运行失败 IGNORE指示服务器忽略所有错误并插入正确的行 */ -- SHOW WARNINGS 展示错误的日志行
3.替换数据
-- 常用于当发生重复行时进行替换 REPLACE INTO bird_families (scientific_name,drief_description,ordre_id) VALUES(‘Viduidae‘,‘Indigobirds & Whydahs‘,128); -- REPLACE 可用于替换含有重复键的整行数据或新增原表中所没有的数据 -- 若以上scientific_name不是UNIQUE或键,则不是替换而是新增
4. 数据插入的优先级
在一台服务器上经常发生多人同时访问的情况,就有来自不同客户端的SQL语句输入。这时需要对语句进行优先级设置。
4.1 调低INSERT的优先级
-- Way : LOW_PRIORITY INSERT LOW_PRIORITY INTO bird_sightings ...
4.2 提升INSERT的优先级
INSERT语句默认优先于其他只读的SQL语句。
-- Way : HIGH_PRIORITY INSERT HIGH_PRIORITY INTO bird_sightings ...