作者:天山老妖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&gt;]

删除学号小于00010的学生

delete from TStudent where studentid&lt; '00010'

2、根据另一张表的条件删除记录

DELETE a FROM table_a a join table_b b on a.column1 = b.column1 [WHERE condition&gt;]

删除分数小于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&gt;90)

喜欢的小伙伴们可以搜索我们个人的微信公众号“程序员的成长之路”点击关注或扫描下方二维码

MySQL从删库到跑路(六)——SQL插入、更新、删除操作的更多相关文章

  1. MySQL从删库到跑路(三)——SQL语言

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.SQL语言简介 1.SQL语言简介 SQL是结构化查询语言(Structured Query Language) ...

  2. MySQL从删库到跑路_高级(五)——触发器

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.触发器简介 1.触发器简介 触发器是和表关联的特殊的存储过程,可以再插入,删除或修改表中的数据时触发执行,比数据 ...

  3. MySQL从删库到跑路_高级(六)——索引

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.索引简介 1.索引简介 索引(Index)是帮助MySQL高效获取数据的数据结构. 在MySQL中,索引属于存储 ...

  4. MySQL从删库到跑路_高级(七)——事务和锁

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.事务简介 1.事务简介 事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作. 2.事物的特效 ...

  5. MySQL从删库到跑路(五)——SQL查询

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 1.查询所有字段 在SELECT语句中使用星号“”通配符查询所有字段在SELECT语句中指定所有字段select f ...

  6. MySQL从删库到跑路(一)——MySQL数据库简介

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.MySQL简介 1.MySQL简介 MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发, ...

  7. MySQL从删库到跑路_高级(四)——存储过程

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.存储过程简介 1.存储过程简介 存储过程是一组具有特定功能的SQl语句集组成的可编程的函数,经编译创建并保存在数 ...

  8. MySQL从删库到跑路_高级(二)——自定义函数

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.自定义函数简介 自定义函数(user-defined function UDF)是一种对MySQL扩展的途径,其 ...

  9. MySQL从删库到跑路_高级(一)——数据完整性

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.数据完整性简介 1.数据完整性简介 数据冗余是指数据库中存在一些重复的数据,数据完整性是指数据库中的数据能够正确 ...

随机推荐

  1. stopImmediatePropagation和stopPropagation (事件、防止侦听)

    参考: ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始 actionscript宝典 一.事件模型 egret中的事件模型和flash是一样的,但 ...

  2. matlab 获取网卡MAC地址

    输入命令 [sta,MACres] =  dos('getmac'); 其中MACres 存储的信息即为网卡的 相关信息. 如果想判断读取的网卡信息是否有指定信息可以如下输入 USER1 = strf ...

  3. AD添加LOGO的方法

    1 将logo图片转换成单色的BMP 图像.简单的方法是使用Windows自带的画图程序,在将图片另存为时, 在文件类型下拉列表中选择单色.bmp即可.我们以Altium为例,如图所示将蓝色logo另 ...

  4. Windows Server 2008 R2之五操作主控的管理

    一.概述 操作主控(FSMO)也称作操作主机(OM),它是指在AD中一个或多个特殊的DC,用来执行某些特殊的功能(资源标识符SID分配.架构修改.PDC选择等). 1.操作主控的分类 基于森林的操作主 ...

  5. Spark2 jar包运行完成,退出spark,释放资源

    import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark ...

  6. POJ-2329 Nearest number - 2(BFS)

    Nearest number - 2 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 4100 Accepted: 1275 De ...

  7. Net Promoter Score

    https://baike.baidu.com/item/净推荐值/3783368?fr=aladdin NPS(Net Promoter Score),净推荐值,又称净促进者得分,亦可称口碑,是一种 ...

  8. Linux的/etc/services文件的作用?

    4)端口分配 Linux系统的端口号的范围为0–65535,不同范围有不同的意义. 0 不使用 1--1023 系统保留,只能由root用户使用 1024---4999 由客户端程序自由分配 5000 ...

  9. dockerfile学习笔记

    Dockfile 参考资料:http://www.cnblogs.com/CloudMan6/p/6864000.html http://www.cnblogs.com/CloudMan6/p/687 ...

  10. pandas绘图总结

    转自:http://blog.csdn.net/genome_denovo/article/details/78322628 pandas绘图总结 pandas中的绘图函数(更加详细的绘图资料可参考p ...