这里写目录标题
实验二
第一关:插入数据
插入功能格式
insert into 表名 values("....")
注意:括号内的值如果不规定顺序就是默认顺序
例题
实验完成要求
根据代码区的提示,将插入数据的SQL语句书写在对应的代码区中。
1、为Student表添加两行记录如下表所示。
sno sname ssex sage sdept
001 Smith m 18 CS
002 Ketty f 19 MA
insert into Student(sno,sname,ssex,sage,sdept)
values('001','Smith','m',18,'CS')
或者
insert into Student
values('002','Ketty','f',19,'MA')
第二关:更新数据(修改数据)
修改数据格式
UPDATE语句由三部分组成:
要更新的表;
列名和它们的新值;
要更新行的过滤条件。
更新单个列
update sc
set grade=grade+5
where grade<60
更新多个列
update sc
set ssex=ssex+5,grade=grade+5
where grade<60
删除列
update sc
set ssex=null(如果可以取值为null的话)
where grade<60
例题
将不及格的学生成绩加5分。
update Sc
set grade=grade+5
where grade<60
字符串拼接
concat函数
语法格式
CONCAT(char c1, char c2, ..., char cn)
其中char代表字符串,定长与不定长均可以
+
直接将两个字符串相加
Sno(char)='S'+Sno(char)
字符串修改
substring函数
语法
substring(字符串,x,y)
从第x位开始取,一直取到y位
例题
将学生的学号前的‘S’删掉
update Student
set Sno=substring(Sno,2,len(Sno)-1)
注意:数据库中的起始序号是1不是0
rtrim函数
rtrim是一个函数,返回删除字符串右边的空格后的字符串
语法
rtrim(字符串)
例题
在学生学号的后面加上‘S’(注:**‘S’要大写,学号的类型是char(10))
update Student set Sno=RTRIM(Sno)+'S';
注意:一定要先去掉空格才能+‘S’,否则会加到后面没有用到的空格上
第三关:删除数据
数据的删除
delete函数
语法:
DELETE FROM 表名称 WHERE 列名称 = 值
delete from sc
where grade is null;
注意:数据库中判断值是否为空可以的语法是xx is null
例题
删除年龄等于18岁的女(f)同学
delete from Student
where sage=18 and ssex='f'
实验三:简单查询
第一关 简单查询
select函数
语法
select 数据类型
from 表名
where 条件
例题
查询先行课程不为空的课程。(使用*表示查询结果)
select *
from course
where cpno <> ''
注意:
数据库中的不等于可以用!=也可以用<>表示
数据库中”空“值得单引号内不用加空格
like语句
% :代表一串字符串
_:代表一个字符
当所查询的字符中有%或者_时,可以用escape‘\’来表示‘\’后面的一个字符为转义字符
语法:
'DV\_%i_ _' escape '\'
表示的意思就是查找DV_…i_ _得字符串
distinct关键字
取出重复的数据
语法
例题
使用distinct关键字查询学生表中不同的系
并列出系
select distinct sdept
from student 在这里插入代码片
数据之间有交集的查找
例题
查询90分以上学生的选课信息,
列出学号,姓名,课程号,成绩。
SELECT A.sno,A.sname,C.cno,C.grade
FROM Student A,SC C
WHERE grade>90 and A.Sno=C.Sno
其中得A.Sno=C.Sno意思就是:先在c中查到的grade>90的学生学号,因为sc表中没有存储姓名,姓名存储在student表中,所以需要用学号(sc和student的公共项数)进行映射
为什么不能这样
查询90分以上学生的选课信息,列出学号,姓名,课程号,成绩。
select student.sno,sname,cno,grade
from sc,student
where student.sno in
(
select sno
from sc
where grade>90
)