DQL数据查询语言(下) 和DML(数据管理语言)的学习

今天继续DQL的学习,DQL结束后是学习DML。
一、DQL数据查询语言(下)
多表查询
首先还是继续上次的多表查询,在上篇中讲到了多表查询中几个关联表之间的查询,除此之外,数据表会存在各列段之间相互关联的情况,我们通过这种关联关系来查询数据,这种方式称为自连接方式。
例如,我通过t_mysql_employees这张表中的员工和领导的关系来查询:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
join连接
join连接分为内连接和外连接,内连接使用[inner] join on 语句,这里主要介绍外连接。
外连接分为左外连接(left[outer] join on)和右外连接(right [outer] join on)。有时候我们在多表查询的时候会遇到某个关联关系的某一项的某个列段的值为空的情况,如果使用普通的查询,那么这项数据就会被跳过。使用哪个join 连接则会避免这种情况的发生,如下图中所示:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
从图中可以看到,即便有些女生的男友项为空,还是会显示在表中。这是因为在join连接中,会以left和right关键词所指向的表为参考,如果使用left,则以左边的表t_mysql_beauty的数据为参考,不会略掉该表的每一条数据,而如果换成右边,则会以t_mysql_boys为参考,如下图所示:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
常见函数
在MySQL中,有许多的函数供我们使用,主要针对列段类型值进行后期加工。我们可以使用select 函数名();这种格式来测试一个函数的功能。
函数类型主要分为数字类型、字符类型和时间类型的函数,下面是一些常见函数的列表;
1.字符函数
DQL数据查询语言(下) 和DML(数据管理语言)的学习
2.数字函数
DQL数据查询语言(下) 和DML(数据管理语言)的学习
3.时间函数
DQL数据查询语言(下) 和DML(数据管理语言)的学习
DQL数据查询语言(下) 和DML(数据管理语言)的学习
这里以时间函数为例来简单介绍下函数的使用:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
子查询
子查询其实就是在查询的时候需要在sql语句中嵌套sql语句,即为多重查询。
举例:
假如我们现在要以表t_mysql_employees为基础,查询表中各个部门中,最低工资高于50号部门最低工资的部门名字和最低工资。
DQL数据查询语言(下) 和DML(数据管理语言)的学习
将代码美化一下:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
在写子查询的时候要切记逻辑正确,先分清主次关系。
分页查询
分页查询的主要目的就是在原有查询的基础上按需求显示给定数量的数据。在处理大量数据的时候,我们可以选择任意起点开始的任意数量的数据。
如,在t_mysql_employees表中总共有107条数据,我们可以选择仅仅显示前10条数据:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
分页查询的基本语法格式为:原始查询语句 limit startIndex,offset;
在使用分页查询的时候,需要注意两点:
1.当原始查询的结果数量要小于我们的offset即设定显示的数据值时,这是不会报错,只是会默认显示原始查询的所有结果;
2.当分页查询的起始点即startIndex为0时,可以省略不写:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
二、DML(数据管理语言)
DML(数据管理语言)主要包括了数据的添加、修改和删除。
1.数据的新增/添加
下面是最简单的新增类型,基本语法格式为:insert into 表名 values();括号内需要根据表各个列段将各个值按顺序写上,不可漏
DQL数据查询语言(下) 和DML(数据管理语言)的学习
除了上面这种添加方式外,还可以向指定的列段添加数据:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
添加数据的方法除了写values外,可以直接从数据表中复制:
首先,新建一张表t_mysql_boys_bak,
DQL数据查询语言(下) 和DML(数据管理语言)的学习
DQL数据查询语言(下) 和DML(数据管理语言)的学习
copy/拷贝
通过直接复制t_mysql_boys的结构来新建一个同样结构的表。
然后再复制数据:
DQL数据查询语言(下) 和DML(数据管理语言)的学习
DQL数据查询语言(下) 和DML(数据管理语言)的学习
2.数据的修改
关键词:update。
数据的修改分为修改整个表的修改和条件修改。
DQL数据查询语言(下) 和DML(数据管理语言)的学习
上图即修改了整个表的usercp列段的数据,可以添加条件来指定修改某一条数据的某个列段信息。
DQL数据查询语言(下) 和DML(数据管理语言)的学习
数据的删除
关键词delete、truncateDQL数据查询语言(下) 和DML(数据管理语言)的学习
上图中,删除了id为4的整条数据信息。truncate也具有删除的功能。
delete 与 truncate的区别:
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚.