zoukankan      html  css  js  c++  java
  • MySQL学习笔记(18)——多表更新、连接

    前置工作

    新建一张物品类别表:

     CREATE TABLE IF NOT EXISTS tdb_goods_cates
         (
         cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
         cate_name VARCHAR(40) NOT NULL
         );

    从tdb_goods表中查出所有类别:

     SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;

    使用INSERT tb_name SELECT …添加记录:

    INSERT tdb_goods_cates(cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;

    于是,tdb_goods_cates数据如下:
    select *


    多表更新

    参照另外的表来对本表的更新。
    UPDATE table_references
    SET col_name1={expr1 | DEFAULT}
    [, col_name2={expr2 | DEFAULT}] …
    [WHERE where_condition]

    连接

    MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作。
    连接类型:

    • inner join,内连接
      在mysql,join,cross join和inner join 是等价的。
    • left [outer] join,左外连接
    • right [outer] join,右外连接

    语法结构:
    table_references {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN} table_reference ON conditional_expr

    demo:
    UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate=cate_name SET goods_cate=cate_id;
    参照tdb_goods_cates表的cate_name来修改tdb_goods的goods_cate。
    jinner join


    CREATE … SELECT

    创建数据表通知书将查询结果写入到数据表
    CREATE TABLE [IF NOT EXISTS] tb_name
    [(create_definition,…)]
    select_statement

    demo:
    目标:把tdb_goods的brand_name参照tdb_goods_brands表更新成ID形式
    tdb_goods_brands表,创建:

     CREATE TABLE tdb_goods_brands
         (
         brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
         brand_name VARCHAR(40) NOT NULL
         )
         SELECT brand_name FROM tdb_goods GROUP BY brand_name;
    1. SELECT * FROM tddb_goods_brands;
    2. UPDATE tdb_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brand_name=b.brand_name SET g.brand_name=b.brand_id;
      update

    PS:记得修改列的数据类型来减少字节数的使用。

    ALTER TABLE tdb_goods
         CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,
         CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;

    change

  • 相关阅读:
    Found class xxx.xxx.xxx, but interface was expected
    String的length()和getBytes().length
    springboot shutdown(停机)
    关于Java代码简化的小技巧
    数据库的简单查询
    数据库TSQL语句
    环境搭建及wamp空密码修改
    js windows对象
    JS函数的其他用法【备于取用】
    js递归
  • 原文地址:https://www.cnblogs.com/famine/p/9124701.html
Copyright © 2011-2022 走看看