cvmachine.com - 申博开户网

查找: 您的方位主页 > 网络频道 > 阅览资讯:MySQL DML句子收拾

MySQL DML句子收拾

2019-04-05 08:00:30 来历:www.cvmachine.com 【

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];

对其参数进行以下阐明:

  • fun_name 标明要做的调集操作,也便是聚合函数,常用的有sum(求和)、count(*)(记载数)、max(最大值)、min(最小值)。
  • GROUP BY 关键字标明要进行分类聚合的字段,比方要依照部分分类计算职工数量,部分就应该写在group by后边。
  • WITH ROLLUP 是可选语法,标明是否对分类聚合后的成果进行再汇总。
  • HAVING 关键字标明对分类后的成果再进行条件的过滤。

留意: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,去除重复记载后的成果。

 
 

本文地址:http://www.cvmachine.com/a/question/100281.html
Tags: mysql 收拾 DML
修改:申博开户网
关于咱们 | 联络咱们 | 友情链接 | 网站地图 | Sitemap | App | 回来顶部