MySQL_单表查询、多表查询

本文通过具体实例介绍了SQL的基本操作,包括创建表、插入数据、单表查询及多表查询等核心技能,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(单表查询)

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从星组中计数(*)

           重点(多表查询)

分类表类别:商品表商品

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值