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、可以回滚,可以提交,没有问题就提交,有问题就回滚

posted @ 2018-01-14 23:46  Panpy_Y  阅读(1081)  评论(0编辑  收藏  举报