ORDER BY 根据字段排序
SELECT * FROM TABLE ORDER BY COLUME1 ASC|DESC
GROUP BY 语句根据一个或多个列结果集进行 分组
在分组的列上我们可以使用 count sum avg 等函数
-- WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计
SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
-- 我们将以上的数据表按名字进行分组, 再统计每个人登录的次数:
-- MySQL null 值的处理
-- is null 当列的值为 null 此运算符返回 true
-- is not null 当列的值不为 null 运算符返回 true
查找数据表中 runoob_test_tbl 列是否为 NULL
- SELECT * FROM runoob_test_tbl WHERE runoob_count IS NULL;
- +---------------+--------------+
- | runoob_author | runoob_count |
- +---------------+--------------+
| 菜鸟教程 | NULL |
- | Google | NULL |
- +---------------+--------------+
- SELECT * from runoob_test_tbl WHERE runoob_count IS NOT NULL;
- +---------------+--------------+
- | runoob_author | runoob_count |
- +---------------+--------------+
- | RUNOOB | 20 |
- | FK | 20 |
- +---------------+--------------+
- --------------------------------------------------------------------------
MySQL 事务
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库才支持事务
事务处理可用来维护数据库的完整性, 保证成批的 SQL 语句要么全部执行, 要么全部不执行
事务用来管理 insert update delete 语句
事务必须满足 4 个条件 (ACID): 原子性 (Atomicity) 一致性 (Consistency) 隔离性 (Isolation) 持久性 (Durability)
原子性: 一个事务中的所有操作, 那么全部完成, 那么全部不完成, 不会结束在中间某个环节. 事务在执行过程中发生错误, 会被回滚到事务开始
前的状态, 就像这个事务重来没有执行过一样
一致性: 在事务开始之前和事务结束以后, 数据库的完整性没有被破坏, 这表示写入的资料必须完全符合所有的预设规则, 这包含资料的精确度
串联性以及后续数据库可以自发性完成预定的工作
隔离性: 数据库允许多个事务同时对其数据进行读写和修改的能力, 隔离性可以防止多个事务并发执行时 由于交叉执行而导致数据的不一致.
事务隔离分为不同级别 包括读未提交 读提交 可重复读 和串行化
持久性: 事务处理结束后, 对数据的修改就是永久的, 即便系统故障也不会丢失
MySQL 事务处理主要有两种方法
用 begin rollback commit
begin 开始一个事务
rollback 事务回滚
commit 事务确认
- MySQL> begin; # 开始事务
- Query OK, 0 rows affected (0.00 sec)
- MySQL> insert into runoob_transaction_test value(5);
- Query OK, 1 rows affected (0.01 sec)
- MySQL> commit; # 提交事务
- Query OK, 0 rows affected (0.01 sec)
- MySQL> begin; # 开始事务
- Query OK, 0 rows affected (0.00 sec)
- MySQL> insert into runoob_transaction_test values(7);
- Query OK, 1 rows affected (0.00 sec)
- MySQL> rollback; # 回滚
- Query OK, 0 rows affected (0.00 sec)
- ---------------------------------------------------------------------------------------------
- ALTER TABLE table_1 DROP i;
-- 删除字段 i
ALTER TABLE table_1 ADD i INT;
-- 添加字段 i
ALTER TABLE table_1 ADD i INT FIRST;
-- 添加字段 i 设定位第一列
ALTER TABLE table_1 ADD i INT after c;
-- 添加字段 设定位于 c 个字段之后
ALTER TABLE table_1 MODIFY c CHAR(10);
-- 修改字段类型
ALTER TABLE table_1 CHANGE c c CHAR(10);
-- 修改字段类型 change 可以修改字段名
ALTER TABLE table_1 CHANGE c b CHAR(10);
-- 修改字段类型
ALTER TABLE table_1 ALTER i SET DEFAULT 1000;
-- 修改默认值为 100
ALTER TABLE table_1 ALTER i DROP DEFAULT;
-- 删除默认值
ALTER TABLE table_1 RENAME TO table_12;
-- 修改表名
---------------------------------------------------------------------------------------------------
索引
索引分单列索引和组合索引. 单列索引, 即一个索引只包含单个列, 一个表可以有多个单列索引, 但这不是组合索引. 组合索引, 即一个索引包含多个列.
创建索引时, 你需要确保该索引是应用在 SQL 查询语句的条件 (一般作为 WHERE 子句的条件).
实际上, 索引也是一张表, 该表保存了主键与索引字段, 并指向实体表的记录.
来源: http://www.bubuko.com/infodetail-2803461.html