数据库SQL查询练习

本文主要探讨了数据库SQL查询的各种技巧和实战案例,包括如何高效地进行数据筛选、联接操作、聚合函数的使用以及复杂查询的实现。通过实例解析,帮助读者提升SQL查询能力。
摘要由CSDN通过智能技术生成
--重点推荐使用natural join,inner join!!!,尽量避免使用广义的笛卡尔积
--重点推荐使用natural join,inner join!!!,尽量避免使用广义的笛卡尔积
--重点推荐使用natural join,inner join!!!,尽量避免使用广义的笛卡尔积

--设有一个SPJ数据库,
--包括S,P,J,SPJ四个关系模式:

--供应商表S(英文全称为:supplier)
--S(SNO,SNAME,STATUS,CITY)
--供应商代码Sno,供应商名称Sname,供应商状态Status,供应商所在城市City

--零件表P(英文名称为:Part)
--P(PNO,PNAME,COLOR,WEIGHT)
--Pno零件代码,Pname零件名称,Color零件的颜色,Weight零件的重量

--工程项目表J(英文全称为Project,因为之前已经使用了P作为零件的简称,所以这里选择了J作为项目工程表的名字)
--J(JNO,JNAME,CITY)
--工程项目代码Jno,工程项目名称Jname,工程项目所在城市City

--供应情况表SPJ(英文全称supplier-part-project)
--SPJ(SNO,PNO,JNO,QTY)
--供应商代码Sno,零件代码Pno,工程项目代码Jno,供应数量Qty

  /*
  --供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成;
  --S(SNO,SNAME,STATUS,CITY)
             S表
            SNO  SNAME  STATUS  CITY
            S1  精益  20  天津
            S2  盛锡  10  北京
            S3  东方红  30  北京
            S4  丰泰盛  20  天津
            S5  为民  30  上海

--零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成;
--P(PNO,PNAME,COLOR,WEIGHT)
            P表
            PNO  PNAME  COLOR  WEIGHT
            P1  螺母  红  12
            P2  螺栓  绿  17
            P3  螺丝刀  蓝  14
            P4  螺丝刀  红  14
            P5  凸轮  蓝  40
            P6  齿轮  红  30

--工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;
--J(JNO,JNAME,CITY)
            J表
            JNO  JNAME  CITY
            J1  三建  北京
            J2  一汽  长春
            J3  弹簧厂  天津
            J4  造船厂  天津
            J5  机车厂  唐山
            J6  无线电厂  常州
            J7  半导体厂  南京

--供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,
--表示某供应商 供应某种零件 给某工程项目的数量为QTY。
--SPJ(SNO,PNO,JNO,QTY)
            SPJ表
            SNO  PNO  JNO  QTY
            S1  P1  J1  200
            S1  P1  J3  100
            S1  P1  J4  700
            S1  P2  J2  100
            S2  P3  J1  400
            S2  P3  J2  200
            S2  P3  J4  500
            S2  P3  J5  400
            S2  P5  J1  400
            S2  P5  J2  100
            S3  P1  J1  200
            S3  P3  J1  200
            S4  P5  J1  100
            S4  P6  J3  300
            S4  P6  J4  200
            S5  P2  J4  100
            S5  P3  J1  200
            S5  P6  J2  200
            S5  P6  J4  500
  */
请根据以上内容完成下面题目,写出相应的SQL语句.
2、创建表
--创建供应商表S
--供应商代码Sno,供应商名称Sname,供应商状态Status,供应商所在城市City
create table S
(
       Sno char(2) primary key,           --假设供应商代码的长度为定长2
       Sname varchar2(9) ,--假设供应商的名称最多为三个汉字
       Status varchar2(3)  not null,--假设供应商供应状态为最多有三个数字
       City varchar2(15)    not null        --假设城市最长为5个字符的汉字
);            

drop table S;
--查询S表的所有信息
select * from S;
--查询表的结构


--创建零件P表
--Pno零件代码,Pname零件名称,Color零件的颜色,Weight零件的重量
create table P
(
       Pno char(2), --假设Pno为2位定长的字符
       Pname    varchar2(9) not null,    --假设Pname最多有三个汉字
       Color char(3) check (Color in('红','绿','蓝')), --颜色只能是一个汉字,并且这个字只能为红绿蓝三种中的一种
       Weight smallint not null,--重量是个整数,并且不能为空
       constraint PK_P primary key (Pno)
);


--删除P表定义及其数据
drop table P;
--查询P表的所有信息
select * from P;

