DQL的基本操作(2)与DML

可以实现三表连接?
#案例:查询员工名、部门名和所在的城市
在这里插入图片描述
#2、非等值连接
#案例1:查询员工的工资和工资级别
在这里插入图片描述
#3、自连接
#案例:查询 员工名和上级的名称
在这里插入图片描述

一、 join查询
语法:
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】
分类:
内连接(★):inner
外连接
左外(★):left 【outer】
右外(★):right 【outer】
全外:full【outer】
交叉连接:cross

#女生对应的男朋友(以左为主表,主表全显示)
在这里插入图片描述

以右为主
在这里插入图片描述

二、 常见函数
主要是针对列段类型值进行后期加工
1、字符函数
作用 函数 结果
转小写 LOWER(‘SQL Course’) sql course
转大写 UPPER(‘SQL Course’) SQL COURSE
拼接 CONCAT(‘Hello’, ‘World’) HelloWorld
截取 SUBSTR(‘HelloWorld’,1,5) Hello
长度 LENGTH(‘HelloWorld’) 10
字符出现索引值 INSTR(‘HelloWorld’, ‘W’) 6
字符截取后半段 TRIM(‘H’ FROM ‘HelloWorld’) elloWorld
字符替换 REPLACE(‘abcd’,‘b’,‘m’) amcd
在这里插入图片描述

2、数字函数
作用 函数 结果
四舍五入 ROUND(45.926, 2) 45.93
截断 TRUNC(45.926, 2) 45.92
求余 MOD(1600, 300) 100
在这里插入图片描述

3、日期函数
作用 函数 结果
获取当前日期 now()
将日期格式的字符转换成指定格式的日期 STR_TO_DATE(‘9-13-1999’,’%m-%d-%Y’) 1999-09-13
将日期转换成字符 DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’) 2018年06月06日
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、 子查询
含义:出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询
#案例1:谁的工资比 Abel 高?
在这里插入图片描述

#案例2:返回job_id与141号员工相同,salary比143号员工多的员工 姓名,job_id 和工资
在这里插入图片描述

#案例3:返回公司工资最少的员工的last_name,job_id和salary
在这里插入图片描述

#案例4:查询最低工资大于50号部门最低工资的部门id和其最低工资
在这里插入图片描述

四、 分页查询
语法:
select 查询列表
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段】
limit 【offset,】size;

offset要显示条目的起始索引(起始索引从0开始)
size 要显示的条目个数

特点:
①limit语句放在查询语句的最后
②公式
要显示的页数 page,每页的条目数size
从0开始,可以省略0 如: limit 0,5=limit 5
#案例1:查询前五条员工信息
在这里插入图片描述

#案例2:有奖金的员工信息,并且工资较高的前10名显示出来
在这里插入图片描述

五、DML的基本操作
1、 插入数据
使用 INSERT 语句向表中插入数据。
使用这种语法一次只能向表中插入一条数据。
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);
输入全部字段
在这里插入图片描述
在这里插入图片描述

输入部分字段
在这里插入图片描述
在这里插入图片描述

2、 拷贝数据
在 INSERT 语句中加入子查询。
在这里插入图片描述

3、 更新数据
使用 UPDATE 语句更新数据。
UPDATE table
SET column = value [, column = value, …]
[WHERE condition];
在这里插入图片描述

一次修改多表的数据
#案例 1:修改张无忌的女朋友的手机号为114

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、 删除数据
使用 DELETE 语句从表中删除数据。
DELETE FROM table
[WHERE condition];

• 使用 WHERE 子句删除指定的记录。
DELETE FROM t_mysql_departments
WHERE department_name = ‘Finance’;

• 如果省略 WHERE 子句,则表中的全部数据将被删除
DELETE FROM copy_emp;

#案例:删除张无忌的女朋友的信息
在这里插入图片描述

delete pk truncate
1.delete 可以加where 条件,truncate不能加
2.truncate删除,效率高一丢丢
3.假如要删除的表中有自增长列, 如果用delete删除后,再插入数据,自增长列的值从断点开始, 而truncate删除后,再插入数据,自增长列的值从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚.

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zhou981130/article/details/107841547