mysql复习知识

WITH ROLLUP

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
在这里插入图片描述
使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录

mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
+--------+----------+
| name   | COUNT(*) |
+--------+----------+
| 小丽 |        1 |
| 小明 |        3 |
| 小王 |        2 |
+--------+----------+
3 rows in set (0.01 sec)

我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

mysql> SELECT name, SUM(singin) as singin_count FROM  employee_tbl
       GROUP BY name WITH ROLLUP;
+--------+--------------+
| name   | singin_count |
+--------+--------------+
| 小丽 |            2 |
| 小明 |            7 |
| 小王 |            7 |
| NULL |           16 |
+--------+--------------+
4 rows in set (0.00 sec)
coalesce、IFNULL
语法:
select coalesce(a,b,c);
参数说明:
如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;
如果a b c 都为null ,则返回为null(没意义)。

-----------------------------------------------
select IFNULL(expression, alt_value);
参数说明:
expression,必须,要测试的值
alt_value, 必须,expression 表达式为 NULL 时返回的值
实战

我们观察到统计登录次数时,输出了Null,这是没意义的,下面解决这个问题。

mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
+--------------------------+--------------+
| coalesce(name, '总数') | singin_count |
+--------------------------+--------------+
| 小丽                   |            2 |
| 小明                   |            7 |
| 小王                   |            7 |
| 总数                   |           16 |
+--------------------------+--------------+
4 rows in set (0.01 sec)
MySQL 连接的使用

runoob_tbl表
在这里插入图片描述
tcount_tbl表
在这里插入图片描述

INNER JOIN

(内连接,或等值连接)获取两个表中字段匹配关系的记录。)

SELECT a.`runoob_id`,a.`runoob_author`,b.`runoob_count` FROM runoob_tbl a
INNER JOIN tcount_tbl b ON a.`runoob_author`=b.`runoob_author`

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

个人见解:

以左表为参照,找出两个表的交集,再计算交集的笛卡尔积即可

LEFT JOIN

left join 与 join 有所不同。LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。

SELECT a.`runoob_id`,a.`runoob_author`,b.`runoob_count` FROM runoob_tbl a
LEFT JOIN tcount_tbl b ON a.`runoob_author`=b.`runoob_author`

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

个人见解

用左边表所有的数据来和右边表的数据匹配,如果,右边表找不到对应的则显示为NULL。

RIGHT JOIN

RIGHT JOIN 会读取右边数据表的全部数据,即便左边边表无对应数据。

SELECT a.`runoob_id`,a.`runoob_author`,b.`runoob_count` FROM runoob_tbl a
RIGHT JOIN tcount_tbl b ON a.`runoob_author`=b.`runoob_author`

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

个人见解

用右边表所有的数据来和左边表的数据匹配,如果,左边表找不到对应的则显示为NULL。

MySQL 事务
定义

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!

四大特性

原子性
一致性
隔离性
持久性

注意

在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。

提供参考博客:MySQL中的事务

数据库表管理
备份表
CREATE TABLE tcount_tbl_back SELECT * FROM tcount_tbl_test;
修改表名
//方式一
ALTER TABLE tcount_tbl_back RENAME TO tb;

//方式二
RENAME TABLE tb TO runoob_tbl_back;
修改字符集
ALTER TABLE runoob_tbl_back CHARSET utf8;
添加字段
ALTER TABLE runoob_tbl_back ADD login_name VARCHAR(50) DEFAULT '游客';
修改字段
ALTER TABLE runoob_tbl_back MODIFY runoob_count FLOAT NOT NULL;

优秀文档:MySQL文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值