mysql复习知识

文章目录

        • WITH ROLLUP
        • coalesce、IFNULL
          • 语法:
          • 实战
        • MySQL 连接的使用
          • INNER JOIN
            • 个人见解:
          • LEFT JOIN
            • 个人见解
          • RIGHT JOIN
            • 个人见解
        • MySQL 事务
          • 定义
          • 四大特性
          • 注意
        • 数据库表管理
          • 备份表
          • 修改表名
          • 修改字符集
          • 添加字段
          • 修改字段

WITH ROLLUP

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。
mysql复习知识_第1张图片
使用 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表
mysql复习知识_第2张图片
tcount_tbl表
mysql复习知识_第3张图片

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`

mysql复习知识_第4张图片
mysql复习知识_第5张图片

个人见解:

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

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`

mysql复习知识_第6张图片
mysql复习知识_第7张图片

个人见解

用左边表所有的数据来和右边表的数据匹配,如果,右边表找不到对应的则显示为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`

mysql复习知识_第8张图片
mysql复习知识_第9张图片

个人见解

用右边表所有的数据来和左边表的数据匹配,如果,左边表找不到对应的则显示为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文档

你可能感兴趣的:(MySQL)