mysql查询(select)进阶之单表查询
一提到关于数据的操作最多的无疑就是增删改查,今天我们一起来复习下mysql的各种查询,从简单到复杂,一方面是回忆技术,另一方面是为了帮助更多才接触mysql的朋友,废话不多说开始。
一,建表,代码如下,可以直接运行
1.分类表
create table category(
cid varchar(32) primary key,
cname varchar(100)
);
2.商品表
create table product(
pid varchar(32) primary key,
pname varchar(40),
price double,
category_id varchar(32)
);
alter table product add foreign key(category_id) references category(cid);
3.添加外键列
alter table product add category_id varchar(32);
4.添加约束
alter table product add constraint product_fk foreign key(category_id) references category(cid);
5.订单表
create table orders(
oid varchar(32) primary key,
totalprice double
);
6.订单项表
create table orderitem(
oid varchar(50),
pid varchar(50)
);
7.联合主键
alter table orderitem add primary key(oid,pid);
8.订单表和订单项表的主外键关系
alter table orderitem add constraint orderitem_orders_fk foreign key(oid) references orders(oid);
9.商品表和订单项表的主外键关系
alter table orderitem add constraint orderitem_product_fk foreign key(pid) references product(pid);
insert into category(cid,cname) values('c001','家电');
insert into category(cid,cname) values('c002','服饰');
insert into category(cid,cname) values('c003','化妆品');
insert into product(pid,pname,price,category_id) values('p001','联想','5000','c001');
insert into product(pid,pname,price,category_id) values('p002','海尔','5000','c001');
insert into product(pid,pname,price,category_id) values('p003','雷神','5000','c001');
insert into product(pid,pname,price,category_id) values('p004','JACK JONES','800','c002');
insert into product(pid,pname,price,category_id) values('p005','真维斯','200','c002');
insert into product(pid,pname,price,category_id) values('p006','花花公子','440','c002');
insert into product(pid,pname,price,category_id) values('p007','劲霸','2000','c002');
insert into product(pid,pname,price,category_id) values('p008','香奈儿','800','c003');
insert into product(pid,pname,price,category_id) values('p009','相宜本草','200','c003');
结果如下
建表完成,忘记说了,表之间的约束关系,建表的代码中有,可以自己画一下图。
现在执行下简单的查询操作,代码形式 select 要查询的字段 from 目标表
执行select * from category 结果如下
1.1 条件查询 代码格式 select xxxx from 目标表 where xxxxx
运行select pname as p from product where price > 800;结果如下
1.2去重复 关键字 distinct
1.3排序查询,两种升序降序 关键字asc desc
1.4模糊查询 关键字like 实例,查询名称有"公"的商品信息并且按照价格降序排序
模糊查询有一个问题就是占位符和匹配,这里我没有整理。
1.5函数 求平均值 求和等等 列举 select sum(查询字段) from 目标表 ,如下
1.6分组查询 关键字 group by
实例1, 根据category_id字段分组,分组后统计商品的个数。
实例2,根据category_id分组,分组统计每组商品的平均价格,并且平均价格大于2000元。
注意一旦涉及到分组的条件查询关键字就不是where 而是having 如下