上一页
下一页返回首页
第 2章 Transact-SQL语言
第 2章 Transact-SQL语言
2.1 Transact-SQL 概论
2.2 操作数据
上一页
下一页返回首页
第 2章 Transact-SQL语言
2.1 Transact-SQL概论
一,SQL含义
二,SQL语言主要组成部分
上一页
下一页返回首页
第 2章 Transact-SQL语言
一,SQL含义
—— 结构化查询语言
是一种用于存取和查询数据,更新并管理关
系数据库系统的数据库查询和编程语言。
Transact-SQL是增强的 SQL。
上一页
下一页返回首页
第 2章 Transact-SQL语言
二,SQL语言主要组成部分
数据定义语言 — 定义和管理数据库
包括 CREATE,ALTER和 DROP等语句
数据操作语言 — 查询添加修改和删除数据库中数据
包括 SELECT,INSERT,UPDATE,DELETE等
?数据控制语言 — 设置或者更改数据库权限
包括 GRANT,DENY,REVOKE等语句
上一页
下一页返回首页
第 2章 Transact-SQL语言
2.2 操作数据
一, 打开数据库
二, 查询数据库 ( SELECT子句 )
三, 向表中输入数据
四, 修改表中的数据
五, 删除表中的数据
上一页
下一页返回首页
第 2章 Transact-SQL语言
一、打开数据库
对数据库中的数据操作之前,必须先打开数据库
1、命令格式,USE 数据库名
2、例,USE XK
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
二、查询数据库( SELECT子句)
1、命令基本格式:
SELECT 选择列表
FROM 表的列表
WHERE 查询条件
2、说明:
①选择列表 — 可包括几个列名或表达式,用逗号隔开,
指示返回哪些数据。
②表的列表 — 包括提供数据的表或视图的名称。
③每一个 SELECT子句必须有一个 FROM 子句。
上一页
下一页返回首页
第 2章 Transact-SQL语言
3,SELECT子句中“选择列表”的使用方法
①使用*号 — 从指定表或视图中查询并返回所有行。
例:从课程表中查询所有的信息
USE XK
GO
SELECT *
FROM Course
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 使用列名 — 从指定表或视图中查询并返回指定行。
例:从学生表中查询学生所在班的班级编码
USE XK
GO
SELECT ClassNo
FROM Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
③使用 DISTINCT— 消除指定列的值都相同的重复行。
例:从学生表中查询学生所在班的班级编码
USE XK
GO
SELECT DISTINCT ClassNo
FROM Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
④ 使用 TOP n— 返回前 n行
例:从学生表中查询所有信息,只显示前6行。
USE XK
GO
SELECT TOP 6 *
FROM Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
⑤ 修改查询结果中列的标题(表中的列名没有改变)
例:查询课程表中课程编码、课程名称、教师、上课时间
USE XK
GO
SELECT CouNo ‘课程编码’,CouName ‘课程名称’,
Teacher ‘教师’,SchoolTime ‘上课时间’
FROM Course
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
⑥ 列为表达式
例:查询课程表中,显示报名人数与限选人数之比。
USE XK
GO
SELECT *,WillNum/LimitNum
FROM Course
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
4,WHERE子句中“查询条件”的使用方法
①查询某一范围内的信息
例 1:在课程表中查询,Linux操作系统”课程的主讲教
师
USE XK
GO
SELECT ‘主讲教师’ =Teacher
FROM Course
WHERE CouName=‘Linux操作系统’
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例 2:查询报名人数少于 25并且多于 15的课程信息
USE XK
GO
SELECT *
FROM Course
WHERE WillNun>15 AND WillNum<25
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 使用 IN关键字
例:查询课程号为 004,007,013的课程名称
USE XK
GO
SELECT CouName
FROM Course
WHERE CouNo IN (‘004’,’007’,’013’)
注意,CouNo=‘004’ OR CouNo=‘007’ CouNo=‘013’
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 使用 IS NULL关键字查询列中没有赋值的行
例:查询课程表中教师未定的课程名称和教师
USE XK
GO
SELECT CouName,Teacher
FROM Course
WHERE Teacher IS NULL
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
④ 使用权 BETWEEN关键字
例:查询报名人数少于 25并且多于 15的课程信息
USE XK
GO
SELECT *
FROM Course
WHERE WillNum BETWEEN 15 AND 25
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
⑤ 使用子查询
查询中包含另一个查询,可以使用子查询代替表达式,
子查询只能返回列数据。
例:查询报名人数大于平均报名人数的课程编码、课程名称、报名人数。
USE XK
GO
SELECT CouNo,CouName,WillNum,AVG(WillNum)
FROM Course
WHERE WillNum > ( SELECT AVG(WillNum)
FROM Course )
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
5、对多个表或视图进行查询
①笛卡尔积
多表的无条件连接
例:将班级表与学生表连接
USE XK
GO
SELECT *
FROM Class,Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 条件连接
例:查询学生信息和学生相应的班级
USE XK
GO
SELECT *
FROM Class,Student
WHERE Class.ClassNo=Student.ClassNo
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例:查询各班可以选择的非本系开设的选修课程信息
USE XK
GO
SELECT ClassName,Couname,Kind,Credit,Teacher
FROM Class,Course
WHERE Class.DepartNo<>Course.DepartNo
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例:查询,01电子商务”班的学选修课程情况,要求显示
班级名称、学号、姓名、课程名、课程类别、学分、教
师、上课时间、报名人数
USE XK
GO
SELECT ClassName,Student.StuNo,StuName,
CouName,Kind,Credit,Teacher,
SchoolTime,WillNum
FROM Class,Student,Course,StuCou
上一页
下一页返回首页
第 2章 Transact-SQL语言
WHERE Class.ClassNo=Student.ClassNo AND
Student.StuNo=StuCou.StuNo AND
StuCou.CouNo=Course.CouNo AND
ClassName=’01电子商务’
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
6、查询语句的其它功能
①使用 ORDER BY子句重新排序查询结果
(ASC表示升序,DESC表示降序,默认升序 )
USE XK
SELECT *
FROM Course
WHERE WillNum>20
ORDER BY WillNum
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 使用 COMPUTE BY子句计算总计或进行小分组计并
进行排序
例:按类显示课程表的课程编码、课程名称、课程分类、
报名人数,并计算每类课程的平均报名人数。
USE XK
SELECT CouNo,CouName,Kind,WillNum
FROM Course
ORDER BY Kind
COMPUTE AVG(WillNum) BY Kind
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 使用 GROUP BY子句对查询结果按指定列进行分组
例:按课程分类统计平均报名人数
USE XK
GO
SELECT ’课程分类’ =Kind,
’每类平均报名人数’ =AVG(WillNum)
FROM Course
GROUP BY Kind
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
④ 使用 UNION运算符将多个查询结果合并成一个
例:从班级表中查询班级名称,从系部表中查询系
部名称,并将两个查询结果合并
USE XK
GO
SELECT ClassName
FROM Class
UNION
SELECT DepartName
FROM Department
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
三、向表中输入数据
1、使用 INSERT语句
①命令格式,INSERT 表名称(列名)
VALUES 列值
②说明,table_name是要输入数据的表的名称;
列名是表中列的名称,为可选项;
列值是要输入的数据值;
列的个数必须与 VALUES子句中给出的值的个
数相同,数据类型必须和列的数据类型相对应。
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 例 1:向 Department表中输入 3行数据。
USE XK
INSERT Department
VALUES (’11’,’数学系’ )
INSERT Department(DepartName,DepartNo)
VALUES (’物理系’,’12’)
INSERT Department(DepartNo,DepartName)
VALUES (’13’,’化学系’ )
SELECT *
FROM Department
上一页
下一页返回首页
第 2章 Transact-SQL语言
例 2:使用 SELECT子查询插入数据
USE XK
GO
INSERT Department
SELECT No,Name
FROM NewDepartment
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
2、使用企业管理器输入数据
在企业管理器中以“返回所有行”的形式打开要
输入数据的表,输入数据完毕后,关闭窗口即可。
上一页
下一页返回首页
第 2章 Transact-SQL语言
四、修改表中的数据
1、使用 UPDATE命令
①命令格式:
UPDATE 表名称
SET 列名称 =新值
FROM 表的列表
WHERE 条件
②说明,FROM和 WHERE为可选项,无 WHERE表
示对表中所有的行进行修改,如果“表名称”与
“表的列表”内容相同则“表的列表”可省略。
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 例 1:将“电子出版概论”课程的上课时间修改为“周
二晚”
USE XK
GO
UPDATE Course
SET SchoolTime=‘周二晚’
FROM Course
WHERE CouName=‘电子出版概论’
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例 2:将,01数据库”班学号为,01000025”的学生名字
修改为“陈晓梅”
USE XK
GO
UPDATE Student
SET StuName=‘陈晓梅’
FROM Student,Class
WHERE ClassName=‘01数据库’ AND
Student.StuNo=‘01000025’ AND
Class.ClassNo=Student.ClassNo
上一页
下一页返回首页
第 2章 Transact-SQL语言
2、使用企业管理器修改数据
在企业管理器中以“返回所有行”的形式打开要
修改数据的表,直接在对应位置修改数据完毕后,
关闭窗口即可。
上一页
下一页返回首页
第 2章 Transact-SQL语言
五、删除表中的数据
1、使用 DELETE命令
①命令格式:
DELETE 表名称
FROM 表的列表
WHERE 条件
②说明:可一次从一个表中删除一行或多行数据,
如果“表名称”与“表的列表”内容相同则“表
的列表”可省略。
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 例:学号为,00000005”的同学因故取消“中餐菜肴
制作”选修课,在表中进行删除处理。
USE XK
GO
DELETE StuCou
FROM StuCou,Course
WHERE StuCou.StuNo=‘00000005’
AND CouName=‘中餐菜肴制作’ AND
StuCou.CouNo=Course.CouNo
GO
下一页返回首页
第 2章 Transact-SQL语言
第 2章 Transact-SQL语言
2.1 Transact-SQL 概论
2.2 操作数据
上一页
下一页返回首页
第 2章 Transact-SQL语言
2.1 Transact-SQL概论
一,SQL含义
二,SQL语言主要组成部分
上一页
下一页返回首页
第 2章 Transact-SQL语言
一,SQL含义
—— 结构化查询语言
是一种用于存取和查询数据,更新并管理关
系数据库系统的数据库查询和编程语言。
Transact-SQL是增强的 SQL。
上一页
下一页返回首页
第 2章 Transact-SQL语言
二,SQL语言主要组成部分
数据定义语言 — 定义和管理数据库
包括 CREATE,ALTER和 DROP等语句
数据操作语言 — 查询添加修改和删除数据库中数据
包括 SELECT,INSERT,UPDATE,DELETE等
?数据控制语言 — 设置或者更改数据库权限
包括 GRANT,DENY,REVOKE等语句
上一页
下一页返回首页
第 2章 Transact-SQL语言
2.2 操作数据
一, 打开数据库
二, 查询数据库 ( SELECT子句 )
三, 向表中输入数据
四, 修改表中的数据
五, 删除表中的数据
上一页
下一页返回首页
第 2章 Transact-SQL语言
一、打开数据库
对数据库中的数据操作之前,必须先打开数据库
1、命令格式,USE 数据库名
2、例,USE XK
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
二、查询数据库( SELECT子句)
1、命令基本格式:
SELECT 选择列表
FROM 表的列表
WHERE 查询条件
2、说明:
①选择列表 — 可包括几个列名或表达式,用逗号隔开,
指示返回哪些数据。
②表的列表 — 包括提供数据的表或视图的名称。
③每一个 SELECT子句必须有一个 FROM 子句。
上一页
下一页返回首页
第 2章 Transact-SQL语言
3,SELECT子句中“选择列表”的使用方法
①使用*号 — 从指定表或视图中查询并返回所有行。
例:从课程表中查询所有的信息
USE XK
GO
SELECT *
FROM Course
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 使用列名 — 从指定表或视图中查询并返回指定行。
例:从学生表中查询学生所在班的班级编码
USE XK
GO
SELECT ClassNo
FROM Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
③使用 DISTINCT— 消除指定列的值都相同的重复行。
例:从学生表中查询学生所在班的班级编码
USE XK
GO
SELECT DISTINCT ClassNo
FROM Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
④ 使用 TOP n— 返回前 n行
例:从学生表中查询所有信息,只显示前6行。
USE XK
GO
SELECT TOP 6 *
FROM Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
⑤ 修改查询结果中列的标题(表中的列名没有改变)
例:查询课程表中课程编码、课程名称、教师、上课时间
USE XK
GO
SELECT CouNo ‘课程编码’,CouName ‘课程名称’,
Teacher ‘教师’,SchoolTime ‘上课时间’
FROM Course
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
⑥ 列为表达式
例:查询课程表中,显示报名人数与限选人数之比。
USE XK
GO
SELECT *,WillNum/LimitNum
FROM Course
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
4,WHERE子句中“查询条件”的使用方法
①查询某一范围内的信息
例 1:在课程表中查询,Linux操作系统”课程的主讲教
师
USE XK
GO
SELECT ‘主讲教师’ =Teacher
FROM Course
WHERE CouName=‘Linux操作系统’
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例 2:查询报名人数少于 25并且多于 15的课程信息
USE XK
GO
SELECT *
FROM Course
WHERE WillNun>15 AND WillNum<25
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 使用 IN关键字
例:查询课程号为 004,007,013的课程名称
USE XK
GO
SELECT CouName
FROM Course
WHERE CouNo IN (‘004’,’007’,’013’)
注意,CouNo=‘004’ OR CouNo=‘007’ CouNo=‘013’
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 使用 IS NULL关键字查询列中没有赋值的行
例:查询课程表中教师未定的课程名称和教师
USE XK
GO
SELECT CouName,Teacher
FROM Course
WHERE Teacher IS NULL
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
④ 使用权 BETWEEN关键字
例:查询报名人数少于 25并且多于 15的课程信息
USE XK
GO
SELECT *
FROM Course
WHERE WillNum BETWEEN 15 AND 25
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
⑤ 使用子查询
查询中包含另一个查询,可以使用子查询代替表达式,
子查询只能返回列数据。
例:查询报名人数大于平均报名人数的课程编码、课程名称、报名人数。
USE XK
GO
SELECT CouNo,CouName,WillNum,AVG(WillNum)
FROM Course
WHERE WillNum > ( SELECT AVG(WillNum)
FROM Course )
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
5、对多个表或视图进行查询
①笛卡尔积
多表的无条件连接
例:将班级表与学生表连接
USE XK
GO
SELECT *
FROM Class,Student
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 条件连接
例:查询学生信息和学生相应的班级
USE XK
GO
SELECT *
FROM Class,Student
WHERE Class.ClassNo=Student.ClassNo
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例:查询各班可以选择的非本系开设的选修课程信息
USE XK
GO
SELECT ClassName,Couname,Kind,Credit,Teacher
FROM Class,Course
WHERE Class.DepartNo<>Course.DepartNo
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例:查询,01电子商务”班的学选修课程情况,要求显示
班级名称、学号、姓名、课程名、课程类别、学分、教
师、上课时间、报名人数
USE XK
GO
SELECT ClassName,Student.StuNo,StuName,
CouName,Kind,Credit,Teacher,
SchoolTime,WillNum
FROM Class,Student,Course,StuCou
上一页
下一页返回首页
第 2章 Transact-SQL语言
WHERE Class.ClassNo=Student.ClassNo AND
Student.StuNo=StuCou.StuNo AND
StuCou.CouNo=Course.CouNo AND
ClassName=’01电子商务’
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
6、查询语句的其它功能
①使用 ORDER BY子句重新排序查询结果
(ASC表示升序,DESC表示降序,默认升序 )
USE XK
SELECT *
FROM Course
WHERE WillNum>20
ORDER BY WillNum
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
② 使用 COMPUTE BY子句计算总计或进行小分组计并
进行排序
例:按类显示课程表的课程编码、课程名称、课程分类、
报名人数,并计算每类课程的平均报名人数。
USE XK
SELECT CouNo,CouName,Kind,WillNum
FROM Course
ORDER BY Kind
COMPUTE AVG(WillNum) BY Kind
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 使用 GROUP BY子句对查询结果按指定列进行分组
例:按课程分类统计平均报名人数
USE XK
GO
SELECT ’课程分类’ =Kind,
’每类平均报名人数’ =AVG(WillNum)
FROM Course
GROUP BY Kind
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
④ 使用 UNION运算符将多个查询结果合并成一个
例:从班级表中查询班级名称,从系部表中查询系
部名称,并将两个查询结果合并
USE XK
GO
SELECT ClassName
FROM Class
UNION
SELECT DepartName
FROM Department
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
三、向表中输入数据
1、使用 INSERT语句
①命令格式,INSERT 表名称(列名)
VALUES 列值
②说明,table_name是要输入数据的表的名称;
列名是表中列的名称,为可选项;
列值是要输入的数据值;
列的个数必须与 VALUES子句中给出的值的个
数相同,数据类型必须和列的数据类型相对应。
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 例 1:向 Department表中输入 3行数据。
USE XK
INSERT Department
VALUES (’11’,’数学系’ )
INSERT Department(DepartName,DepartNo)
VALUES (’物理系’,’12’)
INSERT Department(DepartNo,DepartName)
VALUES (’13’,’化学系’ )
SELECT *
FROM Department
上一页
下一页返回首页
第 2章 Transact-SQL语言
例 2:使用 SELECT子查询插入数据
USE XK
GO
INSERT Department
SELECT No,Name
FROM NewDepartment
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
2、使用企业管理器输入数据
在企业管理器中以“返回所有行”的形式打开要
输入数据的表,输入数据完毕后,关闭窗口即可。
上一页
下一页返回首页
第 2章 Transact-SQL语言
四、修改表中的数据
1、使用 UPDATE命令
①命令格式:
UPDATE 表名称
SET 列名称 =新值
FROM 表的列表
WHERE 条件
②说明,FROM和 WHERE为可选项,无 WHERE表
示对表中所有的行进行修改,如果“表名称”与
“表的列表”内容相同则“表的列表”可省略。
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 例 1:将“电子出版概论”课程的上课时间修改为“周
二晚”
USE XK
GO
UPDATE Course
SET SchoolTime=‘周二晚’
FROM Course
WHERE CouName=‘电子出版概论’
GO
上一页
下一页返回首页
第 2章 Transact-SQL语言
例 2:将,01数据库”班学号为,01000025”的学生名字
修改为“陈晓梅”
USE XK
GO
UPDATE Student
SET StuName=‘陈晓梅’
FROM Student,Class
WHERE ClassName=‘01数据库’ AND
Student.StuNo=‘01000025’ AND
Class.ClassNo=Student.ClassNo
上一页
下一页返回首页
第 2章 Transact-SQL语言
2、使用企业管理器修改数据
在企业管理器中以“返回所有行”的形式打开要
修改数据的表,直接在对应位置修改数据完毕后,
关闭窗口即可。
上一页
下一页返回首页
第 2章 Transact-SQL语言
五、删除表中的数据
1、使用 DELETE命令
①命令格式:
DELETE 表名称
FROM 表的列表
WHERE 条件
②说明:可一次从一个表中删除一行或多行数据,
如果“表名称”与“表的列表”内容相同则“表
的列表”可省略。
上一页
下一页返回首页
第 2章 Transact-SQL语言
③ 例:学号为,00000005”的同学因故取消“中餐菜肴
制作”选修课,在表中进行删除处理。
USE XK
GO
DELETE StuCou
FROM StuCou,Course
WHERE StuCou.StuNo=‘00000005’
AND CouName=‘中餐菜肴制作’ AND
StuCou.CouNo=Course.CouNo
GO