*查询语法
select 列名列表 from 表名列表 where ....
*笛卡尔积:有两个集合A,B,取两个集合的所有组成情况,要完成多表查询,需要消除无用的数据
*分类
1. 内连接查询
*从哪些表中查询数据
*条件是什么
*查询哪些字段
1. 隐式内连接:使用where条件消除
*语法:select .... from 表1 t1,表2 t2 where t1.xx = t2.xx
例如:select
r.*,s.StudentName
from
result r,student s
where
r.StudentNo = s.StudentNo;
2. 显式内连接:
*语法:select .... from 表1 [inner] join 表2 on 连接条件
例如:select r.*,s.StudentName
from result r
inner join student s
on r.StudentNo = s.StudentNo;
2. 外连接查询
1. 左外连接:查询的是左表所有数据和条件的交集部分
*语法:select ... from 表1 left [outer] join 表2 on 连接条件;
例如:以左表为主表 显示左表所有记录 右边的符合条件的显示出来 不符合就空
select r.*,s.StudentName
from result r
left join student s
on r.StudentNo = s.StudentNo;
2. 右外连接:查询的是右表所有数据和条件的交集部分
*语法:select... from 表1 right [outer] join 表2 on 连接条件
例如:以右表为主表 显示所有记录 左边的符合条件的显示出来 不符合就空
select r.*,s.StudentName
from result r
right join student s
on r.StudentNo = s.StudentNo;
3. 子查询
*概念:查询中嵌套查询,称嵌套查询为子查询 成绩最高分的学生信息
select * from xs where xs.score = (select max(score) from cj);
*子查询的不同情况
1. 子查询的结果是单行单列的 成绩小于平均成绩的学生信息
例如:select * from xs where xs.score = < (select avg(score) from cj);
2. 子查询的结果是多行单列的 查询财务部和市场部所有员工信息
*子查询可以作为条件,使用运算符in来判断
select * from emp where dept_id in(select id from dept where name = '财务部' OR name = '市场部');
3. 子查询的结果是多行多列的 查询入学时间是2018-11-11号之后的学生信息和院信息
**子查询可以作为虚拟表参与查询
例如:select * from dept t1,(select * from emp where emp.`join_date` > '2018-11-11') t2 where t1.id = t2.id;
*DBA:数据库管理员
1. 管理用户
1. 添加用户
*语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
2. 删除用户
*语法:DROP USER '用户名'@'主机名';
3. 修改用户密码
*语法:1. UPDATE USER SET PASSWORD = PASSWORD('新密码') INDIFIED BY '密码';
2. SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');
*mysql中忘记了root密码
1. cmd-->net stop mysql 停止mysql服务
*需要管理员运行cmd
2. 使用无验证方式启动mysql服务:mysql --skip-grant-tables
3. 打开新的cmd窗口,直接输入mysql,敲回车就可登录成功。
4. use mysql
5. update user set password = password('你的新密码') where user = 'root';
6. 关闭两个窗口
7. 打开任务管理器,手动结束mysql.exe的进程
8. 启动mysql服务
9. 使用新密码登录
4. 查询用户
1. 切换到mysql数据库 use mql;
2. 查询user表 select * from user;
*通配符:% 表示可以在任意主机使用用户登录数据库
2. 权限管理
1. 查询权限
*语法:SHOW GRANTS FOR '用户名'@'主机名';
2. 授予权限
*语法:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
3. 撤销权限
*语法:REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';