mysql数据库创建,编写,查询,自定义函数实战案例

创建汽车修理数据库,并完成数据库编写:

本文分三个部分,第一部分为数据库的创建编写和基础查询,第二部分为关联查询等复杂查询方法,第三部分为存储过程的创建和自定义函数方法,难度逐渐提高,建议初学者可以分层次学习掌握,高手也可以通过目录快速查询。程序都有注释,这里不多赘述了,如果觉得写的还可以,麻烦点赞关注一下哦,您的关注是我最大的动力!

软件版本: Mysql 8.0         Navicat for mysql 16.1.3

目录

第一部分:数据库及表文件的建立和基本操作

1.由提供的表格建立包含在QCXL数据库中的汽车维修表QCWX。

2.显示QCWX的结构。

3.查询记录:

3.1显示QCWX表的所有记录;

3.2显示维修编号为‘1003’的记录;

3.3查询所有维修价格在1000以上维修记录的维修编号、修理项目及送修日期;

3.4查询所有送修日期在2022年11月的维修编号、车牌号、是否完成及维修说明;

3.5显示所有未完成的维修记录信息。

4.增加一个“送修车间”的字段,字段属性及值自定。

5.将sfwc字段的值为‘T’的修改为‘维修完成’,sfwc字段的值为‘F’的修改为‘维修未完成’。

6.用修改命令将所有2022年10月送修但未完成的维修费用打8折。

7.复制QCWX表的结构

8.复制表QCWX结构及2022年11月的维修记录。

9.创建按照wxfy升序排列的索引。

10.创建按照sfwc升序排列、再按照wxfy降序排序的索引。

第二部分:数据库及表的查询和应用

11. 创建如下结构的零件库存表(LJKC)。

12.为零件库存表(ljkc)的库存量( kcl)设置索引,要求降序排列。

13.为零件库存表(ljkc)的标准件(bzj)和价格(jg)设置索引。

14.删除题3建立的索引。

15.用SELECT语句显示从第2条记录到第6条记录的ljh,ljmc,kcl,rkri, 查询结果用中文名表示各字段变量名,即显示为:零件号,零件名称,库存量,入库日期,并要求显示结果按“入库日期”降序排列。

16.创建视图获取零件库存表(ljkc)中2022年9月入库的零件数据,并将字段名改为中文。

17.通过视图向ljkc表中添加一条记录,数据自拟。

18.删除题7添加的记录。

19.查询零件库存表(ljkc)中500<1000之间的零件信息。<>

20.为LJKC表取别名为KC,查询零件号为“20003”的入库日期。

21.查询汽车维修表(QCWX)中以字母‘A’开头的车牌号的记录相关信息。

22.查询送修日期在2022 年10月且已完成维修的汽车信息。

23.查询修理项目为“大修”或“换轮胎”的记录。

24.查询汽车维修表(QCWX)中最高的维修费用、最低维修费用及平均维修费用。

25.建立如下结构的零件明细表(LJMX)。其关系模式为:LJMX(wxbh,ljbh,sysl)。

25.1.查询零件明细表(LJMX)中每条维修记录使用零件的总数量。

25.2. 查询维修编号为“1001”的车牌号、送修日期、使用零件编号及每种零件的使用数量。

25.3. 查询汽车维修表(QCWX)中维修费用在500元以上的维修编号、修理项目、维修费用及零件明细表(LJMX)中的零件编号、使用数量及零件库存表(LJKC)的零件号、零件名称及价格。

26.创建新表(zhb),要求该表包括以下字段:零件编号,零件名称,价格,库存量,标准件,入库日期、维修编号、使用数量;并要求该表中包含所有合理的记录。

第三部分:自定义函数和存储过程创建

27.创建存储过程 proc_sum(IN n INT,OUT sum INT):求出 n(n>0)内所有质数并输出,同时计算所有质数之和,并输出结果。

28.已知数据库 QCXL 中有以下三个表:

28.1.创建一个存储过程,对汽车维修表(QCWX)中的零件数量(ljsl)进行修改:对于未完成维修的记录,零件数量修改为 0;对于已完成维修的记录,其零件数量由零件明细表中统计录入。

28.2.创建一个存储过程 proc_insert( ):向零件明细表(LJMX)中插入一条记录,数据自拟。创建另一存储过程 proc_query( ):调用已创建好的存储过程 proc_insert(),并查询 wxbh 为’101’和’1006’的记录信息。

28.3.创建存储过程,更新零件库存表:库存量(kcl)=库存量(kcl)-使用数量(sysl),并查询库存量(kcl)少于 20 的零件信息。

28.4.创建自定义函数 func_count(IN wxbh INT):要求根据维修编号统计使用零件个数并返回。

