DML----------------------------------------------------------------------------------------
-
插入数据: insert into
insert [into] 表名(列名1,列名2,...) values(值1,值2,...)
例:INSERT INTO stu(sid, sname,age,gender) VALUES('s_1001', 'zhangSan', 23, 'male');
INSERT INTO stu(sid, sname) VALUES('s_1001', 'zhangSan');
[因为没有插入age和gender列的数据,所以该条记录的age和gender值上为NULL]
Insert [into] 表名 values(值1,值2,...)
例:INSERT INTO stu VALUES('s_1002', 'liSi', 32, 'female');
因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值。
Insert [into] 表名 values(...),(...),(...),(...),...
也可同时插入多行记录。
注意:所有字符串数据必须使用单引用!
Insert [into] 表名 SET 列1=值1,列2=值2,...
SET子句不能插入多行。
在赋值语句中,未给出名称的列都将赋予缺省值。
LOAD DATA [LOCAL] INFILE “文件目录” [REPLACE|IGNORE] INTO TABLE 表名;
读取客户机上目录中的数据文件的内容,并将其发送到服务器装入表中。
-
插入从其他表选择的行
INSERT [INTO] 表1[(列1,列2)] SELECT 列3,列4 FROM 表2;
SELECT语句不能包含一个ORDER BY子句。
INSERT语句的目的表不能出现在SELECT查询部分的FROM子句。
-
修改数据: update
update 表名 set 列名1=值1,...列名n=值n [where 条件]
例:UPDATE stu SET sname=’zhangSanSan’, age=’32’, gender=’female’ WHERE sid=’s_1001’;
UPDATE stu SET sname=’liSi’, age=’20’ WHERE age>50 AND gender=’male’;
UPDATE stu SET sname=’wangWu’, age=’30’ WHERE age>60 OR gender=’female’;
UPDATE stu SET gender=’female’ WHERE gender IS NULL
UPDATE stu SET age=age+1 WHERE sname=’zhaoLiu’;
-
删除数据: delete
delete from 表名 [where 条件]
例:DELETE FROM stu WHERE sid=’s_1001’003B
DELETE FROM stu WHERE sname=’chenQi’ OR age > 30;
DELETE FROM stu;[删除表所有记录,但是表并没有删除。表的结构、属性、索引都是完整的]
truncate table 表名
例:TRUNCATE TABLE stu;[删除stu表,再创建stu表。等同与删除stu表所有记录。]
虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。DELETE的效率没有TRUNCATE高!
TRUNCATE其实属性DDL语句,因为它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。