数据库简单作业解答

这篇博客详细解答了一道关于数据库管理的作业,涉及时间格式的三种类型:TIMESTAMP、DATETIME和DATE,主外键的删除与添加语法,以及一系列SQL语句,包括创建工厂、车间、工人、产品、仓库等表,并进行数据的增删改查操作。作业还涵盖了外键约束、查询特定条件的数据、数据的插入与更新、表结构复制等知识点。

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

数据库简单作业语句语法解答如下题:

工厂(包括厂名和厂长名)需建立一个管理数据库存储以下信息: 一个工厂有多个车间,每个车间有车间号、车间主任姓名、地址和电话。 一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。 一个车间生产多种产品,产品有产品号和价格。 一个车间生产多种零件,一个零件也可能为多个车间制造。 一个产品由多种零件组成,一个零件也可装配出多种产品。 零件有零件号、质量和价格。 产品与零件均存入仓库中。 厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。(相关SQL语句,创建表与增删改查,该题转自网络,解答原创)

一.时间格式一般分为3种如下

1.TIMESTAMP

显示格式:YYYY-MM-DD HH:MM:SS

时间范围:[ '1970-01-01 00:00:00'到'2037-12-31 23:59:59']

2.DATETIME

显示格式:YYYY-MM-DD HH:MM:SS

时间范围:[ '1000-01-01 00:00:00'到'9999-12-31 23:59:59']

3.DATE

显示格式:YYYY-MM-DD

时间范围:['1000-01-01'到'9999-12-31']

二.删除主外键语法

--删除外键语法:alter table 表名 drop constraint 外键约束名 

--添加外键 语法:alter table 表名 add constraint 外键约束名 foreign key(列名) references 引用外键表(列名) 

--删除主键 语法:alter table 表名 drop constraint 主键约束名 

--增加主键 语法:alter 表名 add constraint 主键约束名 primary key(列名) 

温馨提示(删除带有外键的主键,需要先将外键删除,删除外键,得先把外键数据更新为空,然后把错误的主键的属性替换成正确的主键属性)

三.SQL语句

/*创建工厂表*/

CREATE TABLE factory(

factory_id  INT PRIMARY KEY,

factory_name VARCHAR(20),

director_name VARCHAR(20)

);

/*查询成都工厂下面有哪些工人*/

SELECT a.factory_name ,b.location ,c.*FROM factory a,workshop b ,worker c WHERE  a.factory_id=100 AND a.factory_id=b.factory_id  AND b.workshop_id=c.workshop_id

/*查询车都车间下面要生产哪些产品*/

SELECT a.location, b.* FROM workshop a,product b, manuproduct c WHERE a.location LIKE '%成都%'AND a.workshop_id=c.workshop_id AND b.product_id=c.product_id

/*插入数据*/worker

INSERT

INTO factory(factory_id,factory_name,director_name)

VALUES ('1','神州','王洪');

INSERT

INTO factory(factory_id,factory_name,director_name)

VALUES ('2','长虹','李林');

INSERT

INTO factory(factory_id,factory_name,director_name)

VALUES ('3','长虹','刘欣');

INSERT

INTO factory(factory_id,factory_name,director_name)

VALUES ('100','华为','晓文');

INSERT

INTO factory(factory_id,factory_name,director_name)

VALUES ('101','联通','李心');

INSERT

INTO factory(factory_id,factory_name,director_name)

VALUES ('109','腾讯','刘系');

/*查询工厂编号从101-109的工厂信息*/

SELECT *FROM factory WHERE factory_id BETWEEN 101 AND 109

/*查询工厂表里面有那些姓“刘”的主任*/

SELECT *FROM factory WHERE director_name LIKE '%'

/*查询工厂表中第3条道第5条的数据*/

SELECT *FROM factory LIMIT 2,4

/*复制表结构及数据到新表*/

CREATE TABLE fac SELECT * FROM factory;

/*只复制表结构到新表*/

CREATE TABLE fa LIKE factory

/*删除数据要先删除外键,再删除数据,再加上外键*/

ALTER TABLE factory  DROP CONSTRAINT fk_factory _name

DELETE FROM workshop WHERE workshop_id='1';

ALTER TABLE workshop ADD FOREIGN KEY(factory_name) REFERENCES factory(factory_name);

/*查表结构*/

DESC  factory;

/*创建车间表*/

CREATE TABLE workshop(

workshop_id VARCHAR(20) PRIMARY KEY,

workshopdirector_name VARCHAR(20) UNIQUE,

location VARCHAR(20),

shopphone INT,

factory_id INT,

CONSTRAINT fk_factory_id FOREIGN KEY(factory_id)REFERENCES factory(factory_id)

);

