数据库基础语句训练(1)

环境:mysql服务+navicatforsql
这篇是自己这学期正在学数据库的课程,第一个基础实验,有很多语句,算是一个自己的记录。冲鸭!

数据的表可以利用navicat很方便的建立(如下图所示),这里主要是一些常用语句的记录。
表1-学生表
表2-课程表
表三-老师表
表四-学生课程联系表

(1):在student表中,为姓名为’Zhang’且系信息错填为’Physics’的同学修改信息,将其系信息修改为’CS’:
注意:修改用update

UPDATE student     
set DEPT='CS'
WHERE SNAME='Zhang' AND DEPT='Physics';

(2):删除teacher表中,属于Finance学院的教师信息;
注意:“删除”用delete

DELETE FROM teacher    
WHERE DEPT='Finance';

(3):在teacher表中,为工资低于或等于70000的教师增长10%的工资,为工资高于70000的教师增长5%的工资:
**注意:(1)如果使用两次选择,那么第二次选择会受到第一次的影响。比如:先涨工资低于7000的教师工资10%,再对高于7000的教师涨工资。然而因为先涨低于7000的工资,涨完之后,可能他们工资就超过7000了,此时还会进行第二次涨5%。采用以下语句,能对他们同时进行涨幅的变动,而不会受先后顺序的影响。
(2)case语句语法:
case r
when …… then ……
when …… then ……
else……
end
**

UPDATE teacher
SET SALARY=CASE
               WHEN SALARY<=7000 THEN SALARY*1.1
               ELSE SALARY*1.05
           END;

在这里插入图片描述
(4):基于teacher表,找出“物理系Physics和生物系Biology”所有教师的名字和工资SELECT TEAME,SALARY FROM teacher WHERE DEPT IN('Physics','Biology')
(5):基于teacher表,列出教师所在的各个系名,要求每个系名仅出现一次:
注意:select并不去除重复,如果不用distinct,那么选择结果就是CS,Biology,Physics,Physics,CS,CS。关键字distinct为我们可以自动剔除重复。


SELECT DISTINCT DEPT
FROM teacher;

在这里插入图片描述

(6):基于teacher表,希望查看“若将每位教师的工资提高20%后”各位教师的姓名和工资是多少:
注意:这里是希望查看,所以并不改变表的相对应的数值,使用select语句直接选出来并对其进行相应的操作即可,select不对值进行修改,update是对表进行修改的。

SELECT TEAME,SAlARY*1.2
FROM teacher;

(7):基于表student、SC和course,查看到计算机系CS的每位学生所选课程的所有信息,包括学生姓名、所在系、课程名称、课程学分的情况。
注意:(1)第一步学生表中选出所有的CS学生,再与SC表进行左连接:
内连接/自然连接:只保留两张表中相同属性下取值相同的元组,其他不保留;
左连接:保留左边表所有的元组以及两张表中相同属性下取值相同的元组(此处保留了左边所有CS的学生信息,没有选课的学生的教师部分属性为null),没有的属性设置为null;
右连接:保留右边表所有的元组以及两张表中相同属性下取值相同的元组,没有的属性设置为null;

(2):第二步将第一步得到的表与course表依据CID进行连接:
为什么要依据CID进行连接? 因为第一步得到的表有DEPT属性(学生所处的系),course表也有DEPT属性(开课学院所处的系)。如果自然连接(讲究同属性下取值相同),将会只选出上本学院开课的学生信息。所以我们需要让表依据CID进行连接。学生所选的课程号(确定了学生上的哪门课)与course表中的课程号(确定了一门课程的所有信息)相同就连接,即可以获得学生上的这门课的所有信息。
A(表名) join B(表名) using x(属性)

SELECT * 
FROM(SELECT *
FROM student
     WHERE DEPT='CS') as n
NATURAL LEFT JOIN SC LEFT JOIN course USING (CID);

在这里插入图片描述
加油!!!

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值