MySQL一周学习之DML语言和DQL语言

一.DML语言

DML语言即数据操纵语言,主要有三种形式:(1) 插入:INSERT (2)删除:DELETE (3) 更新:UPDATE 。即我们常说的“增、删、改、查”里面的“增、删、改”。

1.插入

语法:

insert into 表名 (列名,...) values (值,...);

insert into 表名 values(所有列的值);

2.删除

语法:

delect from 表名;

delect from 表名 where 条件;

3.修改

语法:

update 表名 set 要修改的列=值 where 条件;

二.DQL语言

DQL语言即数据查询语言,也就是我们常说的“增、删、改、查”里面的“查”。在实际开发中DQL十分重要。

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询块: SELECT <字段名表> FROM <表或视图名> WHERE <查询条件>。

1.常见形式的查询语法有:

(1)查询部分列  语法:select 列名,列名,...from 表名;

(2)查询全部列  语法:select * from 表名; -- 开发中不建议使用*,因为效率很慢。

(3)为查询的列取别名  语法:select 列名 as 别名,列名 as 别名,... from 表名;   (也可以不加as)

(4)去除重复项 语法:select distinct 列名,列名,...from 表名;

(5)查询结果进行排序  语法:select 列名,列名,...from 表名 order by 列名1 [desc],列名2,...;(desc表升序,默认为降序)

(6)根据条件查询  讲法:select 列名,列名,...from 表名 where 条件;

2.分页查询

select * from 表名 limit start,pageSize; -- start:表示从第几条记录查询,pageSize表示每页显示几条记录,一般由开发人员定义。                                                                      -- start=(page-1)*pageSize,其中page可以通过网页来获取

3.子查询

把一个查询结果作为另一个查询的条件值来进行嵌套查询。例如:

select sname,sdept 
from student 
where sdept=(select sdept from student where sname ='刘晨') and sname!='刘晨'

4.联表查询(重点)

当查询的内容不在一张表中时需要用到联表查询,这里要注意的是,使用联表查询一定要写也联表条件,否则会出现笛卡尔积。如果n张表相联,则联表条件至少有n-1个。

(1)联表查询

select 查询列 from 表名1,表名2 where 联表条件;

(2)左、右连接

select 查询列 from 表名1 join 表名2 on 联表条件;

select 查询列 from 表名1 left join 表名2 on 联表条件;-- 左连接除了可以把两张表都满足的记录查出来,还可以把左边未满足的记录                                                                                        -- 也查出来。

select 查询列 from 表名1 right join 表名2 on 联表条件;-- 右连接除了可以把两张表都满足的记录查出来,还可以把右边未满足的记录                                                                                        -- 也查出来。

(3)自连接  (说明:当查询的字段在一张表中,但是需要联表查询时使用。)

举例:查询员工的姓名以及员工对应的领导的姓名

select yg.ename,ld.ename from employee yg,employee ld where yg.mgr=ld.empno;

5.  聚合函数

max()   min()   avg()   sum()   count()   (注意:select 后可以跟此类的聚合函数或者分组的字段)

6.分组查询

group by ... having 分组后的条件 (注意:where后只能跟具体的字段的条件,一般group by后的条件都是与having连用)

select语法的总结

select [distinct] 列名1,列名2,... from 表名1 [join 表名2 on 连表条件] [where 条件] [group by 列名] [having 分组条件] [order by 列名1[desc],列名2,...] [limit 分页]

多表查询的技巧(个人理解)

以从两个表中查询数据为例,列出查询的语法

select

from 表1 join 表2

on 连表条件

where 某部分列的条件

[group by 列名]

[having 分组条件]

第一步:弄清楚要查询的是哪些字段,将这些字段填入到上述语法的中,此时要注意的是,需要标明这些字段来自于哪个表;

第二步:找出这些字段分别来自于哪几张表,分别填入上述语法的表1表2中,为了方便,可以给表1表2取别名;

第三步:找出这些表之间的外键约束(或者是联表时根据的条件),并将此连表条件填入上述语法相应位置。对于n张表而言,联表条件至少有n-1个。此时要注意的是,需要标明这些字段来自于哪个表;

第四步:根据题目中的要求,对某列的条件进行限制,填入上述语法的某部分列的条件中, 同样要注意的是,需要标明这些字段来自于哪个表;

第五步:若需要使用到聚合函数,则需要对某列进行分组,而group by一般会与having连用,作为其分组后的条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值