29.在 STUDENT 数据库中,创建名称为 USER 的表,包含三个字段:用户编号(uid, INT, AUTO_INCREMENT NOT NULL PRIMARY KEY ), 用 户 名 (user,VARCHAR(10)) , 密 码(password,VARCHAR(10)),任意输入三条记录。再创建一个用户权限验证自定义函数,包含两个参数:用户名和用户密码,根据表 USER 中记录,判断输入用户的登录信息:合法返回 1,否则返回 0。

全代码展示

总结


第一部分:数据库及表文件的建立和基本操作

1.由提供的表格建立包含在QCXL数据库中的汽车维修表QCWX。

其表结构如下:

字段名

数据类型

长度

是否空值

主键外键

备注

wxbh

CHAR

4

NO

主键

维修编号

cph

CHAR

8

NO

车牌号

xlxm

VARCHAR

10

修理项目

sxrq

DATE

送修日期

wxfy

DECIMAL

DECIMAL(8,1)

维修费用

ljsl

INT

4

零件数量

sfwc

CHAR

1

是否完成

wxsm

VARCHAR

20

维修说明

汽车维修表

wxbh

cph

xlxm

sxrq

wxfy

ljsl

sfwc

wxsm

1001

C3542186

大修

2022-10-03

21000

15

T

车祸送修

1002

K3337667

转动轴

2022-10-07

4800

2

F

换转动轴

1003

A2020203

火花塞

2022-10-09

280

8

T

保养

1004

B3456782

刹车

2022-11-01

360

5

F

前轮刹车片磨损

1005

H2105100

反光镜

2022-11-12

800

2

T

反光镜碎裂

1006

A1212568

换轮胎

2022-11-15

1400

2

T

换后面两条轮胎

create database QCXL;

#用create database语句创建数据库,命名为qcxl

use QCXL;

#用use语句使用该数据库

create table qcwx(
wxbh char(4) not null primary key comment'维修编号',
cph char(8) not null comment'车牌号',
xlxm varchar(10) comment'修理项目',
sxrq date comment'送修日期',
wxfy decimal(8,1) comment'维修费用',
ljsl int(4) comment'零件数量',
sfwc char(1) comment'是否完成',
wxsm varchar(20) comment'维修说明'
);

#在该数据库下创建表,命名为qcwx,并创建数据库结构。

engine=InnoDB default charset=utf8;

#定义格式,搜索引擎默认,编码格式默认,一般会默认不需要这个语句

alter table qcwx convert to character set utf8;

#如果还不能输入汉字说明定义无效可以用这个,一般5以前的版本会出现这个问题。

insert into qcwx values('1001','C3542186','大修','2022-10-03','21000','15','T','车祸送修');
insert into qcwx values('1002','K3337667','传动轴','2022-10-07','4800','2','F','换传动轴');
insert into qcwx values('1003','A2020203','火花塞','2022-10-09','280','8','T','保养');
insert into qcwx values('1004','B3456782','刹车','2022-11-01','360','5','F','前轮刹车片磨损');
insert into qcwx values('1005','H2105100','反光镜','2022-11-12','800','2','T','反光镜碎裂');
insert into qcwx values('1006','A1212568','换轮胎','2022-11-15','1400','2','T','换后面两条轮胎');

#录入六行数据。

2.显示QCWX的结构。

desc qcwx;

#查询表结构,看结构是否正确,注意这里用desc查询只显示结构没有内容。

3.查询记录:

3.1显示QCWX表的所有记录;

Select*from qcwx;

#select语句查询表内容

3.2显示维修编号为‘1003’的记录;

Select*from qcwx where wxbh=1003;

#查询编号1003列

3.3查询所有维修价格在1000以上维修记录的维修编号、修理项目及送修日期;

Select wxbh,xlxm,sxrq from qcwx where wxfy>'1000';

#查询维修费用大于1000的几个项目

3.4查询所有送修日期在2022年11月的维修编号、车牌号、是否完成及维修说明;

Select wxbh,cph,sfwc,wxsm from qcwx where sxrq like '2022-11%';

#查询2022年11月的记录,like可用于通配符的查询,%为通配符

3.5显示所有未完成的维修记录信息。

Select wxbh,cph,sfwc,wxsm from qcwx where sfwc='F';

#查询未完成的记录

4.增加一个“送修车间”的字段,字段属性及值自定。

alter table qcwx
add column sxcj char(8) comment'送修车间';

#alter修改表结构,add column结构增加一个字段

5.将sfwc字段的值为‘T’的修改为‘维修完成’,sfwc字段的值为‘F’的修改为‘维修未完成’。

alter table qcwx
modify column sfwc char(10);

#这里隐含了一步,首先要修改表,更改qcwx字段的字符长度。为下面的修改做准备

update qcwx set sfwc ='维修完成' where sfwc='T';
update qcwx set sfwc ='维修未完成' where sfwc='F';

