欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL_单表查询、多表查询

程序员文章站 2022-05-09 20:54:02
...

(单表查询)

create table star(
id int auto_increment,
name varchar(50)not null,
money float not null,  
province varchar(20)default null,  
age tinyint unsigned not null,  
sex tinyint not null,  
primary key(id)

)engine = InnoDB默认charset = utf8;

要求:

1,根据表结构使用sql语句创建star表(答案直接根据语句创建即可)

        2,给星表随机插入多条数据(答案直接根据语句插入即可)

3,在星表中找出年龄大于30的明星
select * from star where age> 30;
4,按照省份分组,查出每个省份的明星个数
          选择省,按省份计算星级组(*);
5,找到明星个数大于1的省份
          选择省,按星数计数(*)按省(*)> 1;

6,找到明星个数第二多的省份及个数

                   选择省,按省(按)计数(*)desc limit 1,1从星组中计数(*)

           重点(多表查询)

分类表类别:商品表商品

MySQL_单表查询、多表查询MySQL_单表查询、多表查询

- 1,使用sql语句创建类别和商表,其中categoryid为外键(答案根据语句创建即可)

 create table category(
 id int auto_increment primary key,
 name varchar(30) not null
 );

 create table goods(
 id int auto_increment PRIMARY KEY,
 name varchar(30) not null,
 price float not null default 0, 
 categoryid int not null,
 foreign key(categoryid) REFERENCES category(id)
 );

-- 插入数据 --

INSERT INTO category(name) values('水果'),('零食'),('饮料'),('牛奶'),('饼干'),('生活用品');

INSERT INTO goods(name, price, categoryid) values('苹果', 2, 1),('香蕉', 3, 1),('梨子', 4.5, 1),('口香糖', 5, 2),('泡泡堂', 3, 2),('可乐', 3, 3),('红牛', 6, 3),('娃哈哈', 3, 4),('特仑苏', 8, 4),('益力多', 2, 4);


- 2,找出所有分类
            - SELECT * FROM category;
- 3,找出价格> = 5的商品名称有哪些
            - SELECT name FROM goods where price> = 5;
- 4,找出分类名称为'水果'的所有商品
   - 选择商品。*从类别,商品WHERE category.id = goods.categoryid和category.name ='水果';

        (方法二) - 选择商品。*从类别加入商品ON category.id = goods.categoryid和category.name ='水果';

- 5,找出泡泡堂商品所属的分类名称

     - SELECT category.name,goods.name FROM category,goods WHERE category.id = goods.categoryid and goods.name ='泡泡堂';
- 6,找出每个分类的分类名称及分类的商品数量
        - SELECT category.name,计数(goods.categoryid)FROM类别左JOIN产品ON category.id = goods.categoryid GROUP BY category.id; 
- 7,将所有商品按价格降序排列
                - SELECT * FROM goods ORDER BY price DESC;
-如图8所示,找出每个分类的名称及分类的商品数量,并按商品数量降序排列
       - SELECT category.name,计数(goods.categoryid)FROM类别左JOIN产品ON category.id = goods.categoryid GROUP BY category.id ORDER BY count(goods.categoryid)DESC; 
- 9,找出比'娃哈哈'价格低的商品
                - SELECT * FROM goods WHERE price <(SELECT price FROM goods WHERE name ='娃哈哈');
- 10,找出比平均价格低的商品
                - 从商品中选择AVG(价格);
                (方法二) - SELECT * FROM goods WHERE price <(SELECT AVG(price)FROM goods);
- 11,列出分类名称和这些分类的商品信息,同时也列出那些没有商品的分类
   - SELECT category.name,goods。* FROM category LEFT JOIN goods on category.id = goods.categoryid;

                         小注意:标点符号不要错都是英文格式,每条语句结尾都有' ; '。