DML操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。
1.插入(insert)
格式1.
INSERT INTO emp(ename,hiredate,sal,deptno) VALUES('zzx1','2000-01-01','2000',1);
格式2.
INSERT INTO emp VALUES('lisa','2003-02-01','3000',2);
不用指定字段名称,但是value值需与表字段严格对应.
格式3.
INSERT INTO emp(ename,sal) VALUES('dony',1000);
对于含可空字段、非空但是含有默认值的字段、自增字段,可以不用在INSERT后的字段列表里面出现,VALUES后面只写对应字段名称的VALUE:
格式4
在MySQL中,INSERT语句还可以一次性插入多条记录:
INSERT INTO tablename(field1,field2,......fieldn) VALUES (record1_value1,record1_value2,......record1_valuen), (record2_value1,record2_value2,......record2_valuen), ...... (recordn_value1,recordn_value2,......recordn_valuen);
2.更新(update)
格式1
UPDATE emp SET sal=4000 WHERE ename='lisa';
格式2
UPDATE t1,t2,...tn SET t1.field1=expr1, t2.field2=expr2, ... tn.fieldn=exprn [WHERE CONDITION];
同时更新多个表中的数据
3.删除(delete)
格式1
DELETE FROM tablename [WHERE CONDITION];
格式2
DELETE t1,t2,...tn FROM t1,t2,...tn [WHERE CONDITION];
注意:不管是单表还是多表,不加where条件将会把表的所有记录删除,所以操作时一定要小心。
4.查询(select)
基本语法:
SELECT * FROM tablename [WHERE CONDITION];
1.查询不重复的记录,可以用distinct关键字实现:
SELECT DISTINCT deptno FROM emp;
2.条件查询:
SELECT * FROM emp WHERE deptno=1;
其中,where 后面的条件除“=” 外,还可以使用 >、<、>=、<=、!=等比较运算符;
多个条件之间还可以使用or、and等逻辑运算符进行多条件联合查询
3.排序和限制:
SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC], field2 [DESC|ASC],...fieldn [DESC|ASC]];
其中,DESC和ASC是排序关键字,
DESC表示按照字段进行降序排列(上大-下小),
ASC则表示升序排列(上小-下大),
如果不写此关键字默认是升序排列。
ORDER BY 后面可以跟多个不同的排列字段,并且每个排序字段可以有不同的排序顺序。
如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,以此类推。如果只有一个排序字段,则这字段相同的记录将会无序排列。
SELECT ......[LIMIT offset_start,row_count];
对于排序后的记录,如果希望只显示一部分,而不是全部,这时,就可以使用LIMIT关键字来实现.
LIMIT 经常和ORDER BY一起配合使用来进行记录的分页显示。
注意:limit属于MySQL扩展SQL92后的语法,在其他数据库上并不能通用。
4.聚合
很多情况下,我们需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人数,这是就要用到SQL的集合操作。
SELECT [field1,field2,......fieldn] fun_name FROM tablename [WHERE where_contition] [GROUP BY field1,field2,......fieldn [WITH ROLLUP]] [HAVING where_contition];
对其参数进行以下说明:
注意:having和where的区别在于having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。
5.表连接
表连接分为内连接和外连接,它们之间的最主要区别是:
内连接仅选出两张表中互相匹配的记录,
而外连接会选出其他不匹配的记录。我们常用的是内连接。
外连接有分为左连接和右连接,具体定义如下:
SELECT ename,deptname FROM emp LEFT JOIN dept ON emp.deptno=dept.deptno;
6.子查询
某些情况,当我们查询的时候,需要的条件是另一个SELECT语句的结果,这个时候,就要用到子查询。
用于子查询的关键字主要包括in、not in、=、!=、exists、not exists等。
SELECT * FROM emp WHERE deptno IN(SELECT deptno FROM dept);
注意:子查询和表连接之间的转换主要应用在两个方面:
MySQL 4.1 以前的版本不支持子查询,需要用表连接来实现子查询的功能
表连接在很多情况下用于优化子查询
7.记录联合
我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候,就需要用到union和union all关键字来实现这样的功能,具体语法如下:
SELECT * FROM t1 UNION|UNION ALL SELECT * FROM t2 ...... UNION|UNION ALL SELECT * FROM tn;
UNION 和 UNION ALL的主要区别是 UNION ALL 是把结果集直接合并在一起,而UNION是将UNION ALL后的结果进行一次DISTINCT,去除重复记录后的结果。
以上所述是小编给大家介绍的MySQL DML语句整理汇总详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍整理MySql常用查询语句(23种),包括了整理MySql常用查询语句(23种)的使用技巧和注意事项,需要的朋友参考一下 废话不多了,直接贴代码了 一查询数值型数据: 查询谓词:>,=,<,<>,!=,!>,!<,=>,=< 二查询字符串 三查询日期型数据 注:不同数据库对日期型数据存在差异: 四查询逻辑型数据 逻辑运算符:and or not 五查询非空数据 注:<>相当于
本文向大家介绍JavaScript基础函数整理汇总,包括了JavaScript基础函数整理汇总的使用技巧和注意事项,需要的朋友参考一下 这里给大家整理汇总了一些javascript的基础函数,都是比较常用和实用的。整理出来也有助于大家更好的理解javascript。 上面就是个人整理的javascript基础函数了,小伙伴们仔细研究研究,希望大家能够喜欢
本文向大家介绍python文件操作整理汇总,包括了python文件操作整理汇总的使用技巧和注意事项,需要的朋友参考一下 总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录
本文向大家介绍非常好用的sql语句(日常整理),包括了非常好用的sql语句(日常整理)的使用技巧和注意事项,需要的朋友参考一下 1. /* 得到trace文件路径和名称 */ 2./* 显示产生锁定的sql语句 */ 3./* 查看oracle隐藏参数 */ 4./* 根据系统中oracle的pid来查看sql */ 以上就是本文给大家分享几个比较好用sql语句,希望大家喜欢。
本文向大家介绍MySQL的一些常用的SQL语句整理,包括了MySQL的一些常用的SQL语句整理的使用技巧和注意事项,需要的朋友参考一下 用SHOW显示已有的数据库 句法: 如果使用LIKE wild部分,wild字符串可以是一个使用SQL的“%”和“_”通配符的字符串。 功能:SHOW DATABASES列出在MySQL服务器主机上的数据库。 你可以尝试下面举例,观察输出结果,例如: 用mysql
本文向大家介绍sql语句优化之SQL Server(详细整理),包括了sql语句优化之SQL Server(详细整理)的使用技巧和注意事项,需要的朋友参考一下 MS SQL Server查询优化方法 查询速度慢的原因很多,常见如下几种 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5