连接查询又称多表查询,查询到的字段来自于多个表中的数据。
一、 连接查询的分类和语法
1.分类
按标准分:
92标准:只支持内连接
99标准:支持内连接和、外连接和全外连接
功能进行分类:
内连接:inner
等值连接
非等值连接
自连接
外连接:
左外连接left 【outer】
右外连接right【outer】
全外连接(mysql不支持) full【outer】
交叉连接cross
笛卡尔集:没有加约束条件。若表1有m行数据,表2有m2行数据,最终有m*m2行数据。
2.语法
select 查询列表
from 表1 别名 【连接类型】
join 表2 别名
on 连接条件
【where 筛选条件】
【group by 分组】
【having 筛选条件】
【order by 排序列表】
二、内连接(inner)
1.等值连接
语法:select 查询列表 from 表1 别名1 [inner join] 表2 别名
[on]/[where] 连接条件
特点:
①多表等值连接的结果为多表的交集部分;
②m个表的连接,至少需要m-1个连接条件
③各个表的先后顺序没有要求
④可以结合其他函数和字句,比如:排序、分组、筛选等
⑤可以用inner join on连接也可以使用from多个表
⑥inner join on 是sql99语法规范,提高了分离性、可读性。
图片 1
图片 2
图片 3
图片 4
2.非等值连接
图片 5
图片 6
3.自连接
查询出员工名和上级名
图片 7
三、外连接
用于查询一个表中存在另一个表中不存在的数据
1.特点
①外连接的查询结果为主表中的所有数据,若从表中有和他匹配的,则显示匹配的数据;若没有与之匹配的数据,则显示null
②左外连接,left join 左边是主表;右外连接,right join 右边是主表
③左外和右外交换两个表的顺序,可以实现相同的查询结果
④全外连接=内连接+表1中有表2中没有的+表2中有表1中没有的
2.左外连接
图片 8
3.右外连接
图片 9
4.全连接
图片 10

 

mysql 忘记了管理员密码解决方法,修改数据库密码的几种方法

调试存储过程时,往往可以用print将存储过程中的变量print出来,

如何修改数据库密码

但是print出来的字符串有一定长度限制,刚才专门试了一下,应该是4000个字符

方法 1: 用 SET PASSWORD 命令 

首先登录 MySQL。  

格式:mysql>
set password for 用户名 @localhost = password('新密码');  

例子:mysql> set password for root@localhost = password('123');

如果超过4000个字符,超长的字符会被自动截断,这一点应该比较清楚。

方法 2:用 mysqladmin  

格式: mysqladmin -u 用户名 -p 旧密码 password 新密码

例子: mysqladmin -uroot -p123456 password 123

 

方法 3:用 UPDATE 直接编辑 user 表

首先登录 MySQL。  

mysql> use mysql;  

mysql>
update user set password=password('123') where user='root';  

mysql> flush privileges;  

对于超过4000的字符串没办法print出来的时候,往往可以选择select
@v_str这种方式,将后台的字符串select出来,然后粘贴出来查看

方法 4:在忘记 root 密码的时候,可以这样

但是今天发现不好使了,

windows下修改

  1. 关闭正在运行的 MySQL 服务。  

  2. 打开 DOS 窗口,转到 mysql\bin 目录。  

  3. 输入 mysqld --skip-grant-tables 回车。 --skip-grant-tables
    的意思是启动 MySQL 服务的时候跳过权限表认证。  

  4. 再开一个 DOS 窗口(因为刚才那个 DOS 窗口已经不能动了),转到
    mysql\bin 目录。  

  5. 输入 mysql 回车,如果成功,将出现 MySQL 提示符 >。  

图片 11

  1. 连接权限数据库: use mysql;

7.
改密码:update user set password=password("123") where user="root";(别忘了最后加分号)

  1. 刷新权限(必须步骤):flush privileges;

  2. 退出 quit

  3. 注销系统,再进入,使用用户名 root 和刚才设置的新密码 123 登录。 

注意字符串是”aaaaa…………bbbbb”,结尾时bbbbb

linux下修改

Windows同样适用。原理和上一个方法一样

  1. 首先编辑mysql安装目录下的 my.cnf 文件:vi my.cnf
    【注:windows下修改的是 my.ini

  2. 找到 [mysqld] 行,在其下方添加一行: skip-grant-tables

图片 12

图片 13

  1. esc 输入 :wq 保存退出

  2. 重启服务 service mysql restart
    【windows下需要打开“服务”并找到mysql重启】

  3. 修改 mysql 密码 set password = password('root'); 或使用 方法 3

  4. 修改完密码后,需要将 my.cnf(my.ini) 文件修改回原样。

  5. 重启服务。完成

我随意定义一个超级长的字符串,可以看出来len是87049,同时用select @str
给他select 出来

图片 14

 

但是我从查询结果select
@str的结果中,将这个字符串复制出来之后,字符串的长度就被截断了,我从上面select出来的结果中复制

发表评论

电子邮件地址不会被公开。 必填项已用*标注