DQL数据查询语言下之-----多表查询-----常见函数-----子查询-----分页查询以及DML数据管理语言

DQL数据查询语言下之-----多表查询-----常见函数-----子查询-----分页查询以及DML数据管理语言

一.多表查询

在这里插入图片描述

1.笛卡尔集

在这里插入图片描述

2.等值连接

在这里插入图片描述

4.join连接

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


#案例:查询员工名、部门名和所在的城市
SELECT e.last_name,d.department_name,l.city
from
t_mysql_employees e,t_mysql_departments d,t_mysql_locations l
where e.department_id = d.department_id
and d.location_id = l.location_id

在这里插入图片描述


select * from t_mysql_boys b,t_mysql_beauty bt
where b.id = bt.boyfriend_id;

在这里插入图片描述

二.常见函数

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

select releaseDate from t_p1_blog;
select DATE_FORMAT(releaseDate,'%Y年%m月') from t_p1_blog;
select DATE_FORMAT(releaseDate,'%Y年%m月') releasestr,count(*) from t_p1_blog GROUP BY releasestr;

在这里插入图片描述
常见函数:
一、单行函数
字符函数:
length:获取字节个数(utf-8一个汉字代表3个字节,gbk为2个字节)
concat
substr
instr
trim
upper
lower
lpad
rpad
replace
数学函数:
round
ceil
floor
truncate
mod
日期函数:
now
curdate
curtime
year
month
monthname
day
hour
minute
second
str_to_date
date_format
其他函数:
version
database
user
控制函数
if
case

三.子查询

其实就是在sql语句中嵌套sql语句

步骤:
逻辑分析充分需求,分段书写SQL子句
最后拼接sql子句完成需求


SELECT
 * 
FROM
 t_mysql_employees 
WHERE
 salary > ( SELECT salary FROM t_mysql_employees WHERE last_name = 'Abel' );

在这里插入图片描述

SELECT last_name,job_id,salary
FROM t_mysql_employees
WHERE job_id = (
 SELECT job_id
 FROM t_mysql_employees
 WHERE employee_id = 141
) AND salary>(
 SELECT salary
 FROM t_mysql_employees
 WHERE employee_id = 143
);

在这里插入图片描述

四.分页查询

应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求
语法:
select 查询列表
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段】
limit 【offset,】size;

offset要显示条目的起始索引(起始索引从0开始)
size 要显示的条目个数
特点:
①limit语句放在查询语句的最后
②公式
要显示的页数 page,每页的条目数size

select 查询列表
from 表
limit (page-1)*size,size;

size=10
page
1 0
2 10
3 20

五.DML数据管理语言

在这里插入图片描述

//字符和日期型数据应包含在单引号中。

//向表中添加  department_id为900,department_name为Ptions,location_id为1700.
INSERT INTO t_mysql_departments(department_id, department_name, location_id)
VALUES (900, 'Ptions', 1700);

第1行“department_name”列的数据太长

在这里插入图片描述
右键点击设计表,找到 _name 改成30,再点击保存.
在这里插入图片描述

再运行,结果是这样

在这里插入图片描述
查看表,看添加成功没有,有红色的那行就是添加成功了.

在这里插入图片描述

//创建一张新的表table t_mysql_departments_bak  但是因为where后面的结果为false,
所以只复制表结构,表里的内容是不会被复制的.


create table t_mysql_departments_bak
as
select * from t_mysql_departments where 1=2;

在这里插入图片描述

插入数据

使用 INSERT 语句向表中插入数据。
使用这种语法一次只能向表中插入一条数据。
INSERT INTO table [(column [, column…])]
VALUES (value [, value…]);

向指定表出入所有列段值

insert into 表名 values(…);

//向表t_mysql_departments_bak插入t_mysql_departments表中所有内容
insert into t_mysql_departments_bak
select * from t_mysql_departments

在这里插入图片描述

//向表t_mysql_departments 插入department_id,department_name 
且department_id < 120

insert into t_mysql_departments_bak(department_id,department_name)
select department_id,department_name from t_mysql_departments
where department_id < 120;

在这里插入图片描述

向表的特定列段插入值

insert into 表名(列段1,列段2…)
valuses(列1对应的值,列2对应的值)

把department_id = 901的改成department_id=902,department_name = 'Ptions_xxx'
UPDATE t_mysql_departments set department_id=902,department_name = 'Ptions_xxx' where department_id = 901

在这里插入图片描述

修改数据

update 表名 set 列段1=列段值1,列段2=列段2… where 筛选条件

// 查看t_mysql_employees表

SELECT * from t_mysql_employees;

在这里插入图片描述

//所有的工资加500

UPDATE t_mysql_employees set salary = salary+500;

在这里插入图片描述

//修改  表 t_mysql_boys bo表中     bo的id与b的id相等使两张表连接
修改张无忌的cp对象的phone属性为119 userCP属性为1000,


UPDATE t_mysql_boys bo
INNER JOIN t_mysql_beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='119',bo.`userCP`=1000
WHERE bo.`boyName`='张无忌';

删除数据

delete from 表名 where 条件

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值