#用UPDATE命令修改QCWX中的记录,更新T和F的值,注意怎么使用函数。

6.用修改命令将所有2022年10月送修但未完成的维修费用打8折。

update qcwx set wxfy=wxfy*0.8 where sxrq like '2022-10%' and sfwc='维修未完成';

#更新特定条件的值

7.复制QCWX表的结构

create table qcwx1 select*from qcwx where 1=2;

#仅复制表结构,注意如果去掉where 1=2 就是完整复制表。新表命名为qcwx1

8.复制表QCWX结构及2022年11月的维修记录。

create table qcwx2 as(select*from qcwx where sxrq like '2022-11%');

#复制表的一部分内容到新表。新表命名为qcwx2

9.创建按照wxfy升序排列的索引。

Create index wxfy_index1 on qcwx(wxfy asc);

#创建索引,asc表示升序,命名为wxfy_index1

10.创建按照sfwc升序排列、再按照wxfy降序排序的索引。

Create index wxfy_index2 on qcwx(sfwc asc,wxfy desc);

#创建索引,在sfwc升的基础上令wxfy降序,desc表示降序,命名为wxfy_index2

当前数据库所有文件如下,注意,索引是包含在表里的,不具备单独的文件。

也可以用Navicat来直观创建和查看表格,这里主要面向编程开发,就不演示图形界面了

第二部分:数据库及表的查询和应用

11. 创建如下结构的零件库存表(LJKC)。

打开实例一创建的数据库文件:汽修厂数据库文件QCXL(汽车修理),创建如下结构的零件库存表(LJKC)。其关系模式为:LJKC(ljh,ljmc,jg,kcl,bzj,rkri,cjdm)。

字段名

数据类型

长度

是否空值

主键外键

备注

ljh

CHAR

5

NO

主键

零件号

ljmc

VARCHAR

20

NO

零件名称

jg

DECIMAL

DECIMAL (7,2)

零件价格

kcl

INT

3

库存量

bzj

tinyint

1

标准件

rkri

date

入库日期

cjdm

CHAR

4

厂家代码

零件库存表(LJKC)

ljh

ljmc

jg

kcl

bzj

rkri

cjdm

20001

前灯

350

42

0

2022-09-01

5001

20002

方向盘

580

15

1

2022-09-15

5002

20003

离合器

750

8

0

2022-09-21

5003

20004

火花塞

120

285

1

2022-09-24

5003

20005

反光镜

180

86

0

2022-10-08

5001

20006

刹车片

268

135

0

2022-10-26

5006

20007

轮胎

780

500

1

2022-11-01

5008

20008

转动轴

1200

21

0

2022-11-13

5008

create table ljkc(
ljh char(5) not null primary key comment'零件号',
ljmc varchar(20) not null comment'零件名称',
jg decimal(7,2) comment'零件价格',
kcl int(3) comment'库存量',
bzj tinyint(1) comment'标准件',
rkri date comment'入库日期',
cjdm char(4) comment'厂家代码'
);

#创建表结构

insert into ljkc values('20001','前灯','350','42','0','2022-09-01','5001');
insert into ljkc values('20002','方向盘','580', '15','1','2022-09-15','5002');
insert into ljkc values('20003','离合器','750', '8','0','2022-09-21','5003');
insert into ljkc values('20004','火花塞','120', '285','1','2022-09-24','5004');
insert into ljkc values('20005','反光镜','180', '86','0','2022-10-08','5005');
insert into ljkc values('20006','刹车片','268', '135','0','2022-10-26','5006');
insert into ljkc values('20007','轮胎','780','500','1','2022-11-01','5007');
insert into ljkc values('20008','传动轴','1200','21','0','2022-11-13','5008');

#输入数据

select*from ljkc;

#查看表

12.为零件库存表(ljkc)的库存量( kcl)设置索引,要求降序排列。

create index kcl_index1 on ljkc (kcl desc);

13.为零件库存表(ljkc)的标准件(bzj)和价格(jg)设置索引。

create index bzjjg_index2 on ljkc (bzj asc,jg desc);

14.删除题3建立的索引。

drop index bzjjg_index2 on ljkc;

15.用SELECT语句显示从第2条记录到第6条记录的ljh,ljmc,kcl,rkri, 查询结果用中文名表示各字段变量名,即显示为:零件号,零件名称,库存量,入库日期,并要求显示结果按“入库日期”降序排列。

select ljh as'零件号',ljmc as'零件名称',kcl as'库存量',rkri as'入库日期'
from ljkc order by rkri desc limit 1,5;

16.创建视图获取零件库存表(ljkc)中2022年9月入库的零件数据,并将字段名改为中文。

create view ljkcview as select * from ljkc where rkri like '2022-09%';

#注意视图的创建方法

