精华内容
下载资源
问答
  • 用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。 MySQL版本:Server version: 5.6.31 MySQL Community Server ...

    用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。

    MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL)

    数据库表:a_table、b_table

    主题:内连接、左连接(左外连接)、右连接(右外连接)、全连接(全外连接)

    前提

    建表语句:

    CREATE TABLE `a_table` (
      `a_id` int(11) DEFAULT NULL,
      `a_name` varchar(10) DEFAULT NULL,
      `a_part` varchar(10) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    CREATE TABLE `b_table` (
      `b_id` int(11) DEFAULT NULL,
      `b_name` varchar(10) DEFAULT NULL,
      `b_part` varchar(10) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    表测试数据:



    一、内连接

    关键字:inner join on
    语句:select * from a_table a inner join b_table bon a.a_id = b.b_id;
    执行结果:


    说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

    二、左连接(左外连接)

    关键字:left join on / left outer join on
    语句:select * from a_table a left join b_table bon a.a_id = b.b_id;
    执行结果:


    说明:
    left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。
    左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

    三、右连接(右外连接)

    关键字:right join on / right outer join on
    语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;
    执行结果:


    说明:
    right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
    与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。


    四、全连接(全外连接)

    MySQL目前不支持此种方式,可以用其他方式替代解决。

    五、补充,MySQL如何执行关联查询

    MySQL认为任何一个查询都是一次“关联”,并不仅仅是一个查询需要到两个表匹配才叫关联,所以在MySQL中,每一个查询,每一个片段(包括子查询,甚至基于单表查询)都可以是一次关联。
    当前MySQL关联执行的策略很简单:MySQL对任何关联都执行嵌套循环关联操作,即MySQL先在一个表中循环取出单条数据,然后在嵌套循环到下一个表中寻找匹配的行,依次下去,直到找到所有表中匹配的行为止。然后根据各个表匹配的行,返回查询中需要的各个列。请看下面的例子中的简单的查询:

    查询语句:select tbl1.col1, tbl2.col2 from tbl1 inner join tbl2 using(col3) where tbl1.col1 in (5, 6);
    假设MySQL按照查询中的表顺序进行关联操作,我们则可以用下面的伪代码表示MySQL将如何完成这个查询:
    outer_iter = iterator over tbl1 where col1 in (5, 6)
    outer_row = outer_iter.next
    while outer_row
        inner_iter = iterator over tbl2 where col3 = outer_row.col3
        inner_row = inner_iter.next
        while inner_row
            output [ outer_row.col1, inner_row.col2]
            inner_row = inner_iter.next
        end
        outer_row = outer_iter.next
    end
    上面的执行计划对于单表查询和多表关联查询都适用,如果是一个单表查询,那么只需要上面外层的基本操作。对于外连接,上面的执行过程仍然适用。例如,我们将上面的查询语句修改如下:
    select tbl1.col1, tbl2.col2 from tbl1 left outer join tbl2 using(col3) where tbl1.col1 in (5, 6);
    那么,对应的伪代码如下:
    outer_iter = iterator over tbl1 where col1 in (5, 6)
    outer_row = outer_iter.next
    while outer_row
        inner_iter = iterator over tbl2 where col3 = outer_row.col3
        inner_row = inner_iter.next
        if inner_row
            while inner_row
                output [ outer_row.col1, inner_row.col2]
                inner_row = inner_iter.next
            end
        else
            output [ outer_row.col1, null]
        end
            outer_row = outer_iter.next
    end
    说明:第五部分摘自《高性能MySQL 第三版》








    展开全文
  • mysql远程连接

    千次阅读 2016-05-15 17:10:38
    mysql远程连接配置,mysql无法远程连接。近期电脑装了一个vmware,安装mysql发现远程无法连接,ping操作成功,于是怀疑端口没开放,所以这里说下具体解决方案。打开iptables的配置文件:vi /etc/sysconfig/iptables...

    摘要:分享牛原创,分享牛,我们是快乐的。mysql无法远程,mysql远程失败,mysql授权,虚拟机。mysql远程连接配置,mysql无法远程连接。

    近期电脑装了一个vmware,安装mysql发现远程无法连接,ping操作成功,于是怀疑端口没开放,所以这里说下具体解决方案。

    打开iptables的配置文件:vi /etc/sysconfig/iptables

    添加

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306  -j ACCEPT

    然后重启防火墙命令service iptables restart

    然后telnet ip 3306 如果成功,说明端口开放了。

    接下来如果还是连接不上去的话,就设置mysql的远程访问权限,mysql的访问权限设置参考http://blog.csdn.net/qq_30739519/article/details/51166192

    分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519)

    展开全文
  • Mysql—— 内连接、左连接、右连接以及全连接查询

    万次阅读 多人点赞 2018-10-05 23:03:31
    一、内连接查询 inner join 关键字:inner join on 语句:select * from a_table a inner join b_table b on a.a_id = b.b_id; 说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集...

    获取 boy 、girl 表下载地址

    一、内连接查询  inner join

    关键字:inner  join   on

    语句select * from a_table a inner join b_table b on a.a_id = b.b_id;

    说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。

    案例解释:在boy表和girl 表中查出两表 hid 字段一致的姓名(gname,bname),boy表和girl 表如下:

          

    采用内连接查询方式:

    SELECT boy.hid,boy.bname,girl.gname FROM boy INNER JOIN girl ON girl.hid = boy.hid;

    查询结果如下:

    二、左连接查询 left join

    关键字:left join on / left outer join on

    语句:SELECT  * FROM a_table a left join b_table b ON a.a_id = b.b_id;

    说明: left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。 左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

    案例解释:在boy表和girl 表中左连接查询,boy表和girl 表如下:

          

    采用内连接查询方式:

    SELECT boy.hid,boy.bname,girl.gname FROM boy LEFT JOIN girl ON girl.hid = boy.hid;

    查询结果如下:

    三、右连接 right join

    关键字:right join on / right outer join on

    语句:SELECT  * FROM a_table a right outer join b_table b on a.a_id = b.b_id;

    说明:right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。

    案例解释:在boy表和girl 表中右连接查询,boy表和girl 表如下:

          

    采用内连接查询方式:

    SELECT boy.hid,boy.bname,girl.gname FROM boy RIGHT JOIN girl ON girl.hid = boy.hid;

    查询结果如下:

    四、全连接 union

    关键字:union /union all

    语句:(select colum1,colum2...columN from tableA ) union (select colum1,colum2...columN from tableB )

             或 (select colum1,colum2...columN from tableA ) union all (select colum1,colum2...columN from tableB );

    union语句注意事项:

             1.通过union连接的SQL它们分别单独取出的列数必须相同;

             2.不要求合并的表列名称相同时,以第一个sql 表列名为准;

             3.使用union 时,完全相等的行,将会被合并,由于合并比较耗时,一般不直接使用 union 进行合并,而是通常采用union all 进行合并;

             4.被union 连接的sql 子句,单个子句中不用写order by ,因为不会有排序的效果。但可以对最终的结果集进行排序;

               (select id,name from A order by id) union all (select id,name from B order by id); //没有排序效果

               (select id,name from A ) union all (select id,name from B ) order by id; //有排序效果

    案例解释:将a表和b表合并,表结构如下:

              

    采用 union 全连接:

    union会自动将完全重复的数据去除掉,a、b表中"c"的值都为15,所以只显示一行。

    采用 union all 全连接:

    union all会保留那些重复的数据;

    左右连接练习题:

    根据给出的表结构按要求写出SQL语句。t 表(即Team表)和 m 表(即Match表) 的结构如下:

         

    t 表(即Team表)和 m 表(即Match表) 的内容如下:

             

    t 表和 m 表下载地址

    m 表(即Match表) 的 hostTeamID 与 guestTeamID 都与 t 表(即Team表) 中的 teamID 关联。请查出 2006-6-1 到2006-7-1之间举行的所有比赛,并且用以下形式列出: 拜仁   2:0  不来梅  2006-6-21

    ===============================================================================

    解决方案:

    第一步:先以 m 表左连接 t 表,查出 m 表中 hid 这列对应的比赛信息:

    SELECT m.mid,t.tname,m.mres,m.matime as time FROM m LEFT JOIN t ON t.tid = m.hid;

    查询结果记为结果集 t1 ,t1 表如下:

    第二步:先以 m 表左连接 t 表,查出 m 表中 gid 这列对应的比赛信息:

    SELECT m.mid,t.tname,m.mres,m.matime FROM m LEFT JOIN t ON t.tid = m.gid;

    查询结果记为结果集 t2 ,t2 表如下:

    第三步:以结果集 t1 为基础左连接查询结果集 t2,查询条件为两者比赛序号(mid)相同。

    SELECT t1.tname,t1.mres,t2.tname,t1.time FROM 
    (SELECT m.mid,t.tname,m.mres,m.matime as time FROM m LEFT JOIN t ON t.tid = m.hid) 
    as t1 
    LEFT JOIN 
    (SELECT m.mid,t.tname,m.mres,m.matime as time FROM m LEFT JOIN t ON t.tid = m.gid) 
    as t2 
    ON t1.mid = t2.mid WHERE t1.time BETWEEN '2006-06-01' AND '2006-07-01';

    查询结果如下:

    全连接练习题:

    A表和B表结构如下,请将两表合并:

                

    合并要求:A表中a:5,B表中a:5,因此合并后表中a对应的值为10;要求查出的结果样本如下:

    采用 union all 全连接,然后使用from 子查询:

    SELECT id,SUM(num) as num FROM ((SELECT id,num FROM a) UNION ALL(SELECT id,num FROM b)) as tb GROUP BY id;
    

     

     

    展开全文
  • 今天在电脑上安装了Mysql 8.0.11,然后又屁颠屁颠地安装了Navicat for MySQL,打开Navicat准备链接数据库的时候出现了如下提示: 上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是...

    今天在电脑上安装了Mysql 8.0.11,然后又屁颠屁颠地安装了Navicat for MySQL,打开Navicat准备链接数据库的时候出现了如下提示:

    上网搜索解决方案,网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password, 

    解决问题方法有两种:

    方法1.升级navicat驱动;

    方法2.把mysql用户登录密码还原成mysql_native_password. 

    这里采用方法2解决,具体操作步骤如下:

    1.打开命令行小黑屏,进入MySQL的bin目录,然后输入mysql -u root -p,输入密码

     

    2.然后输入

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码,password为自定义密码 

    FLUSH PRIVILEGES; #刷新权限

    (温馨提示:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #这行命令实际上应该为设置密码永不过期,而不是修改加密规则,当年水平有限,直接copy网上的资料,误导了一些网友,深感抱歉。印象中,当时解决这个问题时,我也没有执行这行命令,具体可参考下方截图)

    3.输入刚刚修改的密码,再次测试连接,惊喜地发现连接成功

    展开全文
  • mysql命令行连接

    万次阅读 2018-05-04 10:12:23
    命令行连接 mysql -u 用户名 -p密码 -h服务器IP地址 -P服务器端MySQL端口号 -D 数据库名 注意: (1)服务器端口标志-P一定要大些以区别于用户-p,如果直接连接数据库标志-D也要大写; (2)如果要直接输入密码-p...
  • mysql连接、自然连接、外连接的区别

    万次阅读 多人点赞 2018-12-02 23:57:12
    连接、自然连接、外连接的区别
  • MySQL之——服务器保持与MySQL连接

    千次阅读 2015-07-22 19:13:13
    服务器程序经常要访问数据库,并且服务器程序是长时间保持运行的,mysql有一个特点,当连接上数据库后不做任何操作,默认8小时候会自动关闭休眠的连接!一般情况下很难预料什么时候程序会执行数据库操作,如果连接被...
  • 易语言连接Mysql

    千次阅读 2019-12-12 22:25:32
    最近在写游戏的辅助工具研究了下易语言,下面就说下如何连接Mysql。 .版本 2 .支持库 mysql .支持库 spec Mysql句柄 = 连接MySql (“127.0.0.1”, “root”, “root123”, “test”, 3306) 查询部门语句 = ...
  • MySQL测试连接

    千次阅读 2019-11-17 23:33:49
    连接——>常规——>连接名(随便填)——>ip——>端口(3306)——>用户名(root)——>密码(MySQL数据库安装的时候所设定)——>测试连接——>连接成功。 ...
  • vs2019连接MySql连接字符串

    千次阅读 2019-10-23 14:55:56
    要在VS中连接MySql需要一个叫MySql.Dat.dll的文件 MySqlConnection conn = new MySqlConnection(“server=localhost;user id=root;pwd=1234;database=mydb02;charset=utf8”)
  • MySQL8.0.16 连接java

    千次阅读 2019-07-04 11:10:11
    文章目录MySQL8.0.16 连接java环境配置 MySQL8.0.16 连接java 环境 mysql版本:Server version: 8.0.16 jdbc连接jar包:mysql-connector-java-8.0.16.jar jdk:JavaSE-1.8 配置 driver:...
  • mysql自己的连接mysql连接字符串我们是知道的,大致如server=localhost;User Id=user;password=123456;Database=test;Charset=utf8;这样。 而这个字符串中还有多种配置,比如配置是否使用线程池等。 如果显式地...
  • PHP MySQL 持久连接mysql_pconnect)

    千次阅读 2018-10-16 16:10:10
    PHP MySQL 持久连接mysql_pconnect) 先来一段 PHP 连接 MySQL 的经典代码: 1 2 3 4 5 6 7 8 <?php $con = mysql_connect("localhost", &...
  • MySQL连接命令

    千次阅读 2020-11-16 13:40:29
    一、MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格) C:>mysql -h localhost -u root -p123 二、MySQL 连接远程数据库(192.168.0.201),端口“3306”,用户名为...
  • beego MySQL数据库连接

    万次阅读 2017-02-16 10:55:39
    beego MySQL数据库连接池,自带的orm模块连接池功能说明
  • Navicat for Mysql远程连接Mysql

    千次阅读 2019-06-13 17:46:01
    下载Navicat for Mysql https://www.cr173.com/soft/38153.html 准备阶段 首先确保你的linux中mysql是否正常,如建立一个表等基本操作是否可执行。 还有,Mysql不可以是临时密码,如果是临时密码,则用以下命令设置...
  • 前一段时间安装了最新的mysql 8.0.11,然后启动一个项目的时候报错信息如下: [ERROR] 2018-08-14 17:28:21,246 method:com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:695) init datasource ...
  • QT与MYSQL连接

    万次阅读 多人点赞 2018-10-16 10:46:51
    QT连接MYSQL 首先创建项目,在.pro文件中添加代码 QT +=sql 例如:我加在了最后 代码 代码注释够详细了,我就不过多赘述了,有疑问可以在最下方留言哦! .h文件 #include <QSqlDatabase&...
  • linux修改mysql最大连接

    千次阅读 2019-05-29 20:43:21
    第一步:进入mysql安装目录 /usr/...第三步:查看mysql最大连接数量 show variables like 'max_connections'; quit; 第四步:在文件etc/my.cnf中设置Mysql 最大连接数 vi /etc/my.cnf 第五步:重启mysql sy...
  • MySQL连接

    千次阅读 2017-09-03 13:09:31
    刚看到SQL连接符这块,发现按照书上(SQL查询艺术)讲的使用+作为连接符在MySQL中一直出错,原来MySQL连接符与SQL Server不一样,SQL Server使用+作为连接符,而MySQL则使用concat(str1,str2,...)函数 例:SELECT ...
  • 为了演示方便,提前准备了两张表...连接分为:内连接、外连接、交叉连接 一、内连接( 最常用 )  定义:仅将两个表中满足连接条件的行组合起来作为结果集。   关键词:INNER JOIN  select * from employee
  • Navicat 连接 MySQL

    万次阅读 多人点赞 2018-08-17 12:42:51
    简述 Navicat 是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本。...在使用 Navicat 远程连接 MySQL 数据库时,经常会出现一些错误,今天我们来分享一下经验。 | 版权声明:一...
  • mysql修改连接

    千次阅读 2019-06-04 20:11:10
    一、查看相关连接数 -- 数据库最大连接数 show variables like '%max_connections%'; -- 已使用连接数 show global status like 'Max_used_connections'; -- 连接线程数 show status like 'Threads%'; -- 连接...
  • 打开Navicat for Mysql,新建连接--测试连接出现以下情况: 问题出现原因: 可能是MySQL数据库服务没有启动,启动mysqld.exe即可,已多次亲测。也可能是其他原因,但是第一种原因最常见。 解决方法: 1.打开 ' ...
  • MySqlConnection conn = new MySqlConnection(connstr) //新建一个MySqlConnection数据库连接 1、mysql> show status like '%connect%';  Connections,试图连接到(不管是否成功)MySQL服务器的连接数...
  •  今天想用navicat远程连接虚拟机中的MySQL数据库,一直连不上,在网上搜索了一下,发现原因是MySQL对远程用户登陆的授权问题。这里说一下我的解决方法。(本人小白)  首先,我用navicat去远程链接我虚拟机中的...
  • mysql连接连接连接的区别

    万次阅读 2018-07-31 09:18:42
    1.内连接,显示两个表中有联系的所有数据; 2.左链接,以左表为参照,显示所有数据,右表中没有则以null显示 3.右链接,以右表为参照显示数据,,左表中没有则以null显示 例子: -----------------------------------...
  • VS2017+MySQL8.0+MySQLconnector连接数据库

    万次阅读 2018-07-23 11:20:24
    参考: 官网VisualStudio连接MySQL教程 使用MySQL connector/C++链接MySQL数据库 C++ API方式连接mysql数据库实现增删改查 ...实验室需要使用C++进行数据库应用开发,现将MySQL连接的过程记录如下:...
  • nodeJS之mysql数据库连接

    万次阅读 多人点赞 2017-05-22 09:34:18
    首先链接mysql数据库之前需要去npm包管理器中安装msyql模块,该模块支持mysql 5.7+的数据库;然后安装好mysql 5.7+版本的数据库;安装数据库参考: ...nodeJS连接mysql数据库一般需要先配置mysql配置文件;(以下
  • mysql客户端连接oracle

    千次阅读 2018-11-05 14:25:01
    mysql客户端连接oracle  1.链接名:172.22.0.84   连接类型:basic   主机名或ip地址:172.22.0.84   端口:1521   service name/sid: devdb   单选service name   用户名:xxx   密码:xxx  2.配置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,027,129
精华内容 410,851
关键字:

mysql半连接

mysql 订阅