数据库基础语句训练(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);

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

实验三 数据管理操作 一、实验目的 1.熟悉大型数据库实验环境,以MS SQL SERVER为例; 2.掌握DDL语句,使用DDL语句完成数据表的创建; 3.掌握DML语句,使用DML语句完成数据的插入、修改和删除; 4.掌握MS SQL SERVER的备份和还原; 5.掌握MS SQL SERVER的权限分配。 二、实验内容 (1)用DDL(数据定义语句中的Create database)创建一个新数据库FlightDB,数据库文件的设置都可以使用默认值。 (2)用DDL(数据定义语句中的Create Table)创建三张表 1.航班表(hbb)包括如下字段: 航班号(hbh):字符型,6位定长,主码,以CZ、CA、FM开头 始发地(sfd):字符型,可变长统一编码字符型20位长,非空 目的地(mdd):字符型,可变长统一编码字符型20位长,非空 原价(YJ):整型,非空,必须>=0 2.乘客表(Ckb)包括如下字段: 身份证号(sfzh):字符型,20位变长字符串,主码 姓名(xm):可变长统一编码字符型,10位长 3.售票表(spb)包括如下字段: 航班号(hbh):主码 身份证号(sfzh):主码 起飞日期(qfrq):日期时间型,非空 售票日期(sprq):日期时间型,非空,默认值为当前时间 实价(sj):整型,非空 其中:航班号为引用航班表的外码,身份证号为引用乘客表的外码。 (3)用DML(数据操纵语句中的Insert)在hbb表中插入如下数据 CZ1301,北京,上海,1200 CZ1209,南京,昆明,1300 CZ1502,上海,北京,1200 CA1130,成都,北京,1800 CA1230,拉萨,广州,1500 CA1401,广州,南京,1600 (4)对数据库进行一次完整备份,备份名为BackupFull (5)用DML(数据操纵语句中的Insert)在乘客表和售票表中插入如下数据 代码 乘客 91201 王曼 91202 张飞 91203 刘羽蕴 91204 王若雨 91205 张蕊 航班号 乘客 起飞 售票 实价 CZ1301 91201 2001-12-20 2001-11-20 900 CZ1209 91202 2001-12-20 2001-11-20 800 CZ1502 91201 2002-5-8 2002-5-2 1000 CA1230 91201 2001-12-5 2001-12-4 1100 CA1401 91202 2002-4-5 2002-4-4 1200 CZ1301 91203 2001-12-20 2001-11-20 900 CZ1209 91204 2001-12-20 2001-11-20 800 CZ1502 91205 2002-5-8 2002-5-2 1000 (6)对数据库进行一次差异备份,备份名为BackupAdd1 (7)用DML(数据操纵语句中的Update)将所有目的地是北京的航班的原价提高10% (8)用DML(数据操纵语句中的Delete)将“张飞”乘客删除,注意同时删除售票记录和乘客基本信息。 (9)尝试使用MS SQL Server的还原功能,还原到上一次差异备份的BackupAdd1处。 (10)在SQL Server中创建一个用户FlightUser,设置FlightUser用户对三张表都有查询权,但是该用户不能对乘客表和航班表进行增加、删除和修改记录,该用户对售票表能增加、删除和修改记录。然后用FlightUser登陆SQL Server,对如上权限设置进行验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值