当前位置:文档之家› ASP动态网页设计_第7章_SQL操作基础

ASP动态网页设计_第7章_SQL操作基础


7.2 SQL的运算符
1. 算术运算符 有加(+)、减(-)、乘(*)、除(/)和取模(%)。 2. 逻辑运算符 有AND、OR和NOT三种,分别代表逻辑与、逻辑或、逻辑非 运算。常用于构造复合条件表达式。 3. 位运算符 位运算符用以对数据进行按位与(&)、或(|)、异或(^)、求反(~) 等运算。 4. 比较运算符 有小于(<)、大于(>)、 小于等于(<=)、大于等于(>=)、等于 (=)、不等于<>或!=、指定字段值的范围(BETWEEN)、在模式匹 配中使用,实现模式查询(LIKE)、指定字段的可能取值(IN)。 5. 连接运算符 连接运算符(+)用于两个字符串数据的连接,通常也称为字符串运算 符。
2.查询表中满足条件的记录 .
查询满足指定条件的记录通常通过WHERE子句实 现。 【例7.9】比较大小查询: ①查询信息系(IS)全体学生的名单。 SELECT Sname FROM STUDENT WHERE Sdept=‘IS’ ②查询考试成绩不及格的学生的学号和姓名。 SELECT DISTINCT Sno,Sname FROM Course WHERE Grade<60
7.3.2 Insert语句
插入操作通常有两种形式,一种是向指定的表中插入单条记 录,另一种是插入子查询的结果,即将一个表中符合条件的 记录插入到另一个表中,可以是一次插入多条记录。其用法 为: INSERT INTO 表名(字段名列表) VALUES(字段值列表)
【例7.18】向STUDENT表中插入一条新学生的记录(学号: 200801102,姓名:李阳,性别:男,年龄:19,系部: IS)。 INSERT INTO STUDENT VALUES(‘200801102’, ‘李阳’, ‘男’, ‘19’, ‘IS’) 【例7.19】向SC表中插入一条选课记录(学号:200801103, 课程号:3) INSERT INTO SC(Sno,C门选修课程学生的平均成绩,并将结果保存 到学生选课表中。 INSERT INTO SC(AvgGrade) SELECT AVG(Grade) FROM SC GROUP BY Cno
【例7.10】确定范围查询:查询年龄在18~20岁之间的学生姓名、年龄和所在 系部。 SELECT Sname, Sage,Sdept FROM STUDENT WHERE Sage BETWEEN 18 AND 20 【例7.11】确定集合查询:查询信息系(IS)、机电系(JD)、管理系(GL) 选修了课程的学生的学号和姓名。 SELECT DISTINCT Sno,Sname FROM SC WHERE Sdept IN(‘IS’, ‘JD’, ‘GL’) 【例7.12】模糊查询(字符匹配查询): ①查询课程名中含有“网页”的课程号、课程名和选修课号。 SELECT Cno,Cname,Cpno FROM Course WHERE Cname Like ‘%网页%’ ②查询姓“李”的学生所有信息。 SELECT * FROM STUDENT WHERE Sname Like ‘李%’ ③查询姓“李”且全名为两个汉字的学生姓名。 SELECT Sname FROM STUDENT WHERE Sname Like ‘李_ _’ 说明:因为一个汉字需要占用两个字符的位置,所以需要使用两个通配符 “_”表示一个汉字。通配符“%”可以表示任意长度的字符串。
7.3.4 Delete语句
DELETE语句用于删除指定的记录,其用法为: DELETE FROM 表名 [WHERE 条件表达式] 其功能是从指定表中删除满足WHERE子句条件的记录。如果省略WHERE 子句,表示删除表中全部记录,但表的结构定义仍存在于数据库中。 【例7.23】删除全部记录:将表SC中所有学生的选课记录删除。 DELETE FROM SC 【例7.24】删除符合条件的记录:将表STUDENT中学号为200801105的学 生记录删除。 DELETE FROM STUDENT WHERE Sno=’ 200801105’
下面以一个学生选课数据库系统为例,分类介绍SELECT语 句的常用方法。系统中包含如下3个表: 学生表Student由学号(Sno)、姓名(Sname)、性别 (Ssex)、年龄(Sage)、系部(Sdept)5个字段组成,其 中主键为Sno。 课程表Course由课程号(Cno)、课程名(Cname)、选修 课号(Cpno)、学分(Ccredit)、4个字段组成,其中主键 为Cno。 学生选课表SC由学号(Sno)、课程号(Cno)、成绩 (Grade)3个字段组成,其中主键为Sno和Cno。
4.对查询结果分组 .
GROUP BY 子句将查询结果按某一列或多列值分组,值相等 的为一组。对查询结果分组的目的是为了细化聚集类函数的 作用对象。如果未对查询结果分组,函数将作用于整个查询 结果。 【例7.16】查询各选修课程的课程号及相应的选课人数。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno 分组以后,若要按一定要求对这些组进行筛选,最终只输出 满足指定条件的组,则可以使用Having短语。 【例7.17】查询选修了3门以上课程的学生的学号。 SELECT Sno FROM SC GROUP BY Sno Having COUNT(*)>3
7.1.2 SQL语句
SQL语句一般由SQL命令、子句及函数构成。SQL命令用于描 述语句将要执行的动作。从功能上划分,常用的SQL命令主要包括 数据查询、数据操纵、数据定义和数据控制等命令。
分 类 数据查询 (DQL) 数据操纵 (DDL) 关键字 SELECT INSERT UPDATE DELETE CREATE 数据定义 (DML) 数据控制 (DCL) DROP ALTER GRANT REVOKE 功 能 用于查询(检索)记录数据 用于向数据表添加(插入)记录数据 用于更新(修改)指定记录中指定字段的数 据 用于从数据表中删除指定记录数据 用于建立新的数据库、表或索引 用于删除数据库、表或索引 用于添加字段或改变对字段的定义 授予用户访问权限 解除用户访问权限
1.查询表中全部列、若干列和经过函数计算 .查询表中全部列、 的列的记录
【例7.4】查询全体学生的详细信息。 SELECT* FROM STUDENT 【例7.5】查询全体学生的姓名和年龄。 SELECT Sname, Sage FROM STUDENT 【例7.6】若当前是2008年,查询全体学生的出生年 份。 SELECT 2008-Sage FROM STUDENT 【例7.7】查询学生的平均年龄。 SELECT AVG(Sage) FROM STUDENT 【例7.8】查询已经选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC
2.删除数据库 .
语句用法:DROP DATABASE 数据库名 语法功能:删除指定的数据库。 【例7.26】删除名为elective数据库。 DROP DATABASE elective
7.4.2 数据表的创建与删除
1.创建数据库表 .
数据库中的所有数据,实质上是存储在数据表中的。每个数据库中可存 储若干个数据表。若要通过SQL语句创建一个数据表,其用法为: CREATE TABLE 表名(field1 datatype[NOT NULL],…) 【例7.27】创建一个名为STUDENT的数据库表。 CREATE TABLE STUDENT(Sno int NOT NULL, Sname nvarchar(10) NULL, Ssex nvarchar(2)NULL, Sage int NULL, Sdept nvarchar(20) NULL)
7.3 SQL的数据操纵语句 7.3.1 Select语句
Select语句用于从指定的表中查询出符合条件的记 录。用法为: SELECT 字段列表 FROM 表名 [WHERE 条件表达式] [GROUP BY字段列表][Having 条件表达式] [ORDER BY字段名][ ASC | DESC]
【例7.13】空值查询:查询缺少成绩的学生的学号和相应的课程。 SELECT Sno,Cno FROM SC WHERE Grade Is Null 当条件不止一个的时候,可以用AND和OR连接不同的条件, 实现多重条件查询。 【例7.14】多重条件查询:查询信息系年龄在20岁以下的学生姓 名。 SELECT Sname FROM STUDENT WHERE Sdept=’IS’ AND Sage<20
2.删除数据表 .
语句用法:DROP TABLE 表名 语句功能:删除指定的表。 【例7.28】删除名为STUDENT的表。 DROP TABLE STUDENT
7.4.3 修改数据表结构
ALTER TABLE 语句用于修改数据表的结构。利用该语句,可实现在表 中添加一个字段,或修改已有字段的相关信息。其用法为: ALTER TABLE 表名 ADD ︳MODIFY 字段名 类型[(宽度)] 说明:ADD或MODIFY二者只能选其一,若选用ADD,则表示添加字段; 若选用MODIFY,则为修改指定的字段。 【例7.29】在表STUDENT中添加一个class字段,类型为Nvarchar,允许为 空。 ALTER TABLE STUDENT ADD class Nvarchar NULL 【例7.30】将表STUDENT中Sname字段的宽度更改为20。 ALTER TABLE STUDENT MODIFY Sname nvarchar(20)
SQL子句常用来指定查询条件、指定数据来源或数据组织排列方式。
表7-2 SQL子句
关键字 FROM WHERE GROUP BY ORDER BY
功 能 用于指定需要从其中选择记录的数据表名 用于指定查询条件 用于指定所选择的记录按什么进行分组 用于指定所选记录按哪个字段进行排序以及排序的方式 (升序或降序)
相关主题