DML 语句

1、插入记录

INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn);

例如,向表 emp 中插入以下记录:name 为 Dalang,hiredate 为 2023-02-20,sal 为 2000,deptno为 1,命令执行如下:

insert into emp (name,hiredate,sal,deptno) values('Dalang','2023-02-20','2000',1);

也可以不用指定字段名称,但是 values 后面的顺序应该和字段的排列顺序一致:

insert into emp values('Dalang','2023-02-20','2000',1);

对于含可空字段、非空但是含有默认值的字段、自增字段,可以不用在 insert 后的字段列表

里面出现,values 后面只写对应字段名称的 value,这些没写的字段可以自动设置为 NULL、

默认值、自增的下一个数字。

2、更新记录

UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION]

例如,将表 emp 中 name 为“lisa”的薪水(sal)从 3000 更改为 4000:

update emp set sal=4000 where name='lisa';

3、删除记录

DELETE FROM tablename [WHERE CONDITION]

例如,在 emp 中将 name 为‘dony’的记录全部删除,命令如下:

 delete from emp where ename='dony';

4、查询记录

SELECT * FROM tablename [WHERE CONDITION]

5、排序与限制

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC] , field2

[DESC|ASC],……fieldn [DESC|ASC]]

DESC 表示按照字段进行降序排列,ASC 则表示升序。

ORDER BY 后面可以跟多个不同的排序字段,并且每个排序字段可以有不同的排序顺序

对于排序后的记录,如果希望只显示一部分,而不是全部,这时,就可以使用 LIMIT 关键字

来实现,LIMIT 的语法如下:

SELECT ……[LIMIT offset_start,row_count]

例如,显示 emp 表中按照 sal 排序后的前 3 条记录:

select * from emp order by sal limit 3;

显示 emp 表中按照 sal 排序后从第二条记录开始,显示 3 条记录:

select * from emp order by sal limit 1,3;

6、聚合

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 进行再过滤。

7、多表连接

多表连接分为左连接和右连接:

 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录

 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录

mysql> select ename,deptname from dept right join emp on dept.deptno=emp.deptno;

8、子查询

用于子查询的关键字主要包括 in、not in、=、!=、exists、not exists 等

mysql> select * from emp where deptno in(select deptno from dept);

9、记录联合

将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来

SELECT * FROM t1

UNION|UNION ALL

SELECT * FROM t2

……

UNION|UNION ALL

SELECT * FROM tn;

UNION 和 UNION ALL 的主要区别是 UNION ALL 是把结果集直接合并在一起,而 UNION 是将

UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值