/*查询车间主任的电话号码,但是电话号码后4位用X影藏*/

SELECT *FROM factory

/*插入数据*/

INSERT

INTO workshop(workshop_id,workshopdirector_name,location,shopphone,factory_id)

VALUES ('wo1','王二','墨家镇','183123456','1');

INSERT

INTO workshop(workshop_id,workshopdirector_name,location,shopphone,factory_id)

VALUES ('wo2','李三','清水镇','183123123','2');

INSERT

INTO workshop(workshop_id,workshopdirector_name,location,shopphone,factory_id)

VALUES ('wo3','刘兵','清水镇','1834323123','3');

INSERT

INTO workshop(workshop_id,workshopdirector_name,location,shopphone,factory_id)

VALUES ('wo4','杨振','成都','1834368783','1');

INSERT

INTO workshop(workshop_id,workshopdirector_name,location,shopphone,factory_id)

VALUES ('wo5','杨力','成都','1835668783','100');

INSERT

INTO workshop(workshop_id,workshopdirector_name,location,shopphone,factory_id)

VALUES ('wo5','杨力','成都','1837968783','101');

/*删除数据,删除外键*/

ALTER TABLE workshop DROP FOREIGN KEY fk_factory_name;

DELETE FROM workshop WHERE workshop_id='1';

ALTER TABLE workshop ADD FOREIGN KEY(factory_name) REFERENCES factory(factory_name);

/*修改李三为刘丽*/

UPDATE workshop  SET workshopdirector_name='刘丽' WHERE workshop_id=2;

DESC workshop;

/*创建工人表*/

CREATE TABLE worker(

worker_id VARCHAR(20) PRIMARY KEY,

worker_name VARCHAR(20),

age INT,

sex CHAR,

craft VARCHAR(20),

workshop_id VARCHAR(20),

CONSTRAINT fk_workshop_id FOREIGN KEY (workshop_id)REFERENCES workshop(workshop_id)

);

/*查询名字为三个的员工信息*/

SELECT  *, CHAR_LENGTH (worker_name)=3 FROM worker;

/*查询员工男女生个数*/

SELECT sex ,COUNT(*)FROM worker GROUP BY sex;

/*查询员工入职多少天*/

SELECT *, DATEDIFF(NOW(),ruzhiriqi) FROM worker

/*查询员工中男女生平均年龄*/

SELECT  AVG(age) FROM worker GROUP BY sex

/*插入数据*/

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor1','陈晨','22','','电工','wo1');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor2','李三','22','','维修人员','wo2');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor3','许波','22','','维修人员','wo5');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor4','李思思','21','','前台','wo2');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor5','刘采采','21','','前台','wo3');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor6','曾小梅','24','','装配工','wo1');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor7','刘晓','24','','包装工','wo4');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id)

VALUES ('wor8','何天美','21','','前台','wo1');

INSERT

INTO worker(worker_id,worker_name,age,sex,craft,workshop_id, ruzhiriqi)

VALUES ('wor9','蔡明','24','','包装工','wo1','2017-11-16 10:24:23');

/*查询各个车间对应男生和女生个数分别是多少*/

SELECT workshop_id ,sex ,COUNT(*)FROM worker GROUP BY sex,workshop_id

/*请为工人表添加一列,此列的名字为住址,数据类型varchar,长度100,默认值为“成都”*/

ALTER TABLE worker ADD location VARCHAR(20) DEFAULT '成都'

 /*请为工人表添加一列,此列的名字为入职时间。数据类型要求是数据库时间类型,同时测试如下几个时间必须类型应用*/

ALTER TABLE worker ADD ruzhiriqi DATETIME;

UPDATE worker SET ruzhiriqi='2007-12-20 18:31:34' WHERE worker_id='wor1';

 UPDATE worker SET ruzhiriqi='2007-10-02 10:11:22' WHERE worker_id='wor2';

 UPDATE worker SET ruzhiriqi='2007-11-18 16:21:24' WHERE worker_id='wor3';

 UPDATE worker SET ruzhiriqi='2007-10-18 12:21:24' WHERE worker_id='wor4';

UPDATE worker SET ruzhiriqi='2007-11-18 14:08:04' WHERE worker_id='wor5';

 UPDATE worker SET ruzhiriqi='2007-10-30 10:09:18' WHERE worker_id='wor6';

 UPDATE worker SET ruzhiriqi='2007-11-18 12:36:12' WHERE worker_id='wor7';

 UPDATE worker SET ruzhiriqi='2007-11-21 10:45:36' WHERE worker_id='wor8';