17.通过视图向ljkc表中添加一条记录,数据自拟。

insert into ljkcview values('20009','发动机','2200','22','0','2022-09-13','5009');

select*from ljkcview;

18.删除题7添加的记录。

delete from ljkcview where ljh=20009;

select*from ljkcview;

19.查询零件库存表(ljkc)中500<jg<1000之间的零件信息。

select*from ljkc where jg>500 and jg<1000;

20.为LJKC表取别名为KC,查询零件号为“20003”的入库日期。

rename table ljkc to kc;
select rkri from kc where ljh=20003;

#用rename来重命名表名

汽车维修表(QCWX)(第一部分创建)

wxbh cph xlxm sxrq wxfy ljsl sfwc wxsm sxcj
1001 C3542186 大修 2022/10/3 21000 15 维修完成 车祸送修 维修1车间
1002 K333-667 转动轴 2022/10/7 4800 2 维修未完成 换转动轴 维修2车间
1003 A2020203 火花塞 2022/10/9 280 8 维修完成 保养 维修3车间
1004 B3456782 刹车 2022/11/1 360 5 维修未完成 前轮刹车片磨损 维修1车间
1005 H210-100 反光镜 2022/11/12 800 2 维修完成 反光镜碎裂 维修3车间
1006 A1212568 换轮胎 2022/11/15 1400 2 维修完成 换后面两条轮胎 维修3车间

21.查询汽车维修表(QCWX)中以字母‘A’开头的车牌号的记录相关信息。

select*from qcwx where cph like 'A%';

22.查询送修日期在2022 年10月且已完成维修的汽车信息。

select*from qcwx where sxrq like '2022-10%' and sfwc='维修完成';

23.查询修理项目为“大修”或“换轮胎”的记录。

select*from qcwx where xlxm= '大修' or xlxm='换轮胎';

24.查询汽车维修表(QCWX)中最高的维修费用、最低维修费用及平均维修费用。

select max(wxfy) as '最高费用'from qcwx;
select min(wxfy) as '最低费用'from qcwx;
select avg(wxfy) as '平均费用'from qcwx;

25.建立如下结构的零件明细表(LJMX)。其关系模式为:LJMX(wxbh,ljbh,sysl)。

字段名

数据类型

长度

是否空值

主键外键

备注

wxbh

CHAR

4

NO

外键

维修编号

ljbh

CHAR

5

NO

外键

零件编号

sysl

INT(2)

使用数量

零件明细表(LJMX)

wxbh

ljbh

sysl

1001

20003

4

1001

20006

4

1001

20001

2

1003

20004

1

1004

20006

1

1006

20007

2

