第2讲 Transact-SQL语言
第2讲 Transact-SQL语言
●第1节单表查询 ●问题: 我们需要对数据进行哪些维护操作?如 何对数据进行查询、统计? 结构化查询语言( Structured Query language)。这种语言的 语法结构类似于英语,易学易用, 书写随意。[例如前面第一章讲 言概述 过的例子
Transact -SQL 语 言 概 述 第1节 单表查询 问题: 我们需要对数据进行哪些维护操作?如 何对数据进行查询、统计? 结构化查询语言(Structured Query Language)。这种语言的 语法结构类似于英语,易学易用, 书写随意。[例如前面第一章讲 过的例子]
1、数据定义语言DL:用来定义和管理数据库中的 对象 DDL主要的语句有 CREAT TABLE /*创建表*/ ALTER TABLE /*修改表的属性* DROP TABLE /删除表* 2、数据操作语言DM:用来操作数据库中的对象和 数据,是TSQL中最常用的部分 DML主要的语句有 SELECT /从一个表或多个表中检索数据* 、语言的组成 DELETE /从表中删除数据米 INSERT /*向一个表中添加数据 UPDATE /修改表中已有的数据 3、数据控制语言DCL用来控制用户对数据库对象 操作的权限 主要的命令有: GRANT /授予权限 REMOVE /回收所授予的权*
Transact -SQL 语 言 的 组 成 1、数据定义语言DDL:用来定义和管理数据库中的 对象。 DDL主要的语句有: CREAT TABLE /*创建表*/ ALTER TABLE /*修改表的属性*/ DROP TABLE /*删除表*/ 2、数据操作语言DML:用来操作数据库中的对象和 数据,是T-SQL中最常用的部分。 DML主要的语句有: SELECT /*从一个表或多个表中检索数据*/ DELETE /*从表中删除数据*/ INSERT /*向一个表中添加数据*/ UPDATE /*修改表中已有的数据*/ 3、数据控制语言DCL:用来控制用户对数据库对象 操作的权限。 主要的命令有: GRANT /*授予权限*/ REMOVE /*回收所授予的权限*/
●打开一个数据库 ●使用 SELECT子旬 SELECT句主要用于检索数据,其基本 格式为: 操作数据 SELECT选择列表 FM表的列表 EAR检索的条件 问题】从 Studen表中检索学号为 00000001的学生的姓名( StuName) 要求显示学生的学号和姓名 【练习】要求检索系部编号为01的班级 信息。要求显示班级编号和班级名称
操 作 数 据 打开一个数据库 使用SELECT子句 SELECT子句主要用于检索数据,其基本 格式为: SELECT 选择列表 FROM 表的列表 WHEAR 检索的条件 【 问 题 】 从 Student 表 中 检索 学 号 为 00000001的学生的姓名(StuName), 要求显示学生的学号和姓名 【练习】要求检索系部编号为01的班级 信息,要求显示班级编号和班级名称
1、*的使用 (例】显示学生表中所有信息 (例】从学生表中检索学生所在 班的班级编码 2、使用 DISTINCT (例】从学生表中检索学生所在 班的班级编码,要求清除值相 同的那些行 3、使用T0Pn[ PERCENT (例】从学生表中检索所有的信 息,要求只显示前6行数据
1、*的使用 【例】显示学生表中所有信息 【例】从学生表中检索学生所在 班的班级编码 2、使用DISTINCT 【例】从学生表中检索学生所在 班的班级编码,要求清除值相 同的那些行 3、使用TOP n [PERCENT] 【例】从学生表中检索所有的信 息,要求只显示前6行数据
4、修改检索结果中列的标题 问题】检索学生表中的学号、班级编码和姓 名信息。并修改列标题 方法有三 (1)将要显示的列标题用单引号括起来后接 等号(=),后接要检索的列名 (2)将要显示的列标题用单引号括起来后, 写在列名后面,两者之间使用空格隔开 (3)将要显示的列标题用单引号括起来后, 写在列名后面,两者之间使用AS关键字 【练习】使用其他两种方法
4、修改检索结果中列的标题 【问题】检索学生表中的学号、班级编码和姓 名信息,并修改列标题 方法有三: (1)将要显示的列标题用单引号括起来后接 等号(=), 后接要检索的列名 (2)将要显示的列标题用单引号括起来后, 写在列名后面,两者之间使用空格隔开 (3)将要显示的列标题用单引号括起来后, 写在列名后面,两者之间使用AS关键字 【练习】使用其他两种方法
5、在查询结果中显示字符串 问题】检索课程表的信息,要求给出 检索结果为 课程名称 课程编码 SQL Server实用技术课程编码为 001 课程编码为 课程编码为: 思考:如何检索课程编码是001的课程名称?
5、在查询结果中显示字符串 【问题】检索课程表的信息,要求给出 检索结果为: 课程名称 课程编码 SQL Server实用技术 课程编码为: 001 …… 课程编码为: …… …… 课程编码为: …… 思考:如何检索课程编码是001的课程名称?
6、使用WRE限制检索的条件 【例】检索课程编码为001的课程名称, 要求只显示课程名称 练习】检索上“ Linux操作系统”课 程的教师名 7、表达式作为 SELEO语旬中的列 例〕要求检索课程表的课程信息,并 显示报名人数和限制选课人数之比 思考:如何将上面的检索结果按报名人 数和限制选课人数之比的升序排列?
6、使用WHERE限制检索的条件 【例】检索课程编码为001的课程名称, 要求只显示课程名称 【练习】检索上“Linux操作系统”课 程的教师名 7、表达式作为SELECT语句中的列 【例】要求检索课程表的课程信息,并 显示报名人数和限制选课人数之比 思考:如何将上面的检索结果按报名人 数和限制选课人数之比的升序排列?
8、使用 ORDER BY子句重新排列检索结 果 升序例子】 (降序例子】 也可以在 ORDER BY子句中指定多个列 例】检索课程表的教师名、课程号、课程名, 要求检索结果首先按教师名降序排列,教师 名相同时,则按课程号的升序排列 9、使用IN( NOT IN)关键字 例】检索课程编码为‘00100420137的课 程名称 方法一:使用逻辑运算符OR 方法二:使用IN关键字(比使用逻辑运算符更 为简单)
8、使用ORDER BY子句重新排列检索结 果 【升序例子】 【降序例子】 也可以在ORDER BY子句中指定多个列 【例】检索课程表的教师名、课程号、课程名, 要求检索结果首先按教师名降序排列,教师 名相同时,则按课程号的升序排列 9、使用IN(NOT IN)关键字 【例】检索课程编码为‘001’‘004’‘013’的课 程名称 方法一:使用逻辑运算符OR 方法二:使用IN关键字(比使用逻辑运算符更 为简单)
检索开设了“信息技术”类课 程的教师名及其所开的课程名, 要求先按教师名升序排列,教 所名相同时,按课程名的降序 问排列,并将显示的列名改为中 题 文
问 题 检索开设了“信息技术”类课 程的教师名及其所开的课程名, 要求先按教师名升序排列,教 师名相同时,按课程名的降序 排列,并将显示的列名改为中 文