MySQL从删库到跑路(六)——SQL插入、更新、删除操作
作者:天山老妖S
链接:http://blog.51cto.com/9291927
一、插入数据
1、为表的所有字段插入数据
使用基本的INSERT语句插入数据要求指定表名称和插入到新记录的值。
INSERT INTO table_name (column_list) VALUES (value_list);
insert into `TSubject` (subjectID,subjectName,BookName,Publisher) values ('0004','英语','大学英语走遍美国','清华出版社')
可以不指定插入的列
insert into `TSubject` values ('0005','高等数学','高等数学教材','清华出版社')
2、为表的指定字段插入数据
为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。必须制定插入的列
insert into TSubject (subjectID,subjectName) values ('0006','高等数学2')
insert into TSubject (subjectName,subjectID) values ('数据结构','0007')
3、同时插入多条记录
INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表,每个值列表之间用逗号分隔开,基本语法如下:
INSERT INTO table_name (column_list)
VALUES (value_list1), (value_list2),...,
(value_listn);
示例:
insert into TSubject (subjectName,subjectID) values ('C#开发','0008'),('苹果开发','0009')
4、将查询结果插入到表中
INSERT语句和SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多个行。
INSERT INTO table_name1 (column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition)
示例:
insert into ST (subectid,subjectName) select subjectid,subjectName from TSubject where `Publisher` is not null
二、更新数据
1、根据本表的条件更改记录
MySQL中使用UPDATE语句更新表中的记录,可以更新特定的行或者同时更新所有的行
UPDATE table_name
SET column_name1 = value1,
column_name2=value2,……,
column_namen=valuen WHERE (condition);
示例:
update `TStudent` set sname=concat(sname,'net') where class='net'update `TStudent` set sname=left(sname,3) where class='net'
根据学生的生日 在学生的姓名后标记 1988年大一 1987年大二 1986年大三 1985年大四
update TStudent set sname=CONCAT(sname,case year(birthday)%5
when 0 then '大四' when 1 then '大三' when 2 then '大二' else '大一' end) where year(birthday)>=1985 and year(birthday)<=1988
2、根据另一张表的条件更改记录
UPDATE table_nameA a join table_nameB b on a. column_name1=b. column_name1
SET a.column_name1 = value1,
a.column_name2=value2,……,
a.column_namen=valuen
WHERE b. column_name2>20
实例:将有不及格的学生姓名后加*标记
update TStudent a join TScore b on a.`StudentID`=b.`StudentID`set a.`Sname`=concat(sname,'*') where b.mark<60
同时更改两张表的列
实例:把分数低于60分的学生,加5分,并在学生姓名添加标记+
update TStudent a join TScore b on a.`StudentID`=b.`StudentID`set a.`Sname`=concat(sname,'+'), b.mark=b.`mark`+5
where b.mark<60;
子查询也能实现相同功能
以下语句将分数有大于98分的学生姓名后加#号标记
update TStudent set Sname=concat(sname,'#') where studentid in(select studentid from TScore where mark>98);
三、删除数据
1、根据本表的条件删除记录
从数据库中删除数据使用DELETE语句,DELETE语句允许WHERE子句指定删除条件。
DELETE FROM table_name [WHERE condition>]
删除学号小于00010的学生
delete from TStudent where studentid< '00010'
2、根据另一张表的条件删除记录
DELETE a FROM table_a a join table_b b on a.column1 = b.column1 [WHERE condition>]
删除分数小于60分的学生
delete a from TStudent a join TScore b on a.`StudentID` = b.`StudentID` where b.mark<60
也可以使用子查询实现。
删除分数表中分数大于90的学生
delete from TStudent where studentid in (select studentid from TScore where mark>90)
喜欢的小伙伴们可以搜索我们个人的微信公众号“程序员的成长之路”点击关注或扫描下方二维码

MySQL从删库到跑路(六)——SQL插入、更新、删除操作的更多相关文章
- MySQL从删库到跑路(三)——SQL语言
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.SQL语言简介 1.SQL语言简介 SQL是结构化查询语言(Structured Query Language) ...
- MySQL从删库到跑路_高级(五)——触发器
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.触发器简介 1.触发器简介 触发器是和表关联的特殊的存储过程,可以再插入,删除或修改表中的数据时触发执行,比数据 ...
- MySQL从删库到跑路_高级(六)——索引
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.索引简介 1.索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构. 在MySQL中,索引属于存储 ...
- MySQL从删库到跑路_高级(七)——事务和锁
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.事务简介 1.事务简介 事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作. 2.事物的特效 ...
- MySQL从删库到跑路(五)——SQL查询
作者:天山老妖S 链接:http://blog.51cto.com/9291927 1.查询所有字段 在SELECT语句中使用星号“”通配符查询所有字段在SELECT语句中指定所有字段select f ...
- MySQL从删库到跑路(一)——MySQL数据库简介
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.MySQL简介 1.MySQL简介 MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发, ...
- MySQL从删库到跑路_高级(四)——存储过程
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.存储过程简介 1.存储过程简介 存储过程是一组具有特定功能的SQl语句集组成的可编程的函数,经编译创建并保存在数 ...
- MySQL从删库到跑路_高级(二)——自定义函数
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.自定义函数简介 自定义函数(user-defined function UDF)是一种对MySQL扩展的途径,其 ...
- MySQL从删库到跑路_高级(一)——数据完整性
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.数据完整性简介 1.数据完整性简介 数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确 ...
随机推荐
- ansible register基础使用讲解
当我们需要判断对执行了某个操作或者某个命令后,如何做相应的响应处理(执行其他 ansible 语句),则一般会用到register . 举个例子: 我们需要判断 zip 包是否存在,如果存在了就执行一 ...
- 23种设计模式之桥接模式(Bridge)
桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式.桥接模式类似于多重继承方案,但是 ...
- FastDFS client for .net
fastDfs Code: https://code.google.com/p/fastdfs/ FastDfs_Client_DotNet:https://code.google.com/p/fas ...
- javaAgent 参数
-javaagent 这个JVM参数是JDK 5引进的. Java -help的帮助里面写道: -javaagent:<jarpath>[=<options>] load Ja ...
- windows 环境下node开发环境搭配问题
当我们使用ccap 生成验证码时,需要node-gyp构建build,但是c的编译环境是在python,vc. node-gyp包 https://github.com/TooTallNate/nod ...
- iOS - 视频开发
视频实质: 纯粹的视频(不包括音频)实质上就是一组帧图片,经过视频编码成为视频(video)文件再把音频(audio)文件有些还有字幕文件组装在一起成为我们看到的视频(movie)文件.1秒内出现的图 ...
- 慕课学习--DNS的作用
因为相对于32位的IP地址,人对域名更加敏感,也更容易记忆.所以一般都是把IP地址转化为域名进行网页的访问. DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映 ...
- 2.3AutoEncoder
AutoEncoder是包含一个压缩和解压缩的过程,属于一种无监督学习的降维技术. 神经网络接受大量信息,有时候接受的数据达到上千万,可以通过压缩 提取原图片最具有代表性的信息,压缩输入的信息量,在将 ...
- HDU 4514 - 湫湫系列故事——设计风景线 - [并查集判无向图环][树形DP求树的直径]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4514 Time Limit: 6000/3000 MS (Java/Others) Memory Li ...
- date 命令之日期和秒数转换
时间转为秒数 date -d "2012-11-12 13:00:00" +"%s" 描述转为日期 date -d@1352692800 +"%Y-% ...