多表查询
-
多表查询: 笛卡尔积.
内连接查询-
隐式内连接 : 使用where.
eg: select * from emp,dept where emp.'dept_id' = dept.'id';
//可以用from来定义表的别名. -
显式内连接 :
select 字段列表 from 表名1 inner join 表明2 on 条件.
-
前提: 确定表,查询条件,查询字段.
外连接查询
-
左外连接
select 字段 from 表1 left [outer] join 表2 on 条件.
-
右外连接
select 字段 from 表1 right [outer] join 表2 on 条件.
子查询
> 查询中嵌套查询.
1. 子查询的结果是单行单列的:
* 子查询的结果作为条件.
2. 子查询的结果是多行单列的:
* 多行单列使用运算符IN.
> SELECT * FROM department WHERE id IN (SELECT id FROM department WHERE dep_location='成都' OR dep_name='法务');
3. 子查询的结果是多行多列的:
* 子查询可以作为一张虚拟表. -
事务
-
操作
* start transaction
* commit
* rollback> mysql中, 事务默认提交事务.
-
事务的四大特征
* 原子性
* 持久性
* 隔离性
* 一致性 -
事务的隔离级别
* 多个事务之间相互独立.
* 问题:
1. 脏读
2.不可重复读
3. 幻读
* 级别1. read uncommit: 读取为提交. 产生问题: 脏读, 不可重复读, 幻读. 2. read commited: 读取已提交: 产生问题: 不可重复读, 幻读 3. repeatable read: 可重复读: 产生问题: 幻读 4. serializable : 串行化: 可解决所有问题 * 隔离级别从小到大.
DCL
- 管理用户
1.1 查询用户
1.2 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
1.3 删除用户
DROP USER '用户名'@'主机名' ;
1.4 修改密码
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
set password for '用户名'@'主机名' = password('新密码'); - 授权
- 查询权限
show grants for '用户名'@'主机名'; - 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'; - 撤销权限
revoke 权限列表 on database_name.table_name to 'username'@'host_name';
- 查询权限
OTHER
- 忘记root密码
- 停止mysql服务
- 使用无验证方式启动mysql服务: mysqld --skip-grant-tables.
网友评论