--创建工程项目表J表
--工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成;
create table J
(
       Jno char(2) , --假设工程项目代码是由定长的两位字符组成
       Jname varchar2(12), --假设工程名称最多为长度为4的汉字组成
       City varchar2(15), --假设工程项目所在的城市的名称最多含有5个汉字
       constraint PK_J primary key (Jno)
);


--删除J表定义及其数据
drop table J;
--查询J表的所有信息
select * from J;

--创建供应情况表SPJ表
--供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成
create table SPJ
(
       Sno char(2),
       Pno char(2),
       Jno char(2),
       Qty int constraint C1 check(Qty between 0 and 1000),
       constraint SPJKey primary key(Sno,Pno,Jno),
       constraint FK_Sno foreign key(Sno) references S(Sno) on delete cascade,
       constraint FK_Pno foreign key(Pno) references P(Pno) on delete cascade,
       constraint FK_Jno foreign key(Jno) references J(Jno) on delete cascade
);

--删除SPJ表定义及其数据
drop table SPJ;
--查询SPJ表的所有信息
select * from SPJ;

--使用该语句可以查询当前数据库的字符编码:我这里是
--SIMPLIFIED CHINESE_CHINA.ZHS16GBK
--如果是UTF-8:则一个汉字占三个字符的大小
--如果是GBK:则一个汉字占两个字符的大小
--为了避免出错:这里我统一按照一个汉字占三个字符的标准(UTF-8)
select userenv('language') from dual;

3、插入数据
--向供应商表中插入数据
--向S表中插入数据
  --S表
          --   SNO  SNAME  STATUS  CITY
          --   S1  精益  20  天津
          --   S2  盛锡  10  北京
          --   S3  东方红  30  北京
          --   S4  丰泰盛  20  天津
          --   S5  为民  30  上海
insert 
into S(Sno,Sname,Status,City)
values('S1','精益','20','天津');

insert 
into S(Sno,Sname,Status,City)
values('S2','盛锡','10','北京');

insert 
into S(Sno,Sname,Status,City)
values('S3','东方红','30','北京');

insert 
into S(Sno,Sname,Status,City)
values('S4','丰泰盛','20','天津');

insert 
into S(Sno,Sname,Status,City)
values('S5','为民','30','上海');

select * from S;

--向P表中插入有效数据
--P(PNO,PNAME,COLOR,WEIGHT)
            --P表
            --PNO  PNAME  COLOR  WEIGHT
            --P1  螺母  红  12
            --P2  螺栓  绿  17
            --P3  螺丝刀  蓝  14
            --P4  螺丝刀  红  14
            --P5  凸轮  蓝  40
            --P6  齿轮  红  30
insert 
into P(Pno,Pname,Color,Weight)
values('P1','螺母','红',12);

insert 
into P(Pno,Pname,Color,Weight)
values('P2','螺栓','绿',17);

insert 
into P(Pno,Pname,Color,Weight)
values('P3','螺丝刀','蓝',14);

insert 
into P(Pno,Pname,Color,Weight)
values('P4','螺丝刀','红',14);

insert 
into P(Pno,Pname,Color,Weight)
values('P5','凸轮','蓝',40);

insert 
《超市积分管理系统》该项目采用技术jsp、strust2、tomcat服务器、mysql数据库 开发工具eclipse,项目含有源码、论文、配套开发软件、软件安装教程、项目发布教程    超市会员积分管理系统主要用于实现了企业管理数据统计等。本系统结构如下:(1)网络会员管理中心界面:       会员修改密码信息模块:实现会员密码功能;       会员登陆模块:实现会员登陆功能;       会员注册模块:实现会员注册功能;       留言板模块:实现留言板留言功能(2)后台管理界面:       系统用户管理模块:实现管理员的增加、查看功能;       会员信息管理模块:实现会员信息的增加、修改、查看功能;       注册用户管理模块:实现注册用户的增加、修改、查看功能;       会员卡管理模块:实现会员卡信息的增加、查看功能;       商品销售管理模块:实现商品信息的增加、查看功能;       会员积分管理模块:实现合作公司信息的增加、查看功能;       信息统计模块:实现数据统计报表功能;       留言板模块:实现留言板信息的增加、修改、查看功能; 课程目标:    1、学会各类开发软件安装、项目导入以及项目发布,含项目源码,需求文档,配套软件等    2、该项目主要功能完善,主要用于简历项目经验丰富,以及毕业设计或者二次开发    3、提供项目源码,设计文档、数据库sql文件以及所有配套软件,按照教程即可轻松实现项目安装部署 本课程为素材版,需要实战版代码讲解教程的同学可以点击如下链接:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572JavaWeb项目实战之宿舍管理系统https://edu.csdn.net/course/detail/26721JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值