SQL基础第二弹

原创 2018年04月15日 20:16:06

准备数据:

– 创建 “shop” 数据库

CREATE DATABASE shop CHARSET=utf8;

– 使用 “京东” 数据库
use shop;

– 创建一个商品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_seleoff BIT NOT NULL DEFAULT 0
    );

– 向goods表中插入数据(直接copy,一个个敲太浪费时间)

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

补充:(不感兴趣的可以直接略过)

select group_concat(name) as '名称', brand_name,group_concat(cate_name) as '种类', group_concat(price) as '价格'from (select n.id, n.name, n.cate_name, n.brand_name, n.price  from goods as n inner join (select avg(price) as avg_price, cate_name from goods group by cate_name)as new_goods on n.price > new_goods.avg_price and n.cate_name=new_goods.cate_name) as goods_infos group by goods_infos.brand_name;

写着写着突然犯贱,想要写一句长一点的sql语句(Fei Hua),感兴趣的可以试着读读这句话,把上一篇的基础语法用的好大一部分。


开始学习

– 创建 “商品分类”” 表

 CREATE IF NOT EXISTS goods_cates(
     id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     name VARCHAR(40) NOT NULL
     );

IF NOT EXISTS: 如果不存在则创建goods_cates表
– 将goods表中的cate字段数据插入进goods_cates表内,并命名为name

INSERT INTO goods_cates(name) SELECT cate_name FROM goods GROUP BY cate_name;

– (重点*)同步表数据:通过goods_cates数据表来更新goods表

UPDATE goods AS g INNER JOIN goods_cates AS c ON g.cate_name = c.name SET g.cate_name=c.id;

–创建‘goods_brand’表

 CREATE TABLE goods_brands(
     id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     name VARCHAR(40) NOT NULL) SELECT goods.brand_name AS name FROM goods group BY brand_name;

–同步表数据

UPDATA goods AS g INNER JOIN goods_brands AS b ON g.brand_name=b.name SET g.brand_name=b.id;

–修改表结构

ALTER TABLE goods
    CHANGE cate_name cate_id INT UNSIGNED NOT NULL,
    CHANGER brand_name brand_id INT UNSIGNED NOT NULL;

这样主表只保存一些基本数据,其他的数据分别存在其他表内,进一步符合E-R模型…
点击查看E-R模型介绍(转载)

注:::关键字尽量用大写

版权声明:本文为博主原创文章,转载请声明出处。 https://blog.csdn.net/qq_28311921/article/details/79952628

监视剪贴板内容

冲浪的年代,用过网络蚂蚁的人肯定不少,其中一项监视剪贴板变化的功能让人感觉到不少体贴。本文将介绍在Delphi中如何使用“体贴板”,来丰富自己的软件功能。 Windows使用剪贴板观察器和观察链。剪贴...
  • ghj1976
  • ghj1976
  • 2000-09-20 15:29:00
  • 2172

oj题目第二弹

  • 2017年03月07日 09:15
  • 48KB
  • 下载

CrackMe.rar

  • 2013年12月30日 19:03
  • 14KB
  • 下载

Linux那些事儿之我是U盘(26)第一次亲密接触(二)

对于设备驱动程序而言,控制传输要做的事情很简单,向usb core提交一个urb,这个urb中间包含了一个命令,或者说控制请求,因为命令更适合于我们后来要讲的某个重要的概念.这里我们要发送的就是GET...
  • fudan_abc
  • fudan_abc
  • 2007-07-11 19:36:00
  • 6129

Linux驱动第二弹:Linux内核模块.pdf

  • 2011年09月24日 03:36
  • 118KB
  • 下载

网狐棋牌开发第二弹之_游戏服务器_架设指南

  • 2014年03月13日 22:01
  • 119KB
  • 下载

程序员表白源码

  • 2014年07月25日 14:42
  • 62KB
  • 下载

斯坦福深度学习课程解释--第二课

最近开始看深度学习的视频。我从youtube上下载了斯坦福的2016年cs224D。感到其中有一些内容需要注解,便于自己的理解。在此也拿出来和大家分享。 第一课是入门的简介,没什么好解释的,从第二课开...
  • liji_digital
  • liji_digital
  • 2016-12-25 14:41:07
  • 210

bsphp网络验证系统8.0破解版

  • 2018年03月28日 17:14
  • 5.72MB
  • 下载

SQL基础 SQL基础

  • 2009年12月19日 23:29
  • 514KB
  • 下载
收藏助手
不良信息举报
您举报文章:SQL基础第二弹
举报原因:
原因补充:

(最多只允许输入30个字)