• mysql 高级应用


    1.MySQL like 模糊查询

    例如:select * from emp where name like '%';

    2.1MySQL UNION 操作符

    SELECT country FROM Websites
    UNION
    SELECT country FROM apps
    ORDER BY country;

    2.2SQL UNION ALL

    SELECT country FROM Websites
    UNION ALL
    SELECT country FROM apps
    ORDER BY country;

    2.3带有 WHERE 的 SQL UNION ALL

    SELECT country, name FROM Websites
    WHERE country='CN'
    UNION ALL
    SELECT country, app_name FROM apps
    WHERE country='CN'
    ORDER BY country;

    3.在命令提示符中使用 ORDER BY 子句(根据字段排序)

    3.1从小到大排序

    select * from student ORDER BY weight ASC;

    3.2从大到小排序

    select * from student ORDER BY weight DESC;

    4.MySQL GROUP BY 语句(分组)

    SELECT sex,count(*) FROM student GROUP BY sex;

    5.MySQL 事务

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

    • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
    • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
    • 事务用来管理 insert,update,delete 语句

    一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)

    • 1、事务的原子性:一组事务,要么成功;要么撤回。
    • 2、稳定性 :有非法数据(外键约束之类),事务撤回。
    • 3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
    • 4、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit 选项 决定什么时候吧事务保存到日志里。

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

    事物控制语句:

    • BEGIN或START TRANSACTION;显式地开启一个事务;

    • COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;

    • ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

    • SAVEPOINT identifier;SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT;

    • RELEASE SAVEPOINT identifier;删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

    • ROLLBACK TO identifier;把事务回滚到标记点;

    • SET TRANSACTION;用来设置事务的隔离级别。InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。

    MYSQL 事务处理主要有两种方法:

    1、用 BEGIN, ROLLBACK, COMMIT来实现

    • BEGIN 开始一个事务
    • ROLLBACK 事务回滚
    • COMMIT 事务确认

    2、直接用 SET 来改变 MySQL 的自动提交模式: 

    • SET AUTOCOMMIT=0 禁止自动提交
    • SET AUTOCOMMIT=1 开启自动提交

    事务测试

     6.多表联合查询

    6.1内连查询(inner join)

    SELECT * FROM dep inner join emp on dep.id=emp.dep_id;

    查询出两张表中要查询的字段数字相同的数据(dep.id= emjp.dep_id的数字相同)

    6.2左联(left outer join)
    SELECT * FROM emp left outer join  department on emp.id=department.id;
     表示以做表为主显示左表的所有的数据
    6.3右联(right outer join)。
    SELECT * FROM emp right outer join  department on emp.id=department.id;
    表示以右表为主显示有表的所有数据
    6.4第四:全联(full outer join)
     MySQL不支持全外连接,所以只能采取关键字UNION来联合左、右连接的方法:

    SELECT * FROM emp left outer join dep on emp.id=dep.id
    UNION
    SELECT * FROM emp right outer join dep on emp.id=dep.id;

    结论:返回左右表的所有行。哪个表中没有的就用null填充。

  • 相关阅读:
    程序员:不要自称为码农
    SpringBoot对静态资源配置
    LeetCode 572. Subtree of Another Tree(子树)
    LeetCode 437. Path Sum III(统计路径和等于sum的路径数量)
    LeetCode 112. Path Sum(判断路径和是否等于一个数)
    LeetCode 617. Merge Two Binary Trees(归并两棵二叉树)
    LeetCode 226. Invert Binary Tree(翻转二叉树)
    Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 的解决办法
    linux-查询某软件的安装的目录
    WebService概念解释
  • 原文地址:https://www.cnblogs.com/sbj-dawn/p/7458710.html
Copyright © 2020-2023  润新知