#DML
DML(Data Manipulation Lauguage) 数据操纵语言: insert update delete
一、数据的插入
语法:
插入单行:
insert into 表名(字段名1,字段名2,...) value(值1,值2,...)
插入多行:
insert into 表名(字段名1,字段名2,...) values(值1,值2,...)
特点:
①字段和值列表一一对应
包含类型、约束等必须匹配
②数值型的值,不用单引号
非数值的值,必须用单引号
③字段顺序无要求
#案例1:要求字段和值列表一一对应,且遵循类型和约束的限制
INSERT INTO students(stuid,stuname,stugender,eamil,age,majorid)
VALUES(1,'giao哥','女','giao@163.com',12,1)
#案例2:可以为空字段如何插入
INSERT INTO students(stuid,stuname,email,majorid)
VALUES(5,'giao妹','gioa@163.com',2)
INSERT INTO students(stuid,stuname,email,age,majorid)
VALUES(5,'giao妹','gioa@163.com',NULL,2)
#案例3:默认字段如何插入
#法一:字段名写上,值使用default
INSERT INTO students(stuid,stugame,email,stugender,majorid)
VALUES(7,'gioa','dgioa@cha.com',DEFAULT,2);
#法二:字段名和值都不写
INSERT INTO students(stuid,stugame,email,majorid)
VALUES(7,'gioa','dgioa@cha.com',2);
#案例4:可以省略字段列表,默认所有字段
INSERT INTO students VALUE(7,'gioa','dgioa@cha.com',2);
#自增长列:
1、自增长列要求必须设置在一个键上,比如主键或唯一键
2、自增长列要求数据类型为数值型
3、一个表至多有一个自增长列
CREATE TABLE gradeinfo(
gradeID INT PRIMARY KEY AUTO_INCREMENT,
gradeName VARCHAR(20)
);
SELECT * FROM gradeinfo;
INSERT INTO gradeinfo VALUES(NULL,'八年级'),(NULL,'九年级'),(NULL,'高一年级');
INSERT INTO gradeinfo(gradeName) VALUES('八年级'),('九年级'),('高一年级');
#二、修改语句
1、修改单表的记录
语法:
update 表名
set 列=新值,列=新值...
where 筛选条件;
#修改beauty表中姓唐的女神电话为12345678901
UPDATE beauty SET phone='12345678901'
WHERE NAME LIKE '唐%';
#修改boys表中id号为2的名称为张飞,魅力值为10
UPDATE boys SET boyname='张飞',usercp=10
WHERE id=2;
2、修改多表的记录【补充】
语法:
sq192语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;
sq199语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值...
where 筛选条件;
#修改giao的女朋友的手机号码为123
UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='123'
WHERE bo.`boyName`='giao'
#修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE bo.`id` IS NULL;
#三、数据的删除
方法一:delete语句
语法:delete from 表名 where 筛选条件;
方法二:truncate语句
语法:truncate table 表名;
#delete和truncate的区别
1、DELETE可以添加WHERE条件
TRUNCATE不能添加WHERE条件,一次清楚所有数据
2、TRUNCATE的效率较高
3、如果删除带自增长列的表:
使用DELETE删除后,重新插入数据,记录从断点处开始
使用TRUNCATE删除后,重新插入数据,记录从1开始
SELECT * FROM `gradeinfo`
DELETE FROM `gradeinfo` ;
TRUNCATE TABLE `gradeinfo`
INSERT INTO `gradeinfo`(gradename)VALUES('一年级'),('二年级'),('三年级');
4、DELETE删除数据,会返回受影响的行数
TRUNCATE删除数据,不返回受影响的行数
5、DELETE删除数据,可以支持事务回滚
TRUNCATE删除数据,不支持事务回滚