zoukankan      html  css  js  c++  java
  • 6.7 如何插外键 mysql 练习题

    1命令:alter table 需加外键的表 add constraint 外键名
    foreign key(需加外键表的字段名) references 关联表名(关联字段名);
    注意:外键名不能重复

    2 建表时加外键
         foreign key(o_buyer_id) references s_user(u_id),    
         foreign key(o_seller_id) references s_user(u_id)

     仓库表加练习题

    表(一)worker职工表                       

    属性名

    数据类型

    可否为空

    含 义

    Work_id

    varchar (20)

    职工号(主码)

    Ware_id

    varchar (20)

    仓库号(外码)

    wages

    varchar (20)

    工资

     

    表(二)warehouse仓库表)

    属性名

    数据类型

    可否为空

    含 义

    Ware_id

    varchar (20)

    仓库号(主码)

    city

    varchar (20)

    城市

    area

    varchar (20)

    面积

    表(三  表表(三)order(订单表

    属性名

    数据类型

    可否为空

    含 义

    Work_id

    varchar (20)

    职工号(外码)

    supp_id

    varchar (20)

    供应商号(外码)

    Order_id

    varchar (20)

    订购单号

    主码:Work_id+ supp_id

    表(四)supply(供应商表)

    属性名

    数据类型

    可否为空

    含 义

    supp_id

    varchar (20)

    供应商号(主码)

    supp_name

    varchar (20)

    供应商名

    supp_area

    varchar (20)

    地址

    --1.从职工关系中检索所有工资值。Select wages from worker;

    --2.检索仓库关系中的所有记录。Selct * from warehouse;

    --3.检索工资多于1230元的职工号。Select work_id from worker where wages >1230;

    --4.检索哪些仓库有工资多于1210元的职工。

    Select ware_id from worker where wages>1210;

    --5.给出在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号。

    Select work_id from worker where (ware_id = "wh1" or ware_id = "wh2")and wages<1250; 

    --6.找出工资多于1230元的职工号和他们所在的城市。

    Select work_id ,city from worker as a, warehouse as b

     where a.ware_id = b.ware_id and wages>1230;

    select work_id,city from warehouse join worker on warehouse.ware_id = worker.ware_id and wages>1230;

    --7.找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。

    Select  work_id,city from worker as a,warehouse as b Where (a.ware_id = b.ware_id and area>400);

    --★8.哪些城市至少有一个仓库的职工工资为1250元。

    Select city from warehouse where ware_id in(select ware_id from worker where wages=1250);  

    Select city from worker as a,warehouse as b where a.ware_id=b.ware_id and a.wages=1250;

    --9.查询所有职工的工资都多于1210元的仓库的信息。 

    Select * from warehouse where ware_id not in(select ware_id from worker where wages<=1210)and ware_id in (select ware_id from worker);

    select *from warehouse where ware_id in( select  ware_id from worker where 1210< all(select wages from worker where warehouse.ware_id=worker.ware_id))

    where warehouse.ware_id=worker.ware_id是

    Warehouse表里的ware_id值与worker表里的ware_id值一一对应

    默认从wh1开始找。

    --10.找出和职工e4挣同样工资的所有职工。

    Select work_id from worker where wages =(select wages from worker where work_id = "e4");

    --11.检索出工资在1220元到1240元范围内的职工信息。

    Select * from worker where wages between 1220 and 1240; 

    --★12.从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。

    Select *from supply where supp_name like "%公司";

    --13.找出不在北京的全部供应商信息。

    Select *from supply where supp_area !="北京";

    --14.按职工的工资值升序检索出全部职工信息。

     Select *from worker order by wages asc;

    --15.先按仓库号排序,再按工资排序并输出全部职工信息。

     Select *from worker order by ware_id,wages;

    --16.找出供应商所在地的数目

    Select count(distinct supp_area)from supply;


    -17.求支付的工资总数。

    Select sum(wages) from worker;

    --18.求北京和上海的仓库职工的工资总和。

    Select sum(wages) from worker where ware_id in(select ware_id from warehouse where city = "北京" or "上海");

    --19.求所有职工的工资都多于1210元的仓库的平均面积。

    Select avg(area) from warehouse where ware_id not in (select ware_id from worker where wages<=1210) and ware_id in (select ware_id from worker);

    select AVG(area) from warehouse where ware_id in (select ware_id from worker where 工资>1210);

    --20.求在wh2仓库工作的职工的最高工资值。

    Select max(wages) from worker where ware_id ="wh2";

    --21.求每个仓库的职工的平均工资。

    Select ware_id,avg(wages)from worker group by ware_id;

    --22.求至少有两个职工的每个仓库的平均工资。

    Select ware_id,count(*),avg(wages) from worker group by ware_id having count(work_id)>=2

    --23.找出尚未确定供应商的订购单。

    Select * from order1 where supp_id = " ";

    --24.列出已经确定了供应商的订购单信息。

    Select * from order1 where supp_id != " ";

    -25.查询供应商名。

    Select supp_name from supply;

    --★26.在订购单表中加入一个新字段总金额,说明完成该订购单所应付出的总金额数。

    alter table order1 add amount varchar(20) not null;

    -27.列出每个职工经手的具有最高总金额的订购单信息。

    Select max(amount) from order1 group by work_id;

    --28.检索哪些仓库中还没有职工的仓库的信息。

    Select * from warehouse where ware_id not in (select  distinct ware_id from worker group by work_id having count(work_id)>0);

    --29.检索哪些仓库中至少已经有一个职工的仓库的信息。

    Select * from warehouse where ware_id in (select ware_id from worker group by work_id having count(work_id)>=1);

    --★30.检索有职工的工资大于或等于wh1仓库中任何一名职工工资的仓库号。

    Select distinct ware_id from worker where wages >=any(select wages from worker where ware_id ="wh1");

    Select distinct ware_id from worker where wages >=(select min(wages) from worker where ware_id ="wh1");

    --★31.检索有职工的工资大于或等于wh1仓库中所有职工工资的仓库号。

    Select distinct ware_id from worker where wages >=all(select wages from worker where ware_id ="wh1");

  • 相关阅读:
    【转载】ASP.NET Core读取appsettings.json配置文件信息
    node.js安装教程(简单易懂)
    记一次使用typescript模板初始化React项目的几个问题
    es分页查询 scroll
    Redis5设计与源码分析 (第15章 有序集合相关命令的实现)
    Redis5设计与源码分析 (第14章 集合相关命令的实现)
    Redis5设计与源码分析 (第13章 列表相关命令的实现)
    Redis5设计与源码分析 (第12章 散列表相关命令的实现)
    Redis5设计与源码分析 (第11章 字符串相关命令的实现)
    Redis5设计与源码分析 (第9章 命令处理生命周期)
  • 原文地址:https://www.cnblogs.com/sunhao1987/p/9149710.html
Copyright © 2011-2022 走看看