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');

结果如下

mysql查询(select)进阶之单表查询

 建表完成,忘记说了,表之间的约束关系,建表的代码中有,可以自己画一下图。

现在执行下简单的查询操作,代码形式 select  要查询的字段 from 目标表

执行select * from category  结果如下

mysql查询(select)进阶之单表查询

 1.1 条件查询  代码格式 select  xxxx from 目标表  where xxxxx

运行select pname as p from product where price > 800;结果如下

mysql查询(select)进阶之单表查询

 1.2去重复 关键字 distinct

 mysql查询(select)进阶之单表查询

 1.3排序查询,两种升序降序 关键字asc  desc

mysql查询(select)进阶之单表查询

 1.4模糊查询 关键字like   实例,查询名称有"公"的商品信息并且按照价格降序排序

mysql查询(select)进阶之单表查询

模糊查询有一个问题就是占位符和匹配,这里我没有整理。

1.5函数  求平均值 求和等等 列举 select sum(查询字段) from 目标表 ,如下

mysql查询(select)进阶之单表查询

 1.6分组查询 关键字 group by

实例1,  根据category_id字段分组,分组后统计商品的个数。

 mysql查询(select)进阶之单表查询

 实例2,根据category_id分组,分组统计每组商品的平均价格,并且平均价格大于2000元。

 注意一旦涉及到分组的条件查询关键字就不是where 而是having  如下

 mysql查询(select)进阶之单表查询