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

原文地址:https://www.cnblogs.com/sunhao1987/p/9149710.html

时间: 2024-10-17 04:08:25

6.7 如何插外键 mysql 练习题的相关文章

MySQL基础day03 存储引擎和外键MySQL 5.6

MySQL基础day03_存储引擎和外键-MySQL 5.6 外键的条件: 1,表的存储引擎为innodb存储引擎 2,表中外键字段的类型要与参考表的字段类型一致 3,外键字段要是索引类型中的一种 MySQL数据库的存储引擎 存储引擎:是mysql结构中的组成部分 mysql体系结构: 由8部分组成:连接池.Sql接口.分析器.优化器.缓存和缓冲.存储引擎.管理工具.物理存储设备 1.客户端:mysql 2.连接器: NativeC API 本地C语言接口.JDBCJAVA的数据库连接器.ODB

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)

MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作): a.创建2张表 create table userinfo(nid int not null auto_increment primary key, name varchar(10), age int, part_nid int )engine=innodb default charset=utf8; create table part( nid int not null auto_in

程序媛计划——mysql外键

定义 外键:如果一个表的某个字段指向另一个表的主键,就称之为外键.被指向的表,称之为主表,也叫父表,那么另一个表就是从表,也叫子表 #先新建两个表 mysql> create table author_table( -> author_id int(4) not null primary key auto_increment, -> author_name char(20) not null); Query OK, 0 rows affected (0.02 sec) mysql>

MySQL插入外键

创建外键 mysql> CREATE TABLE `study_record` (     ->   `id` int(11) NOT NULL,     ->   `day` int NOT NULL,     ->   `status` char(32) NOT NULL,     ->   `stu_id` int(11) NOT NULL,     ->   PRIMARY KEY (`id`),     ->   KEY `fk_student_key`

mysql数据库基础(2)索引、主键、复合主键、外键

增.删.改.查 加""表示为普通字符 mysql> insert into  t9 values("NULL",21,"game,flim"); +++++++++++++++++++++++++++++++ 添加新字段 mysql> alter table  t4 add age int(2) default 19;        //默认在最后面 mysql> alter table  t4 add mail char(50

数据表操作与主键、外键、唯一键使用

1.修改数据库(比如修改字符集) mysql> alter database `DB` character set utf8; 2.根据查询结果建立数据表,注意这样复制的数据表是不能将主键也复制过来的,也就是说此时的新表示没有主键的 mysql> create table student_bak select ID,name from student where ID=2; mysql> create table student_bak2 select * from student; 3

数据库设计中一对一、多对一、多对多关系依据外键的实现条件及方法

作者:二歪求知iSk2y链接:https://www.jianshu.com/p/2b27c7ba0653来源:简书 下面以departments和staff_info表为例(为staff_info添加指向departments的外键) 一个表的字段作为外键的条件: 列值必须非空且唯一 测试例子如下: mysql> create table departments (dep_id int(4),dep_name varchar(11)); Query OK, 0 rows affected (0

Mysql 外键设置

MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个:    一个是让数据库自己通过外键来保证数据的完整性和一致性    一个就是能够增加ER图的可读性    有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦其实这正式外键在强制你保证数据的完整性和一致性.这是好事儿.    例如:    有一个基础数据表,用来记录商品的所有信息.其他表都保存商品ID.查询时需要连表来查询商品的名称

mysql foreign key(外键) 说明与实例

一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强.关于完整性,关连性我举个例子,大家就会明白了. 有二张表,一张是用户表,一张是订单表: 1,如果我删除了用户表里的用户,那么订单表里面根这个用户有关的数据,就成了无头数据了,不完整了. 2,如果我在订单表里面,随便插入了一条数据,这个订单在用户表里面,没有与之对应的用户.这样数据也不完整了. 如果有外键的话,就方便多