MySQL典型查询例题(单表查询、多表查询)

SQL练习(单表查询)

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 default charset=utf8;

要求:

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

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

3, 在star表中找出年龄大于30的明星
select * from star where age>30;
4, 按照省份分组,查出每个省份的明星个数
          select province,count(*) from star group by province;
5, 找到明星个数大于1的省份
          select province, count(*) from star  group by province having count(*)>1;

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

                   select province,count(*) from star group by province order by count(*) desc limit 1,1

           重点(多表查询)

分类表category:                                                            商品表goods


-- 1, 使用sql语句创建category表和goods表,其中categoryid为外键(答案根据语句创建即可)
-- 2, 找出所有分类
            -- SELECT * FROM category;
-- 3, 找出价格>=5的商品名称有哪些
            -- SELECT name FROM goods where price>=5;
-- 4, 找出分类名称为‘水果’的所有商品
   -- SELECT goods.* FROM category,goods WHERE category.id=goods.categoryid and category.name='水果';

        (方法二)-- SELECT goods.* FROM category JOIN goods ON category.id=goods.categoryid and category.name='水果';

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

     -- SELECT category.name, goods.name FROM category,goods WHERE category.id=goods.categoryid and goods.name='泡泡堂';
-- 6, 找出每个分类的分类名称及分类的商品数量
        -- SELECT category.name, count(goods.categoryid) FROM category left JOIN goods ON category.id=goods.categoryid GROUP BY category.id; 
-- 7, 将所有商品按价格降序排列
                -- SELECT * FROM goods ORDER BY price DESC;
-- 8, 找出每个分类的名称及分类的商品数量,并按商品数量降序排列
       -- SELECT category.name, count(goods.categoryid) FROM category left JOIN goods 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, 找出比平均价格低的商品
                -- SELECT AVG(price) FROM goods;
                (方法二)-- 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;

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

猜你喜欢

转载自blog.csdn.net/g_sangsk/article/details/80453277