网站设计与维护
用 SQL建立数据库
教师:钱新杰
2004年 11月 16日
提问问题
?1,设计数据库的两个步骤?
?2,从学生表 (Student)中,查询
全体学生的详细情况。
?3,从学生表 (Student)中,查询
所有年龄在 20岁以下的学生
的姓名和年龄。
查询满足条件的元组
查询满足条件的元组一般是通过 WHERE子
句来实现的。
1、比较大小
用于进行比较的运算符一般包括:
=,>,<,>=,<=,!= 或 <>
实例 1、查询学号为 95001的学生的详细记录。
select *
from Student
where Sno=‘95001’ ;
查询满足条件的元组
2、确定范围
谓词 BETWEEN… AND… 和 NOT BETWEEN… AND… 可
以用来查找属性值在或不在指定范围内的元组。
实例 2、查询年龄在 20— 23岁(包括 20和 23)之
间的学生的姓名、系别和年龄。
select Sname,Sdept,Sage
from Student
where Sage BETWEEN 20 AND 23 ;
查询满足条件的元组
3,确定集合
谓词 IN可以用来查找属性值属于
指定集合的元组。
实例 3,查询计算机系 (CS)和数学系
(MA)学生的姓名和性别。
select Sname,Ssex
from Student
where Sdept IN (‘CS’,’MA’);
查询满足条件的元组
4、字符匹配
谓词 LIKE用来进行字符串的匹配。其中
匹配串可以是一个完整的字符串,也可以
含有通配符 %和 _ 。
% 代表任意长度的字符串。
_ 代表任意单个字符。
查询满足条件的元组
实例 4,查询学号为 95001的学生的详细
记录。
select *
from Student
where Sno LIKE ‘95001’ ;
查询满足条件的元组
实例 5、查询所有姓刘的学生的学生
的姓名、学号和性别。
select Sname,Sno,Ssex
from Student
where Sname LIKE ‘刘 %‘;
查询满足条件的元组
实例 6、查询姓, 欧阳, 且全名为三
个汉字的学生的姓名。
select Sname
from Student
where Sname LIKE ‘欧阳 __’;
查询满足条件的元组
练习 1:查询名字中第二个字为,阳”字
的学 生的姓名和学号。
练习 2:查询所有不姓张的学 生的姓名。
查询满足条件的元组
5、多重条件查询
逻辑预算符 AND和 OR可用来连接多
个查询条件。
实例 7,查询计算机系年龄在 20岁以下
的学生的姓名 。
select Sname
from Student
where Sdept=‘CS’ AND Sage<20;
对查询结果排序
用户可以用 order by子句对查询结果进
行排序,其中 ASC为升序,DESC为降序,
缺省时为升序。
实例 8:查询选修了 3号课程的学生的学号
和其成绩,查询结果按分数的降序排序。
select Sno,Grade
from SC
where Cno=‘3’
order by Grade DESC;
使用集函数
Count( [ distinct | all ] *) 统计元组个数
Count( [ distinct | all ]<列名 >]计算一列中值的个数。
sum( [ distinct | all ]<列名 >]计算一列值的总和
avg( [ distinct | all ]<列名 >]计算一列值的平均值
max( [ distinct | all ]<列名 >]求一列值中的最大值
max( [ distinct | all ]<列名 >]求一列值中的最小值
使用集函数
实例 9、计算 1号课程的学生平均成绩。
select avg ( Grade )
from SC
where Cno=‘1’;
练习 4:
查询选修 1号课程的学生的最高分数。
数据更新
SQL中数据更新包括插入数据,修改和
删除数据三条语句。
1、插入数据
一般格式为:
insert into<表名 >
[(<属性列 1>[,<属性列 2>…)]
values(<常量 1>[,<常量 2>]…);
数据更新
实例 10,将一个新学生记录
(学号,95020;姓名:小新;性别:男;
系别,IS;年龄,20;)插入到 Student
中。
insert
into Student
values(‘95020’,’小新’,’男’,’IS’,18);
数据更新
2,修改数据
一般格式为:
update <表名 >
set <列名 >=<表达式 >[,<列名 >=<表达
式 >]……
[ where <条件 >];
数据更新
实例 11、
将学生 95001的年龄改为 22岁。
update Student
set Sage=22
where Sno=‘95001’;
数据更新
3,删除数据
一般格式为:
delete
from <表名 >
[where <条件 >];
数据更新
实例 12、
删除学号为 95019的学生记录。
delete
from Student
where Sno=‘95019’;
谢谢大家