标题:mysql 学习第12天 left join嵌套使用和列操作

-------------------------------------------------------------------------------------------------------------------------------

时间:2012/4/30 1:18:25

-------------------------------------------------------------------------------------------------------------------------------

内容:

create table goods
(goods_id int primary key auto_increment,
goods_name varchar(20),cate_id int,brand_id int,price decimal(7,2) not null default 0.01);

 

创建一个goods表 里面的主键是goods_id 这里的auto_increment不要拼写错误
包含商品名称商品id 品牌id 产品类型id价格 基本是以数字为住 方便快速查询同类商品(where cateid=3 比where catename=手机 效率要快很多)和分类 节约空间 用数字代表长的字符串
修改商品分类信息 只用去调用的信息里修改就可以 不影响主表 特别是主表数据几万条 我只用修改id对应的名称即可 不用update几万条数据


insert into goods
(goods_name,cate_id,brand_id,price)
values
('联想手机',1,1,1334.44),
('三星手机',1,2,2334.44),
('苹果电脑',2,3,7334.44),
('苹果手机',1,3,5334.44);

给商品表信息加一些数据


create table category
(cate_id int,cate_name varchar(20));
insert into category
values
(1,'手机'),
(2,'电脑');

创建一个类别名称表 给商品表调用

create table brand
(brand_id int,brand_name varchar(20));
insert into brand
values
(1,'联想'),
(2,'三星'),
(3,'苹果');
创建一个品牌名称表 方便调用品牌名

select * from goods left join category on cate_id=category.cate_id;
我现在要根据商品表 主表里的信息查找对应的商品类别名称  这里面的cate-id要指明 要不会分校不清楚

select * from (select goods_id,goods_name,brand_id,goods.cate_id,category.cate_name from goods left join category on goods.cate_id=category.cate_id) as temp left join brand on temp.brand_id=brand.brand_id;
我这里要做一个2次调用 嵌套链接 把前面的结果当场一个临时表 然后用as 给他起个名字 再用这个临时的temp表和品牌表一起做左链接 调用

select * from goods left join category on goods.cate_id=category.cate_id left join brand on goods.brand_id=brand.brand_id;

或者直接在后面写 因为mysql计算顺序的时候 首先是计算from后面的得到原始数据 再安装select去除相应的列
再用where判断 所以我不用带括号直接 left join 再接一个left join

关于列修改
增加列是
alter table tablename add colomnname int after|first
来定位新增加的列
例如
alter table goods add test int first;

修改列
alter table goods test stock int;

删除
alter table goods drop stock;

create table goods
(goods_id int primary key auto_increment,
goods_name varchar(20),cate_id int,brand_id int,price decimal(7,2) not null default 0.01);

 

创建一个goods表 里面的主键是goods_id 这里的auto_increment不要拼写错误
包含商品名称商品id 品牌id 产品类型id价格 基本是以数字为住 方便快速查询同类商品(where cateid=3 比where catename=手机 效率要快很多)和分类 节约空间 用数字代表长的字符串
修改商品分类信息 只用去调用的信息里修改就可以 不影响主表 特别是主表数据几万条 我只用修改id对应的名称即可 不用update几万条数据


insert into goods
(goods_name,cate_id,brand_id,price)
values
('联想手机',1,1,1334.44),
('三星手机',1,2,2334.44),
('苹果电脑',2,3,7334.44),
('苹果手机',1,3,5334.44);

给商品表信息加一些数据


create table category
(cate_id int,cate_name varchar(20));
insert into category
values
(1,'手机'),
(2,'电脑');

创建一个类别名称表 给商品表调用

create table brand
(brand_id int,brand_name varchar(20));
insert into brand
values
(1,'联想'),
(2,'三星'),
(3,'苹果');
创建一个品牌名称表 方便调用品牌名

select * from goods left join category on cate_id=category.cate_id;
我现在要根据商品表 主表里的信息查找对应的商品类别名称  这里面的cate-id要指明 要不会分校不清楚

select * from (select goods_id,goods_name,brand_id,goods.cate_id,category.cate_name from goods left join category on goods.cate_id=category.cate_id) as temp left join brand on temp.brand_id=brand.brand_id;
我这里要做一个2次调用 嵌套链接 把前面的结果当场一个临时表 然后用as 给他起个名字 再用这个临时的temp表和品牌表一起做左链接 调用

select * from goods left join category on goods.cate_id=category.cate_id left join brand on goods.brand_id=brand.brand_id;

或者直接在后面写 因为mysql计算顺序的时候 首先是计算from后面的得到原始数据 再安装select去除相应的列
再用where判断 所以我不用带括号直接 left join 再接一个left join

关于列修改
增加列是
alter table tablename add colomnname int after|first
来定位新增加的列
例如
alter table goods add test int first;

修改列
alter table goods test stock int;

删除
alter table goods drop stock;