MySQL-排序、GROUP BY、连接、NULL值处理、正则表达式、事务
1、MySQL排序
语法:SQL SELECT 语句使用ORDER BY子句将查询数据排序后再返回数据
SELECT field1,field2,...fieldN FROM table_name1,table_name2....ORDER BY field1,[field2...][ASC][DESC]
2、MySQL GROUP BY语句
在分组的列上可以使用COUNT,SUM,AVG等函数
语法:SELECT column_name,function(column_name)FROM table_name WHERE column_name operator value GROUP BY column_name;
使用WITH ROLLUP:WITH ROLLUP可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT...)
3、MySQL连接的使用
可以在SELECT,UPDATE,和DELETE语句中使用MySQL的JOIN联合多表查询
INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录
RIGHT JOIN(右连接):与LEFT JOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录
例:SELECT a.table1_id,a.table2_author,b.table1_count FROM table1 a INNER JOIN table2 b ON a._author = b._author;
SELECT a._id,a._author,b._count FROM table1 LEFT JOIN table2 b ON a._author = b._author;
SELECT b._id,b._author,a._count FROM table1 a RIGHT JOIN table2 b ON a._author = b._author;
4、MySQL NULL值处理
SELECT 命令及WHERE 子句读取数据表中的数据,当提供的查询条件字段为NULL时,该命令可能就无法正常工作
IS NULL:当列的值是NULL,此运算符返回true;
IS NOT NULL:当列的值不为NULL,运算符返回true;
<=>:比较操作符(不同于=运算符),当比较的两个值为NULL时返回true
例:SELECT * FROM table WHERE count IS NULL;
SELECT * FROM table WHERE count IS NOT NULL;
5、MySQL 正则表达式
(1)查找name字段中以‘st’为开头的所有数据;
SELECT name FROM person_tbl WHERE name REGEXR '^ST';
(2)查找name字段以‘ok’为结尾的所有数据;
SELECT name FROM person_tbl WHERE name REGEX 'OK$';
(3)查找name字段中包含‘mar’字符串的所有数据;
SELECT name FROM person_tbl WHERE name REGEXP 'mar';
(4)查找name字段中以元音字符开头或以‘ok’字符串结尾的所有数据;
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
6、MySQL事务
•在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务;
•事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行;
•事务用来管理insert,update,delete语句
事务必须满足4个条件(ACID):Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Dutability(可靠性)
原子性:一组事务,要么成功;要么撤回;
稳定性:有非法数据(外键约束之类),事务撤回;
隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么事务会撤回。事务的100%隔离,需要牺牲速度
可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重建修改。可靠性和高速度不可兼得
在MySQL控制台使用事务操作
1、开始一个事务 start transaction
2、做保存点 savepoint 保存点名称
3、操作
4、可以回滚,可以提交,没有问题就提交,有问题就回滚