UPDATE worker SET ruzhiriqi='2017-11-16 10:24:23' WHERE worker_id='wor9';

 /*创建仓库表*/

CREATE TABLE warehouse(

warehouse_id  VARCHAR(20) PRIMARY KEY,

waredirector_name VARCHAR(20),

warephone INT,

factory_id INT,

CONSTRAINT fk_warehousefactory_id FOREIGN KEY (factory_id) REFERENCES factory(factory_id)

);

/*插入数据*/

INSERT

INTO warehouse(warehouse_id,waredirector_name,warephone,factory_id)

VALUES('w1','张强','13576786','1');

INSERT

INTO warehouse(warehouse_id,waredirector_name,warephone,factory_id)

VALUES('w2','晓晴','13573446','2');

INSERT

INTO warehouse(warehouse_id,waredirector_name,warephone,factory_id)

VALUES('w3','谭星','13573226','100');

 /*查询成都工厂的仓库有哪些*/

SELECT *FROM factory a,warehouse b WHERE a.factory_id=100 AND a.factory_id=b.factory_id

 /*创建产品表*/

CREATE TABLE product(

product_id  VARCHAR(20) PRIMARY KEY,

product_price INT

);

/*插入数据*/

INSERT

INTO product(product_id,product_price)

VALUES ('pr1','200');

INSERT

INTO product(product_id,product_price)

VALUES ('pr2','10');

/*创建零件表*/

CREATE TABLE part(

part_id VARCHAR(20)  PRIMARY KEY,

part_weight INT,

part_price INT

);

/*插入数据*/

INSERT

INTO part(part_id,part_weight,part_price)

VALUES ('p1','2','20');

INSERT

INTO part(part_id,part_weight,part_price)

VALUES ('p2','1','40');

/*生产产品*/

CREATE TABLE manuproduct(

workshop_id VARCHAR(20),

product_id VARCHAR(20),

manuamount INT,

FOREIGN KEY(workshop_id) REFERENCES workshop(workshop_id),

FOREIGN KEY(product_id) REFERENCES product(product_id)

);

/*插入数据*/

INSERT

INTO manuproduct(workshop_id,product_id,manuamount)

VALUES ('wo5','pr2','15');

INSERT

INTO manuproduct

VALUES ('wo5','pr1','25');

INSERT

INTO manuproduct(workshop_id,product_id,manuamount)

VALUES ('wo1','pr2','24');

INSERT

INTO manuproduct(workshop_id,product_id,manuamount)

VALUES ('wo4','pr1','4');

 /*生产零件*/

CREATE TABLE manupart(

workshop_id VARCHAR(20) ,

part_id VARCHAR(20),

partamount INT,

FOREIGN KEY(workshop_id) REFERENCES warehouse(workshop_id),

FOREIGN KEY(part_id) REFERENCES part(part_id)

);

 /*插入数据*/

INSERT

INTO manupart(warehouse_id,part_id,partamount)

VALUES ('w1','p2','4');

INSERT

INTO manupart(warehouse_id,part_id,partamount)

VALUES ('w1','p1','5');

INSERT

INTO manupart(warehouse_id,part_id,partamount)

VALUES ('w2','p2','4');

INSERT

INTO manupart(warehouse_id,part_id,partamount)

VALUES ('w1','p1','30');

 /*装配产品*/

CREATE TABLE fitproduct (

product_id VARCHAR(20),

part_id VARCHAR(20),

fitamount INT,

FOREIGN KEY(product_id) REFERENCES product(product_id),

FOREIGN KEY(part_id) REFERENCES part(part_id)

);

/*插入数据*/

INSERT

INTO fitproduct(product_id,part_id,fitamount)

VALUES ('pr1','p1','2');

INSERT

INTO fitproduct(product_id,part_id,fitamount)

VALUES ('pr2','p2','10');

/*存放产品*/

CREATE TABLE storeproduct (

product_id VARCHAR(20),

warehouse_id VARCHAR(20),

sproductamount INT,

FOREIGN KEY(product_id) REFERENCES product(product_id),

FOREIGN KEY(warehouse_id) REFERENCES warehouse(warehouse_id)

);

 /*插入数据*/

INSERT

INTO storeproduct(warehouse_id,product_id,sproductamount)

VALUES ('w1','pr1','300');

INSERT

INTO storeproduct(warehouse_id,product_id,sproductamount)

VALUES ('w2','pr1','30');

/*存放零件*/

CREATE TABLE storepart(

part_id VARCHAR(20),

warehouse_id VARCHAR(20),

spartamount INT,

FOREIGN KEY(part_id) REFERENCES part(part_id),

FOREIGN KEY(warehouse_id) REFERENCES warehouse(warehouse_id)

);

 /*插入数据*/

