数据库SQL查询练习

--重点推荐使用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 
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言,通过它可以执行各种查询、数据插入、更新和删除等操作。进行SQL查询语句练习有助于提高对数据库操作的理解和效率。以下是一些基本的SQL查询语句及其用途: 1. **SELECT**:用于从数据库表中检索数据,是SQL中最常用的语句。例如,`SELECT * FROM table_name`会选择所有列,`SELECT column1, column2 FROM table_name`则选择特定列。 2. **WHERE**:用于筛选满足特定条件的行。如 `SELECT * FROM table_name WHERE condition`,`condition`可以是字段值等于、不等于、大于、小于等。 3. **ORDER BY**:按指定列排序结果,例如 `SELECT * FROM table_name ORDER BY column_name ASC/DESC`。 4. **GROUP BY**:将数据按照某个列分组,常与聚合函数(如COUNT(), SUM(), AVG()等)一起使用。 5. **JOIN**:用于合并两个或更多表的数据,有 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 等不同类型。 6. **LIMIT/TOP**:限制返回结果的数量,例如 `SELECT * FROM table_name LIMIT 10`。 7. **INSERT INTO**:用于向表中添加新记录。 8. **UPDATE**:更新表中的现有记录。 9. **DELETE FROM**:删除表中的记录。 10. **CREATE TABLE** 和 **ALTER TABLE**:用于创建和修改数据库表结构。 在练习SQL查询时,可以从以下几个方面入手: 1. 学习基础语法和概念。 2. 挑选一些实际场景,比如查找特定信息、统计数据、合并数据等,编写相应的查询。 3. 尝试使用SQL工具(如MySQL Workbench、phpMyAdmin、SQL Server Management Studio等)进行实践。 4. 解决实际项目中的数据查询需求,提升问题解决能力。 如果你需要进一步深入学习或遇到具体问题,可以告诉我,我会提供更详细的解释和相关问题供你探索。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值