mysql 基础操作2

编程入门 行业动态 更新时间:2024-10-20 00:38:45

mysql 基础<a href=https://www.elefans.com/category/jswz/34/1770947.html style=操作2"/>

mysql 基础操作2

非链接

select table1.name,table2.age from table1,table2 where table1.id = table2.id;



左连接,右连接,内连接

 

                现有表a有10条数据,表b有8条数据,那么表a与表b的笛尔卡积是多少?

                    select * from ta,tb   //输出结果为8*10=80条

                  

            1、左连接

               以左表为准,去右表找数据,如果没有匹配的数据,则以null补空位,所以输出结果数>=左表原数据数

 

                语法:select n1,n2,n3 from ta left join tb on ta.n1= ta.n2 [这里on后面的表达式,不一定为=,也可以>,<等算术、逻辑运算符]【连接完成后,可以当成一张新表来看待,运用where等查询

                 #取出价格最高的五个商品,并显示商品的分类名称

                select goods_id,goods_name,goods.cat_id,cat_name,shop_price from goods left join category on goods.cat_id = category.cat_id order by  shop_price desc limit 5;        

           2、右连接

                a left join b 等价于 b right join a

                推荐使用左连接代替右连接

                语法:select n1,n2,n3 from ta right join tb on ta.n1= ta.n2

           3、内连接

                查询结果是左右连接的交集,【即左右连接的结果去除null项后的并集(去除了重复项)】

                mysql目前还不支持 外连接(即左右连接结果的并集,不去除null项)

                语法:select n1,n2,n3 from ta inner join tb on ta.n1= ta.n2

        #########

                 例:现有表a

                        name  hot

                         a        12

                         b        10

                         c        15

                    表b:

                        name   hot

                          d        12

                          e        10

                          f         10

                          g        8

                    表a左连接表b,查询hot相同的数据

                    select a.*,b.* from a left join b on a.hot = b.hot

                    查询结果:

                        name  hot   name  hot

                          a       12     d       12

                          b       10     e       10

                          b       10     f        10

                          c       15     null    null

                    从上面可以看出,查询结果表a的列都存在,表b的数据只显示符合条件的项目        

                      再如表b左连接表a,查询hot相同的数据

                        select a.*,b.* from b left join a on a.hot = b.hot

                        查询结果为:

                        name  hot   name  hot

                          d       12     a       12

                          e        10    b       10

                          f        10     b      10

                          g        8     null    null

                    再如表a右连接表b,查询hot相同的数据

                        select a.*,b.* from a right join b on a.hot = b.hot

                        查询结果和上面的b left join a一样

                ###练习,查询商品的名称,所属分类,所属品牌

                    select goods_id,goods_name,goods.cat_id,goods.brand_id,category.cat_name,brand.brand_name from goods left join category on goods.cat_id = category.cat_id left join brand on goods.brand_id = brand.brand_id limit 5;

                    理解:每一次连接之后的结果都可以看作是一张新表




like

%代表任意多个字符  _代表一个字符 在 MySQL中,SQL的模式缺省是忽略大小写的


mysql_query(query,connection)

mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。

对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。

非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。很有可能一条查询执行成功了但并未影响到或并未返回任何行。


mysql_fetch_assoc() 函数从结果集中取得一行作为关联数组。

返回根据从结果集取得的行生成的关联数组,如果没有更多行,则返回 false。

语法

mysql_fetch_assoc(data)

参数 描述

data 必需。要使用的数据指针。该数据指针是从 mysql_query() 返回的结果。


$query='select avny.name,movie.moviename from avny left join movie on avny.name =                 movie.name';

$result = mysql_query($query) or die(mysql_error($db));

while($row = mysql_fetch_assoc($result)){

foreach($row as $key => $value){

echo $key." ".$value."<br/>";

}

}







转载于:

更多推荐

mysql 基础操作2

本文发布于:2024-03-06 01:28:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713995.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:操作   基础   mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!