DML数据操作
一.插入数据
1.1 指定插入的字段
语法
INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2)
INSERT INTO stus(sid, sname,age,gender) VALUES('s_1001', 'zhangSan', 23, 'male');
INSERT INTO stus(sid, sname) VALUES('s_1001', 'zhangSan');
1.2 插入全部字段
语法
INSERT INTO 表名 VALUES(值1,值2,…)
因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值
INSERT INTO stus VALUES('s_1002', 'liSi', 32, 'female');
注意:所有字符串数据必须使用单引号
二.修改数据
UPDATE 表名 SET 列名1=值1, … 列名n=值n [WHERE 条件]
UPDATE stus SET sname='zhangSanSan', age='32', gender='female' WHERE sid='s_1001';
UPDATE stus SET sname='liSi', age='20' WHERE age>50 AND gender='male';
UPDATE stus SET sname='wangWu', age='30' WHERE age>60 OR gender='female';
三.删除数据
DELETE FROM 表名 [WHERE 条件]
DELETE FROM stus WHERE sid='s_1001';
DELETE FROM stus WHERE sname='chenQi' OR age > 30;
DELETE FROM stus;
TRUNCATE TABLE 表名
TRUNCATE TABLE stus;
【面试题】delete和truncate的区别
1.delete可以添加WHERE条件
TRUNCATE不能添加WHERE条件,一次性清除所有数据
2.truncate的效率较高
3.如果删除带自增长列的表,
使用DELETE删除后,重新插入数据,记录从断点处开始
使用TRUNCATE删除后,重新插入数据,记录从1开始
4.delete 删除数据,会返回受影响的行数
TRUNCATE删除数据,不返回受影响的行数
5.delete删除数据,可以支持事务回滚
TRUNCATE删除数据,不支持事务回滚
四.案例
-- 案例
-- 1、编写sql语句,修改表中编号是12女生的phone为'18209876579'
select * from girl;
update girl set phone ='18209876579' where id = 12;
-- 2、编写sql语句,删除boyfriend_id为空的女生信息
delete from girl where boyfriend_id is null;
-- 3、编写sql语句,在girl表中插入一行数据
insert into girl values(null,'小红花',DEFAULT,DEFAULT,'1234556677',null ,7);
-- 4、编写sql语句,实现查询girl表中的生日晚于1988年的女生信息
select * from girl where year(borndate) >1988;