create table ljmx(
wxbh char(4) not null comment '维修编号',
ljh char(5) not null comment '零件号 ',
sys int(2) comment '使用数量',
constraint ljmx_qcwx
foreign key(wxbh)
references qcwx(wxbh),
constraint ljmx_kc
foreign key(ljh)
references kc(ljh)

insert into ljmx values('1001','20003','4');
insert into ljmx values('1001','20006','4');
insert into ljmx values('1001','20001','2');
insert into ljmx values('1003','20004','1');
insert into ljmx values('1004','20006','1');
insert into ljmx values('1006','20007','2');

25.1.查询零件明细表(LJMX)中每条维修记录使用零件的总数量。

select sum(sys) as '使用零件总数量' from ljmx group by wxbh;  

25.2. 查询维修编号为“1001”的车牌号、送修日期、使用零件编号及每种零件的使用数量。

select cph,sxrq,ljh,sys from ljmx inner join qcwx
where qcwx.wxbh=ljmx.wxbh and qcwx.wxbh=1001;

25.3. 查询汽车维修表(QCWX)中维修费用在500元以上的维修编号、修理项目、维修费用及零件明细表(LJMX)中的零件编号、使用数量及零件库存表(LJKC)的零件号、零件名称及价格。

Select q.wxbh,q.xlxm,q.wxfy,l.ljbh,l.sys,k.ljh,k.ljmc,k.jg
From (ljmx as l left join kc as k on k.ljh=l.ljbh)
Left join qcwx as q on q.wxbh=l.wxbh
Where q.wxfy>500;

#注意这里是左连接的三表联合查询

26.创建新表(zhb),要求该表包括以下字段:零件编号,零件名称,价格,库存量,标准件,入库日期、维修编号、使用数量;并要求该表中包含所有合理的记录。

alter table ljmx change ljh ljbh char(5);

#这个是为了防止下面编号冲突,修改表结构中字段名称的代码

create table zhb as(
select ljh,ljmc,jg,kcl,bzj,rkri,ljmx.wxbh,sys
from kc
left join ljmx on kc.ljh=ljmx.ljbh
);

第三部分:自定义函数和存储过程创建

27.创建存储过程 proc_sum(IN n INT,OUT sum INT):求出 n(n>0)内所有质数并输出,同时计算所有质数之和,并输出结果。

delimiter $
drop table if exists procsum$
create table procsum(
num int not null comment'任意大于0的数',
zs int not null primary key comment'所有小于n的质数',
s int not null comment'质数之和'
);$drop procedure if exists proc_sum$
create procedure proc_sum(in n int, out sum int)
begin
declare number int default 2;
declare temp int default 2;
set sum =0;
while number<n do
set temp=2;
label: while temp<number do
if number%temp=0 then
leave label;
end if;
set temp = temp+1;
end while;
if temp = number then
set sum=sum+number;
insert into procsum values(n,number,sum);
end if;
set number = number+1;
end while;
Select*from procsum;
end$call proc_sum(100,@sum)$

#这里首先创建了一个表,然后创建了一个存储过程,将存储过程生成的内容写入表中并展示,最后用call语句调用该函数

select*from information_schema.routines
where routine_name='proc_sum';$

#通过这个语句可查看函数;

#结果如下

28.已知数据库 QCXL 中有以下三个表:

汽车维修表(QCWX)(第一部分创建)

wxbh cph xlxm sxrq wxfy ljsl sfwc wxsm sxcj
1001 C3542186 大修 2022/10/3 21000 15 维修完成 车祸送修 维修 1 车间
1002 K333-667 转动轴 2022/10/7 4800 2 维修未完成 换转动轴 维修 2 车间
1003 A2020203 火花塞 2022/10/9 280 8 维修完成 保养 维修 3 车间
1004 B3456782 刹车 2022/11/1 360 5 维修未完成 前轮刹车片磨损 维修 1 车间
1005 H210-100 反光镜 2022/11/12 800 2 维修完成 反光镜碎裂 维修 3 车间
1006 A1212568 换轮胎 2022/11/15 1400 2 维修完成 换后面两条轮胎 维修 3 车间

零件库存表(LJKC)(第二部分创建)

ljh ljmc jg kcl bzj rkri cjdm
20001 前灯 350 42 0 2022/9/1 5001
20002 方向盘 580 15 1 2022/9/15 5002
20003 离合器 750 8 0 2022/9/21 5003
20004 火花塞 120 285 1 2022/9/24 5003
20005 反光镜 180 86 0 2022/10/8 5001
20006 刹车片 268 135 0 2022/10/26 5006
20007 轮胎 780 500 1 2022/11/1 5008
20008 转动轴 1200 21 0 2022/11/13 5008

零件明细表(LJMX)(第二部分创建)

wxbh

ljbh

sysl

1001

20003

4

1001

20006

4

1001

20001

2

1003

20004

1

1004

20006

1

1006

20007

2

28.1.创建一个存储过程,对汽车维修表(QCWX)中的零件数量(ljsl)进行修改:对于未完成维修的记录,零件数量修改为 0;对于已完成维修的记录,其零件数量由零件明细表中统计录入。

Drop procedure if exists proc_xg$
create procedure proc_xg()
Begin
Update qcwx set ljsl=0 Where sfwc='维修未完成';
Update qcwx as q,ljmx as l
set q.ljsl=l.sys
Where q.wxbh=l.wxbh and q.sfwc='维修完成';
Select*from qcwx;
end$call proc_xg()$

#修改表格数据要注意两者的先后关系

#结果如下

28.2.创建一个存储过程 proc_insert( ):向零件明细表(LJMX)中插入一条记录,数据自拟。创建另一存储过程 proc_query( ):调用已创建好的存储过程 proc_insert(),并查询 wxbh 为’101’和’1006’的记录信息。

drop procedure if exists proc_insert$
create procedure proc_insert()
begin
insert into ljmx values('1002','20007','3');
select*from ljmx;
end$call proc_insert()$drop procedure if exists proc_quert$
create procedure proc_quert()
Begin
call proc_insert();
Select * from ljmx where wxbh=1006 or wxbh=1001;
end$call proc_quert()$

#注意这是两个存储过程

#结果如下

28.3.创建存储过程,更新零件库存表:库存量(kcl)=库存量(kcl)-使用数量(sysl),并查询库存量(kcl)少于 20 的零件信息。

drop procedure if exists proc_kcl$
create procedure proc_kcl()
begin
update kc as k,ljmx as l
set k.kcl=k.kcl-l.sys;
Select*from kc
where kcl<20;
end$call proc_kcl()$

#使用set来完成赋值运算

28.4.创建自定义函数 func_count(IN wxbh INT):要求根据维修编号统计使用零件个数并返回。

drop function if exists func_count$
create function func_count(wxh int)
returns int
Reads sql data
Begin
Declare bh int;
Select sys into bh from ljmx where wxbh=wxh;
Return (bh);
End$select func_count(1003)$

#对于自定义函数来说reads sql data语句极为重要,否则无法正常运行

#注意select into 语句使用方法

29.在 STUDENT 数据库中,创建名称为 USER 的表,包含三个字段:用户编号(uid, INT, AUTO_INCREMENT NOT NULL PRIMARY KEY ), 用 户 名 (user,VARCHAR(10)) , 密 码(password,VARCHAR(10)),任意输入三条记录。再创建一个用户权限验证自定义函数,包含两个参数:用户名和用户密码,根据表 USER 中记录,判断输入用户的登录信息:合法返回 1,否则返回 0。

drop table if exists users;$
create table users(
uid int auto_increment not null primary key comment '用户编号' ,
user varchar(10) not null comment '用户名' ,
password int not null comment '密码');
insert into users(uid, user, password)
values
('202201','管理员1',123456),
('202202','管理员2',654321),
('202203','管理员3',147258);$drop function if exists func_login$
create function func_login(u varchar(10), passw int)
returns int
reads sql data
begin
declare getpass int;
declare result int default 0;
select password into getpass from users where user=u limit 1;
if getpass= passw
then
set result=1;
else
set result=0;
end if;
return (result);
end$select func_login('管理员1',123456)$

#这里1为真0为假

#结果如下

全代码展示

第一部分

create database QCXL;use QCXL;create table qcwx(
wxbh char(4) not null primary key comment'维修编号',
cph char(8) not null comment'车牌号',
xlxm varchar(10) comment'修理项目',
sxrq date comment'送修日期',
wxfy decimal(8,1) comment'维修费用',
ljsl int(4) comment'零件数量',
sfwc char(1) comment'是否完成',
wxsm varchar(20) comment'维修说明'
);
engine=InnoDB default charset=utf8;alter table qcwx convert to character set utf8;insert into qcwx values('1001','C3542186','大修','2022-10-03','21000','15','T','车祸送修');
insert into qcwx values('1002','K3337667','传动轴','2022-10-07','4800','2','F','换传动轴');
insert into qcwx values('1003','A2020203','火花塞','2022-10-09','280','8','T','保养');
insert into qcwx values('1004','B3456782','刹车','2022-11-01','360','5','F','前轮刹车片磨损');
insert into qcwx values('1005','H2105100','反光镜','2022-11-12','800','2','T','反光镜碎裂');
insert into qcwx values('1006','A1212568','换轮胎','2022-11-15','1400','2','T','换后面两条轮胎');desc qcwx;Select*from qcwx;
Select*from qcwx where wxbh=1003;
Select wxbh,xlxm,sxrq from qcwx where wxfy>'1000';
Select wxbh,cph,sfwc,wxsm from qcwx where sxrq like '2022-11%';
Select wxbh,cph,sfwc,wxsm from qcwx where sfwc='F';alter table qcwx
add column sxcj char(8) comment'送修车间';alter table qcwx
modify column sfwc char(10);update qcwx set sfwc ='维修完成' where sfwc='T';
update qcwx set sfwc ='维修未完成' where sfwc='F';update qcwx set wxfy=wxfy*0.8 where sxrq like '2022-10%' and sfwc='维修未完成';create table qcwx1 select*from qcwx where1=2;create table qcwx2 as(
select*from qcwx where sxrq like '2022-11%'
);Create index wxfy_index1 on qcwx(wxfy asc);
Create index wxfy_index2 on qcwx(sfwc asc,wxfy desc);

第二部分

create table ljkc(
ljh char(5) not null primary key comment'零件号',
ljmc varchar(20) not null comment'零件名称',
jg decimal(7,2) comment'零件价格',
kcl int(3) comment'库存量',
bzj tinyint(1) comment'标准件',
rkri date comment'入库日期',
cjdm char(4) comment'厂家代码'
);insert into ljkc values('20001','前灯','350','42','0','2022-09-01','5001');
insert into ljkc values('20002','方向盘','580', '15','1','2022-09-15','5002');
insert into ljkc values('20003','离合器','750', '8','0','2022-09-21','5003');
insert into ljkc values('20004','火花塞','120', '285','1','2022-09-24','5004');
insert into ljkc values('20005','反光镜','180', '86','0','2022-10-08','5005');
insert into ljkc values('20006','刹车片','268', '135','0','2022-10-26','5006');
insert into ljkc values('20007','轮胎','780','500','1','2022-11-01','5007');
insert into ljkc values('20008','传动轴','1200','21','0','2022-11-13','5008');select*from ljkc;create index kcl_index1 on ljkc (kcl desc);create index bzjjg_index2 on ljkc (bzj asc,jg desc);drop index bzjjg_index2 on ljkc;select ljh as'零件号',ljmc as'零件名称',kcl as'库存量',rkri as'入库日期'
from ljkc order by rkri desc limit 1,5;create view ljkcview as select * from ljkc where rkri like '2022-09%';insert into ljkcview values('20009','发动机','2200','22','0','2022-09-13','5009');select*from ljkcview;delete from ljkcview where ljh=20009;select*from ljkcview;select*from ljkc where jg>500 and jg<1000;rename table ljkc to kc;
select rkri from kc where ljh=20003;
select*from qcwx where cph like 'A%';select*from qcwx where sxrq like '2022-10%' and sfwc='维修完成';select*from qcwx where xlxm= '大修' or xlxm='换轮胎';select max(wxfy) as '最高费用'from qcwx;
select min(wxfy) as '最低费用'from qcwx;
select avg(wxfy) as '平均费用'from qcwx;create table ljmx(
wxbh char(4) not null comment '维修编号',
ljh char(5) not null comment '零件号 ',
sys int(2) comment '使用数量',
constraint ljmx_qcwx
foreign key(wxbh)
references qcwx(wxbh),
constraint ljmx_kc
foreign key(ljh)
references kc(ljh)
);insert into ljmx values('1001','20003','4');
insert into ljmx values('1001','20006','4');
insert into ljmx values('1001','20001','2');
insert into ljmx values('1003','20004','1');
insert into ljmx values('1004','20006','1');
insert into ljmx values('1006','20007','2');select sum(sys) as '使用零件总数量' from ljmx group by wxbh;  select cph,sxrq,ljh,sys from ljmx inner join qcwx
where qcwx.wxbh=ljmx.wxbh and qcwx.wxbh=1001;Select q.wxbh,q.xlxm,q.wxfy,l.ljbh,l.sys,k.ljh,k.ljmc,k.jg
From (ljmx as l left join kc as k on k.ljh=l.ljbh)
Left join qcwx as q on q.wxbh=l.wxbh
Where q.wxfy>500;create table zhb as(
select l.ljh,l.wxbh,l.sys,k.ljmc,k.jg,k.kcl,k.bzj,k.rkri
from ljmx as l, kc as k
);alter table ljmx change ljh ljbh char(5);
create table zhb as(
select ljh,ljmc,jg,kcl,bzj,rkri,ljmx.wxbh,sys
from kc
left join ljmx on kc.ljh=ljmx.ljbh
);

 第三部分

delimiter $
drop table if exists procsum$
create table procsum(
num int not null comment'任意大于0的数',
zs int not null primary key comment'所有小于n的质数',
s int not null comment'质数之和'
);$drop procedure if exists proc_sum$
create procedure proc_sum(in n int, out sum int)
begin
declare number int default 2;
declare temp int default 2;
set sum =0;
while number<n do
set temp=2;
label: while temp<number do
if number%temp=0 then
leave label;
end if;
set temp = temp+1;
end while;
if temp = number then
set sum=sum+number;
insert into procsum values(n,number,sum);
end if;
set number = number+1;
end while;
Select*from procsum;
end$call proc_sum(100,@sum)$select*from information_schema.routines
where routine_name='proc_sum';$Drop procedure if exists proc_xg$
create procedure proc_xg()
Begin
Update qcwx set ljsl=0 Where sfwc='维修未完成';
Update qcwx as q,ljmx as l
set q.ljsl=l.sys
Where q.wxbh=l.wxbh and q.sfwc='维修完成';
Select*from qcwx;
end$call proc_xg()$drop procedure if exists proc_insert$
create procedure proc_insert()
begin
insert into ljmx values('1002','20007','3');
select*from ljmx;
end$call proc_insert()$drop procedure if exists proc_quert$
create procedure proc_quert()
Begin
call proc_insert();
Select * from ljmx where wxbh=1006 or wxbh=1001;
end$call proc_quert()$drop procedure if exists proc_kcl$
create procedure proc_kcl()
begin
update kc as k,ljmx as l
set k.kcl=k.kcl-l.sys;
Select*from kc
where kcl<20;
end$call proc_kcl()$drop function if exists func_count$
create function func_count(wxh int)
returns int
Reads sql data
Begin
Declare bh int;
Select sys into bh from ljmx where wxbh=wxh;
Return (bh);
End$select func_count(1003)$drop table if exists users;$
create table users(
uid int auto_increment not null primary key comment '用户编号' ,
user varchar(10) not null comment '用户名' ,
password int not null comment '密码');
insert into users(uid, user, password)
values
('202201','管理员1',123456),
('202202','管理员2',654321),
('202203','管理员3',147258);$drop function if exists func_login$
create function func_login(u varchar(10), passw int)
returns int
reads sql data
begin
declare getpass int;
declare result int default 0;
select password into getpass from users where user=u limit 1;
if getpass= passw
then
set result=1;
else
set result=0;
end if;
return (result);
end$select func_login('管理员1',123456)$

总结

这个实例几乎覆盖了全部sql语言的基础内容,本文面向开发层面,没有过多介绍图形界面,希望能够帮助初学者了解掌握数据库开发的基本方法。创作不易求求关注啦!

mysql数据库完整实例-“汽车维修”相关推荐

  1. mysql yum多实例_centos-7yum 安装 (mairadb) 实现 mysql 多实例

    centos-7yum 安装 (mairadb) 实现 mysql 多实例 case$1in start) function_start_mysql ;; stop) function_stop_my ...

  2. linux运维、架构之路-MySQL多实例

    一.MySQL多实例介绍            一台服务器上开启多个不同的服务端口(3306,3307,3308),运行多个MySQL服务进程,共用一套MySQL安装程序,多实例MySQL在逻辑上看是 ...

  3. 【学习笔记】mysql多实例安装

    mysql多实例安装(笔记) 安装环境:CentOS最小化的系统 已经编译安装了mysql 先停止mysql服务 killall -9 mysql 创建一个/data目录 再创建一个端口号的文件夹(想 ...

  4. mysql多实例安装配置_MySQL多实例安装配置

    MySQL进行多实例配置再生产环境中非常常见,比如一些高配置数据库服务器,就会跑多个MySQL实例,借助多实例绑定的方式提高服务器的整体资源利用率.另外在MySQL5.7以上版本还不支持多源复制时,当 ...

  5. mysql服务实例配置_MySQL多实例配置(一)

    MySQL数据库的集中化运维,能够通过在一台MySQL数据库服务器上,部署多个MySQL实例.该功能是通过mysqld_multi来实现.mysqld_multi用于管理多个mysqld的服务进程,这 ...

  6. MySQL多实例安装配置指南

    系统环境:centos 6.2 64位 内核版本: 2.6.32-220.el6.x86_64 mysql版本:5.1.62 如果喜欢这篇博文,请给个赞,更多博文请访问 平凡的日子 linux开源技术 ...

  7. MySQL多实例的安装

    安装MySQL-5.5.49 安装包的获取:http://mirrors.sohu.com/mysql/ # 安装MySQL需要的依赖包 yum install ncurses-devel libai ...

  8. redis mysql 案例_linux安装redis和mysql的实例讲解

    linux环境下安装redis和mysql 安装redis(版本3.2.10): 下载地址:https://redis.io/download,这里我下载3.2.10 // 解压 tar zxvf r ...

  9. mysql 多实例应用配置部署指南

    一,Mysql 多实例的作用的问题 1,有效利用服务器的资源 当单个服务器资源有剩余的时候,可以充分利用剩余的资源以提供更多的服务 2,节约服务器的资源 当公司资源紧张,但是数据库各自需要独立提供服务 ...

最新文章

  1. html5的在线播放页面,整理5款html5网页播放器,总有一款适合你吧
  2. 【转载】SQL执行计划
  3. MATLAB-矩阵相关计算(1)
  4. 数据库_第一第二第三范式讲解(通俗易懂)
  5. 【python自动化办公04】word操作-word文字颜色修改
  6. Sleepy Kaguya
  7. 数据库原理mysql_数据库原理:MySql的安装
  8. 看好你的数据库连接字符串!
  9. *(绝对可以安装成功的HUAWEI eNSP模拟器)计算机网络实验(华为eNSP模拟器)——第一章 华为eNSP安装教程
  10. opencv库函数学习:Rect函数
  11. Java NIO?看这一篇就够了!
  12. 数据结构之图的基础知识(二)
  13. 辛弃疾·青玉案·元夕
  14. RabbitMQ精讲7:与SpringBoot、Spring Cloud Stream整合实战
  15. 《智能制造时代的研发智慧:知识工程2.0》一第3章 隐性知识的显性化
  16. 经纬恒润受邀出席2021世界智能网联汽车大会
  17. 如何做成gif动画图片?教你简单三步制作gif动图
  18. 单片机“左移右移理论”,详解
  19. 浪潮服务器上RAID配置实战及RAID相关知识
  20. 京瓷1800打印机扫描步骤_京瓷1800操作指南

热门文章

  1. 仅逗oier们一笑(不定期更新中)
  2. 【Bulldog】靶场记录
  3. laravel轮播图管理api
  4. 大数据学习——克隆虚拟机
  5. 微信文章抓取:微信公众号文章抓取常识之临时链接、永久链接
  6. 真无线蓝牙耳机哪款适合新手?数码发烧友最全盘点,高实用性蓝牙耳机
  7. Layui数据表格 换行
  8. 天才小毒妃 第912章 坑了一大笔
  9. 【小菜虫的学习笔记--n5x刷机root】
  10. selenium登录豆瓣网