标题: 数据库 [打印本页] 作者: 白小托 时间: 2019-8-20 14:32 标题: 数据库 -----------------------------多表查询------------------------------------------------------
INSERT INTO dept (id,dname) VALUES (50,'人事部');
SELECT
*
FROM
emp t1
RIGHT JOIN
dept t2
ON
t1.`dept_id` = t2.`id`;
-------------------------------------- 子查询--------------------------------------------
/*概念:1.一个查询的结果作为另一个人查询的条件
2.有查询的嵌套,内部的查询称为子查询
3.子查询要使用括号
*/
-- 子查询的结果是单列查询
-- select 查询字段 from 表 where 字段=(子查询)
-- 查询工资最高的员工
SELECT MAX(salary) FROM emp; -- 在emp表中找到最高的工资
SELECT * FROM emp WHERE emp.`salary`=(SELECT MAX(salary) FROM emp);
-- 子查询的结果是多行单列的时候
-- select 查询字段 from 表 where 字段 in (子查询)
-- 查询工资大于5000的员工,来自哪些部门
SELECT dept_id FROM emp WHERE salary > 5000
SELECT
emp.`ename`,emp.`salary`,dept.`dname`
FROM
dept,
emp
WHERE
emp.`dept_id`=dept.`id` AND
dept.`id`IN (SELECT emp.`dept_id` FROM emp WHERE salary > 5000);
SELECT dept.`dname` FROM dept WHERE id IN (SELECT dept_id FROM emp WHERE salary > 5000);
-- 子查询的结果是多行多列
-- 子查询的结果是多行多列,肯定在from后面作为表
-- select 查询字段 from (子查询) 表别名 where 条件;
-- 子查询你作为表需要取别名,否则这张表没有名称无法访问表中的字段
-- 查询出2011年以后入职的员工信息,包括部门名称
SELECT * FROM emp WHERE joindate >'2002-1-1';
SELECT
*
FROM
(SELECT * FROM emp WHERE joindate >'2002-1-1') t1,
dept t2
WHERE
t2.`id` = t1.dept_id;
----------------------------------------------事务--------------------------------------------------
事务的基本介绍
1.概念:如果包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2.操作:
开启事务:start transaction
回滚:rollback
提交:commit
CREATE TABLE account(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(10),
balance DOUBLE
);
INSERT INTO account (NAME,balance) VALUES ('张三',1000),('李四',1000);
UPDATE account SET balance=1000 WHERE NAME IN('张三','李四');
START TRANSACTION; -- 开启事务功能
UPDATE account SET balance=balance-500 WHERE NAME='张三';
123
UPDATE account SET balance=balance+500 WHERE NAME='李四';
COMMIT; -- 提交事务
ROLLBACK; -- 回滚事务
SELECT * FROM account;
-- ----事务提交的两种方式-----------------------
SELECT @@autocommit;
SET @@autocommit=0;
SET @@autocommit=1;
MySQL数据库中事务默认自动提交
事务提交的两种方法:
*自动提交:
*mysql就是自动提交的
*一条MDL(增删改)语句会自动提交一次事务
*手动提交:
*Oracle数据库默认是手动提交
*需要先开启事务,再提交
*修改事务的默认提交方式
*查看事务的默认提交方式:select @@autocommit;--1代表自动提交 0代表手动提交
*修改默认提交方式:set @@autocommit=0;
3.事务的四大特征(****面试题****):
1.原子性:是不可分割的最小单位,要么同时成功,要么同时失败。
2.持久性:当事务提交或回滚后,数据库会持久化的保持数据。
3.隔离性:多个事务之间相互独立。
4.一致性:事务操作前后,数据总量不变。
事务的隔离级别(暂无笔记)
-------------------------------------------------------------------------------------------
--------------------------------------JDBC------------------------------------------------
1.概念:Java DataBase Connectivity Java数据库连接,Java语言操作数据库
JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据驱动jar包(它把所有的数据库实后写了一个类,然后把这些类写入一个jar包),我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。