语法:SELECT * FROM 表名称1,表名称2;
查询出的条目数 = 表1的条目数 * 表二的台条目数;
内连接查询
特点:查询的是表的交集部分;
隐式内连接
语法:SELECT * FROM 表1,表2 WHERE 条件;
SELECT 要查询的列(要哪个表的数据就用哪个表.表的列) FROM 表1(可以取别名),表2 (可以取别名) WHERE 条件;
显示内链接
语法:SELECT * FROM 表1 INNER JOIN 表2 ON 条件;(INNER 可以省略)
外连接
左外连接
语法:SELECT * FROM 表1 LEFT OUTER JOIN 表2 ON 条件;(OUTER 可以省略)
结果特点:左表的全部部分+加右表的交集
右外连接
语法:SELECT * FROM 表1 RIGHT OUTER JOIN 表2 ON 条件;(OUTER 可以省略)
结果特点:右表的全部内容+左表的交集
子查询
1.概念:查询中嵌套查询,称嵌套查询为子查询;
2.子查询的不同情况:
1.子查询的结果是单行单列的:
例如:查询最高工资的员工
原始做法:
SELECT MAX(gongzi) FROM 员工表;
SELECT * FROM 员工表 WHERE 工资 = 查询到的结果;
子查询:
SELECT * FROM 员工表 WHERE 工资 = (SELECT MAX(工资) FROM 员工表);
2.子查询的结果是多行单列的:
主要查用IN(条件1,条件2(也就是子查询));
3.子查询的结果是多行多列的:
可以作为一个虚拟表进行连接查询;
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';-- 主机名 本机 locahost 任意主机 %
删除用户
DROP USER '用户名'@'主机名';
查询用户
USE mysql;
SELECT * FROM USER;
修改用户密码
UPDATE USER SET PASSWORD=PASSWORD('新密码') WHERE user= '用户名';
SET PASSWORD FOR '用户名'@'主机名'=PASSWORD('新密码');
忘记超级管理员密码
a. cmd 输入 net stop mysql -- 停止mysql服务 需要管理员运行该cmd
b. 使用无验证方式启动mysql服务: mysqld --skip-grant-tables
c. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功
d. use mysql;
e. update user set password = password('你的新密码') where user = 'root';
f. 关闭两个窗口
g. 打开任务管理器,手动结束mysqld.exe 的进程
h. 启动mysql服务
i. 使用新密码登录。
数据库权限
a.查询权限
语法: SHOW GRANTS FOR '用户名'@'主机名';
b.授予权限
语法: GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'; -- 标准格式
语法: GRANT ALL ON *.* TO 'zhangsan'@'localhost'; -- 给张三本机用户授予所有的权限
c.撤销权限
语法: REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
案例: REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%'; -- 撤销李四在所有机器上面的 UPDATE 权限
多表查询笛卡儿积语法:SELECT * FROM 表名称1,表名称2;查询出的条目数 = 表1的条目数 * 表二的台条目数;内连接查询特点:查询的是表的交集部分;隐式内连接 语法:SELECT * FROM 表1,表2 WHERE 条件; SELECT 要查询的列(要哪个表的数据就用哪个表.表的列) FROM 表1(可以取别名),表2 (可...