美文网首页
PHP -- 数据库7 -- 多表间查询

PHP -- 数据库7 -- 多表间查询

作者: 潘肚饿兵哥哥 | 来源:发表于2019-08-19 22:43 被阅读0次

truncate table tablename
tablename是表名 清空数据,会重置自增长的下标
delect from tablename
删除所有数据,保留主键原本下标

<?php
//header("Content-type:text/html;charset=utf-8");
 
 PHP使用mysqli函数库操作MYSQL数据库:
    操作步骤:
7个步骤:
 
 增删改语句
    添加:
        insert  into tablename(列,...) value(值)前面的列数量和后面的值数量要匹配
    
    修改:
        update tablename set 列=值,...[where 修改条件](值要看类型,要对应的类型,最后一个不要写逗号,中括号里参数,可以不写但建议写,不写的话全部都改掉了)
    
    删除:
        delect from tablename [where 删除条件]
        
    表有一个主键,主键是自增长的,用delect删除掉项之后,主键还是保留,所以再插入数据之后就不会从1开始,下面这种删除数据方法会从1开始
    
        truncate table tablename//tablename是表名 清空数据,会重置自增长的下标
        delect from tablename //删除所有数据,保留主键原本下标
        
        
        
        
    select语句:
        select 列 from 表
        where 表达式(比较和逻辑运算) in not in between and like % _   select后面没有出现的列可以用
        group by (count(*) max(列)求最大 min()求最小 avg()求平均 sum()求和)
        having 写法和where写法一样,select后面出现的列having才能用(having针对临时表)
        order by 列1(asc/desc), 列2(asc/desc),...
        limit start, len,   limit 5 == limit 0,5默认从0开始,这个数字是索引


\color{rgba(254, 67, 101, .8)}{多表之间查询:}
\color{rgba(254, 67, 101, .8)}{新建一个表category,对应goods表商品类目}

#栏目表
    create table category(
        `cat_id` smallint(5) unsigned not null auto_increment,
        `cat_name` varchar(90) not null default '',
        primary key(`cat_id`) 
    )engine=myisam default charset=utf8;


insert into category
values
(1, '手机类型'),
(2, 'CDMA手机'),
(3, 'GSM手机'),
(4, '3G手机'),
(5, '双模手机'),
(6, '手机配件'),
(7, '充电器'),
(8, '耳机'),
(9, '电池'),
(11, '读卡器和内存卡'),
(12, '充值卡'),
(13, '小灵通/固话充值卡'),
(14, '移动手机充值卡'),
(15, '联通手机充值卡');

   多表之间的查询:
       连接查询: 左连接(left join) 右连接(right join) 内连接([inner] join)只写一个join就是内连接
       无论什么连接都要加 on 连接条件,
       
       select 列 from table1 left join table2 on 连接条件 where ...
左连接:主表写在左边      

   示例:select goods.goods_name from goods left join category on goods.cat_id=category.cat_id;
让两个表的cat_id相等,才能拿出来
   
   这样写每次都要写表名,很麻烦,所以可以取一个别名G/C,这样写起来容易一些:
       select g.goods_name,g.shop_price,c.cat_name from goods g left join category c on g.cat_id=c.cat_id;
       
goods g 表示给goods取一个别名 g 
goods as g 也是给goods取一个别名 g 
两者是等价的
所以:
select goods.goods_name, goods.shop_price,category.cat_name from goods g left join category c on goods.cat_id=category.cat_id;
等价于:
select g.goods_name,g.shop_price,c.cat_name from goods g left join category c on g.cat_id=c.cat_id;

?>

\color{rgba(254, 67, 101, .8)}{查询分类名称、商品名称、本店价格}

分类名称在category表,商品名称、本店价格在goods表

mysql> select g.goods_name,g.shop_price,c.cat_name from goods g left join category c on g.cat_id=c.cat_id;
+-------------------------+------------+-------------------+
| goods_name              | shop_price | cat_name          |
+-------------------------+------------+-------------------+
| KD876                   |    1388.00 | 3G手机               |
| 诺基亚N85原装充电器                  |      58.00 | 耳机                  |
| 诺基亚原装5800耳机                 |      68.00 | 耳机                  |
| 索爱原装M2卡读卡器                    |      20.00 | 读卡器和内存卡               |
| 盛创KINGMAX内存卡             |      42.00 | 读卡器和内存卡               |
| 诺基亚N85原装立体声耳机                  |     100.00 | 耳机                  |
| 飞利浦9@9v                    |     399.00 | GSM手机              |
| 诺基亚E66                    |    2298.00 | GSM手机              |
| 索爱C702c                   |    1328.00 | GSM手机              |
| 索爱C702c                   |    1300.00 | GSM手机              |
| 摩托罗拉A810                   |     983.00 | GSM手机              |
| 诺基亚5320 XpressMusic       |    1311.00 | GSM手机              |
| 诺基亚5800XM                 |    2625.00 | 3G手机               |
| 摩托罗拉A810                   |     788.00 | GSM手机              |
| 恒基伟业G101                  |     823.33 | CDMA手机             |
| 夏新N7                      |    2300.00 | GSM手机              |
| 夏新T5                      |    2878.00 | 3G手机               |
| 三星SGH-F258                |     858.00 | GSM手机              |
| 三星BC01                    |     280.00 | GSM手机              |
| 金立 A30                    |    2000.00 | GSM手机              |
| 多普达Tuch HD                |    5999.00 | GSM手机              |
| 诺基亚N96                    |    3700.00 | 双模手机               |
| P806                    |    2000.00 | GSM手机              |
| 小灵通/固话50元充值卡                |      48.00 | 小灵通/固话充值卡             |
| 小灵通/固话20元充值卡                |      19.00 | 小灵通/固话充值卡             |
| 联通100元充值卡                  |      95.00 | 联通手机充值卡               |
| 联通50元充值卡                   |      45.00 | 联通手机充值卡               |
| 移动100元充值卡                  |      90.00 | 移动手机充值卡               |
| 移动20元充值卡                   |      18.00 | 移动手机充值卡               |
| 摩托罗拉E8                     |    1337.00 | GSM手机              |
| 诺基亚N85                    |    3010.00 | GSM手机              |
+-------------------------+------------+-------------------+
31 rows in set (0.00 sec)

相关文章

网友评论

      本文标题:PHP -- 数据库7 -- 多表间查询

      本文链接:https://www.haomeiwen.com/subject/paqlsctx.html