INSERT

INTO storepart(part_id,warehouse_id,spartamount)

VALUES ('p2','w1','400');

INSERT

INTO storepart(part_id,warehouse_id,spartamount)

VALUES ('p2','w1','400');

 

 

 

 


一、课程设计的目的 掌握数据库的基础知识、基本理论、原理实现技术。 二、设计题目:工厂数据库管理系统 已知技术参数设计要求: 求说明及要求 题目:工厂数据库管理系统 某工厂建立一个管理数据库存储以下信息1. 工厂包括厂名厂长。 2. 一个内有多个车间,每个车间有车间号、车间主任姓、地址电话。 3. 一个车间有多个工人,每个工人有职工号、姓、年龄、性别工种。 4. 一个车间生产多种产品,产品有产品号、产品价格。 5. 一个车间生产多种零件,一个零件也可能为多个车间制造。零件有零件号、重量价格 。 6. 一个产品由多种零件组成,一种零件也可装配出多种产品。 7. 产品与零件均存入仓库中。 8. 厂内有多个仓库,仓库有仓库号、仓库主任姓电话。 各阶段具体要求: 1求分析阶段 定义数据项的含义取值 定义目标系统的数据流 2、概念结构设计阶段 画出实体模型E-R图 3、逻辑结构设计阶段 将实体模型转化为关系模型 给出每个关系的主关键字函数依赖集 分析你所设计的关系数据库模式是否属于3NF 4、物理设计阶段 确定所有字段的称、类型、宽度、小数位数及完整性约束 确定数据库及表的称及其组成 确定索引文件索引关键字 5、数据库安全及维护设计阶段 设计一个适合的数据库安全策略(用户身份认证、访问权限、视图) 为了实现复杂的数据完整性约束,设计适当的触发器 设计一个适合的数据库备份策略 6、实施阶段 要求所有操作必须在查询分析器中用SQL语句或系统存储过程完成。 三、设计内容 1将概念模型转化为关系模型 从E- R图中可以看到有6个实体,所以我建立了6个实体关系表,并且把实体键作为表的关键字 ,4个一对多的联系表,在建立关系模型的过程中,我是把一这边的实体键放到多这边做 为外键,4个多对多的联系,所以我建立了4个联系表,并把相互联系的两实体的实体键 ,分别作为联系表的外键。在处理仓库与零件多对多的联系仓库与产品多对多的联系 过程中有以下两种方法: 1. 建立两个存储表,仓库零件存储仓库产品存储表,并把仓库号,零件号仓库号 ,产品号分别作为这两个联系表的外键,这样就保持了参照完整性的约束条件,而 且建立两个联系表清晰明了,更容易使人明白。 2. 建立一个存储表,仓库物品存储表,它包含仓库号,物品号(零件号产品号),库 存量3个属性,建立一个存储表更简洁,但是在建表的过程中丢失的参照完整性。 综合考虑以上两种方法,我觉得第(1)中更好。 四、设计步骤 4.1求分析阶段 (1)定义数据项的含义取值 "数据项 "含义 " 类型 " 宽度 " 小数位数 " "FacName "工厂 "Char " 10 " " "FacMName "厂长 " Char " 8 " " "CNo "车间主任编号 " Char " 8 " " "WorkNo "车间号 "Char " 4 " " "WorkAddress"车间地址 " Char " 12 " " "Workphone "车间电话 " Char " 5 " " "WorkerNo "职工号 " Char " 5 " " "WorkerName "职工 " Char " 8 " " "WoerkerAge "职工年龄 " Int " 4 " " "WorkerSex "性别 " Char " 2 " " "WorkerType "工种 " Char " 10 " " "ProductNo "产品号 " Char " 5 " " "ProductName"产品称 " Char " 12 " " "ProductPric"产品价格 " Numeric " 5 " 1 " "e " " " " " "ComNo "零件号 " Char " 5 " " "ComWeight "零件重量 " Int " 4 " " "Comprice "零件价格 " Numeric " 5 "1 " "WareNo "仓库号 " Char " 5 " " "WNo "仓库主任编号 " Char " 8 " " "Warephone "仓库电话 " Char " 12 " " (2)定义数据结构 "数据结构 "含义 "组成 " " " " " "工厂 "工厂情况表 "FacName+FacMName " " " "WorkName+CNo+ " "车间 "车间情况表 "WorkNo+WorkAddress+ " " " "Workphone+FacName " " " "WorkerNo+WorkerName+WorkerSex+ " "职工 "职工情况表 "WorkerType+WorkerAge+WorkNo " " " " ProductNo+ProductNa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值