DQL(数据查询语言)下、DML(数据管理语言))

DQL(数据查询语言)下、DML(数据管理语言))
多表查询的join on连接
左外连接:left join on
右外连接:right join on

使用on子句的好处:

自然连接中是以具有相同名字的列为连接条件的。
可以使用 ON 子句指定额外的连接条件。
这个连接条件是与其它条件分开的。
ON 子句使语句具有更高的易读性。
1
2
3
4
案例:查询哪个部门没有员工
在这里插入图片描述
注意:左外连接,左边的表就是主表,右边的表就是从表,右外连接同理。

常见函数
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日
日期的相关格式符

序号 格式符 功能
1 %Y 4位的年份
2 %y 2位的年份
3 %m 月份(01、02、03…)
4 %c 月份(1、2、3…)
5 %d 日(01、02、03…)
6 %H 小时(24小时制)
7 %h 小时(12小时制)
8 %i 分钟(00、01、…、59)
9 %s 秒(00、01、…、59)
子查询
含义:出现在其他语句中的select语句,称为子查询或内查询。外部的查询语句,称为主查询或外查询
特点:
①子查询放在小括号内
②子查询一般放在条件的右侧
③子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果

案例:谁的工资比 Abel 高?
在这里插入图片描述
注意:子查询不是很难,着重注意下逻辑部分就好。

分页查询
应用场景:当要显示的数据,一页显示不全,需要分页提交sql请求

语法:

select 查询列表
from 表
【join type join 表2
on 连接条件
where 筛选条件
group by 分组字段
having 分组后的筛选
order by 排序的字段】
limit 【offset,】size;
1
2
3
4
5
6
7
8
9
offset要显示条目的起始索引(起始索引从0开始,如果是从0开始的话,0可以省略不写, 只写偏移量)
size 要显示的条目个数(偏移量)
1
2
#案例1:查询前五条员工信息
写法一:

SELECT
*
FROM
t_mysql_employees
LIMIT 0,5;
1
2
3
4
5
写法二:(起始索引是0,忽略不写)

SELECT
*
FROM
t_mysql_employees
LIMIT 5;
1
2
3
4
5
DML(数据管理语言)
1、插入数据

使用 INSERT 语句向表中插入数据。

语法:

INSERT INTO 表名 (列段1,列段2,列段3)VALUES (值1,值2,值3)
1
需要注意的是,字符和日期型数据应包含在单引号中。

INSERT INTO table (id, fname)
VALUES (113, ‘Louis’);
1
2
使用案例:从其他表中拷贝数据
在 INSERT 语句中加入子查询。

INSERT INTO 新表
SELECT *
FROM 旧表
WHERE id = 90;
1
2
3
4
当我们需要拷贝一张表的时候,但是表的列名又太多,建表的列名可以用下图上面的这串代码;而下图下面的代码就是拷贝旧表中的数据。
在这里插入图片描述
WHERE 1=2 是恒不等的,所有就只复制了列名
2、更新数据

使用 UPDATE 语句更新数据。

语法:

UPDATE 表名
SET 列名1 = 值1 [,列名2 = 值2, …]
[WHERE 筛选条件]
1
2
3
注意:
使用 WHERE 子句能指定需要更新的数据,而如果忽略 WHERE,则表中的所有数据都将被更新。

实例、把id为113,修改为70

UPDATE 表名
SET id = 70
WHERE id = 113;
1
2
3
3、删除数据

使用 DELETE 语句从表删除数据。

语法:

DELETE FROM 表名
[WHERE 筛选条件];
1
2
注意:
使用 DELETE 子句能删除指定的数据,而如果忽略 DELETE,则表中的所有数据都将被删除。

划重点,要考:
delete 和 truncate 的区别:
1、delete可以加where条件,truncate不能加;
2、truncate效率会要高些;
3、delete有返回值,truncate没有返回值;
4、delete可以回滚,truncate不能回滚;
5、如果要删除的表中有自增长列,那么:
-------delete之后,再插入数据,自增长列的值从断点开始;
-------而truncate之后,再插入数据,自增长列的值从1开始。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值