SQL语句练习题集合

类京东练习题

创建数据库、创建表
-- 创建 "京东" 数据库
create database jing_dong charset=utf8;

-- 使用 "京东" 数据库
use jing_dong;

-- 创建一个商品goods数据表
create table goods(
    id int unsigned primary key auto_increment not null,
    name varchar(150) not null,
    cate_name varchar(40) not null,
    brand_name varchar(40) not null,
    price decimal(10,3) not null default 0,
    is_show bit not null default 1,
    is_saleoff bit not null default 0
);
插入数据

-- 向goods表中插入数据

insert into goods values(0,'r510vc 15.6英寸笔记本','笔记本','华硕','3399',default,default); 
insert into goods values(0,'y400n 14.0英寸笔记本电脑','笔记本','联想','4999',default,default);
insert into goods values(0,'g150th 15.6英寸游戏本','游戏本','雷神','8499',default,default); 
insert into goods values(0,'x550cc 15.6英寸笔记本','笔记本','华硕','2799',default,default); 
insert into goods values(0,'x240 超极本','超级本','联想','4880',default,default); 
insert into goods values(0,'u330p 13.3英寸超极本','超级本','联想','4299',default,default); 
insert into goods values(0,'svp13226scb 触控超极本','超级本','索尼','7999',default,default); 
insert into goods values(0,'ipad mini 7.9英寸平板电脑','平板电脑','苹果','1998',default,default);
insert into goods values(0,'ipad air 9.7英寸平板电脑','平板电脑','苹果','3388',default,default); 
insert into goods values(0,'ipad mini 配备 retina 显示屏','平板电脑','苹果','2788',default,default); 
insert into goods values(0,'ideacentre c340 20英寸一体电脑 ','台式机','联想','3499',default,default); 
insert into goods values(0,'vostro 3800-r1206 台式电脑','台式机','戴尔','2899',default,default); 
insert into goods values(0,'imac me086ch/a 21.5英寸一体电脑','台式机','苹果','9188',default,default); 
insert into goods values(0,'at7-7414lp 台式电脑 linux )','台式机','宏碁','3699',default,default); 
insert into goods values(0,'z220sff f4f06pa工作站','服务器/工作站','惠普','4288',default,default); 
insert into goods values(0,'poweredge ii服务器','服务器/工作站','戴尔','5388',default,default); 
insert into goods values(0,'mac pro专业级台式电脑','服务器/工作站','苹果','28888',default,default); 
insert into goods values(0,'hmz-t3w 头戴显示设备','笔记本配件','索尼','6999',default,default); 
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default); 
insert into goods values(0,'x3250 m4机架式服务器','服务器/工作站','ibm','6888',default,default); 
insert into goods values(0,'商务双肩背包','笔记本配件','索尼','99',default,default);



题目
-- 类似京东商城
-- 求所有商品的平均价格,并且保留两位小数


-- 查询所有价格大于平均价格的商品,并且按价格降序排序


-- 查询类型cate_name为 '超级本' 的商品名称、价格


-- 显示商品的种类

-- 显示每种类型的商品的平均价格

-- 查询每种类型的商品中 最贵、最便宜、平均价、数量


-- 查询每种类型中最贵的商品信息


\G 将查询的字段单独成行显示
-- 通过行级子查询也可以实现该需求



-- 创建商品分类表


-- insert into xx表  values (), (),...; 需要手动写比较麻烦
-- insert ... select  # 将查询的结果插入到某一个表中
-- 子查询语句
-- 在sql中所有的语句都称为查询语句
-- 结构化查询语言
-- 查询到的数据的字段需要和插入数据表指定的字段一一对应


-- 连接更新
-- 根据goods_cates 表 更新goods 表 

-- 修改表结构



-- brand_name 品牌名称
-- 创建表 并且插入数据 一步到位  create ... select
-- 如果查找的数据的字段和表中的字段名不一样 此时会在表中创建一个新的名字一样的字段,将查询到的数据一一对应的自动创建的字段上面
-- 给brand_name 起别名, 或者将goods_brands表中的name 修改为brand_name



---  根据goods_brand表 来更新 goods表


-- 修改表结构


-- 连接多张表完成查询
-- 显示商品的完整信息
-- 连接多张表直接inner join 不需要and 或者 ,

数据库设计

请使用外键进行关联建表 表的关系如下图





答案

创建 "商品分类" 表

create table goods_cates(
    id int unsigned primary key auto_increment not null,
    name varchar(40) not null
);

创建 "商品品牌" 表

create table goods_brands (
    id int unsigned primary key auto_increment not null,
    name varchar(40) not null
);

创建 "商品" 表

create table goods(
    id int unsigned primary key auto_increment not null,
    name varchar(40) default '',
    price decimal(5,2),
    cate_id int unsigned,
    brand_id int unsigned,
    is_show bit default 1,
    is_saleoff bit default 0,
    foreign key(cate_id) references goods_cates(id),
    foreign key(brand_id) references goods_brands(id)
);

创建 "顾客" 表

create table customer(
    id int unsigned auto_increment primary key not null,
    name varchar(30) not null,
    addr varchar(100),
    tel varchar(11) not null
);

创建 "订单" 表


create table orders(
    id int unsigned auto_increment primary key not null,
    order_date_time datetime not null,
    customer_id int unsigned,
    foreign key(customer_id) references customer(id)
);

创建 "订单详情" 表

create table order_detail(
    id int unsigned auto_increment primary key not null,
    order_id int unsigned not null,
    goods_id int unsigned not null,
    quantity tinyint unsigned not null,
    foreign key(order_id) references orders(id),
    foreign key(goods_id) references goods(id)
);

说明

    以上创建表的顺序是有要求的,即如果goods表中的外键约束用的是goods_cates或者是goods_brands,那么就应该先创建这2个表,否则创建goods会失败

    创建外键时,一定要注意类型要相同,否则失败




猜你喜欢

转载自blog.csdn.net/qq_38691608/article/details/80200359