数据库简单作业语句语法解答如下题:
工厂(包括厂名和厂长名)需建立一个管理数据库存储以下信息: 一个工厂有多个车间,每个车间有车间号、车间主任姓名、地址和电话。 一个车间有多个工人,每个工人有职工号、姓名、年龄、性别和工种。 一个车间生产多种产品,产品有产品号和价格。 一个车间生产多种零件,一个零件也可能为多个车间制造。 一个产品由多种零件组成,一个零件也可装配出多种产品。 零件有零件号、质量和价格。 产品与零件均存入仓库中。 厂内有多个仓库,仓库有仓库号、仓库主任姓名和电话。(相关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');