SQL---DML(数据操控语言)

#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删除数据,不支持事务回滚   
   
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
05-11 11:48
河南大学 Java
程序员牛肉:我是26届的双非。目前有两段实习经历,大三上去的美团,现在来字节了,做的是国际电商的营销业务。希望我的经历对你有用。 1.好好做你的CSDN,最好是直接转微信公众号。因为这本质上是一个很好的展示自己技术热情的证据。我当时也是烂大街项目(网盘+鱼皮的一个项目)+零实习去面试美团,但是当时我的CSDN阅读量超百万,微信公众号阅读量40万。面试的时候面试官就告诉我说觉得我对技术挺有激情的。可以看看我主页的美团面试面经。 因此花点时间好好做这个知识分享,最好是单拉出来搞一个板块。各大公司都极其看中知识落地的能力。 可以看看我的简历对于博客的描述。这个帖子里面有:https://www.nowcoder.com/discuss/745348200596324352?sourceSSR=users 2.实习经历有一些东西删除了,目前看来你的产出其实很少。有些内容其实很扯淡,最好不要保留。有一些点你可能觉得很牛逼,但是面试官眼里是减分的。 你还能负责数据库表的设计?这个公司得垃圾成啥样子,才能让一个实习生介入数据库表的设计,不要写这种东西。 一个公司的财务审批系统应该是很稳定的吧?为什么你去了才有RBAC权限设计?那这个公司之前是怎么处理权限分离的?这些东西看着都有点扯淡了。 还有就是使用Redis实现轻量级的消息队列?那为什么这一块不使用专业的MQ呢?为什么要使用redis,这些一定要清楚, 就目前看来,其实你的这个实习技术还不错。不要太焦虑。就是有一些内容有点虚了。可以考虑从PR中再投一点产出
投递美团等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务