数据库SQL语言中“表”查询1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表名
FROM Students
过滤条件
WHERE SSEX = 0
排序条件
ORDER BY SCode
SELECT FROM WHERE ORDER BY
sNum,sName,sDepart Student sSEX = 0 sNum
16
数据查询-基础
查询全部的行和列 SELECT * FROM Students 查询部分行 SELECT sNum,sName,sDepart FROM Student WHERE sDepart=‘计算机’
17
数据查询-列名
使用AS来命名列 SELECT sNum AS 学号,sName AS 学员姓名,sDepart AS 专业 FROM student WHERE sDepart <> ‘计算机'
SELECT FirstName+'.'+LastName AS '姓名' FROM Employees 使用=来命名列 SELECT '姓名' = FirstName+'.'+LastName FROM Employees
6
通配符使用说明
通常与LIKE关键字一起来使用 可以用在检查约束中使用LIKE 在后面的查询语句中还会经常使用到
7
逻辑表达式
逻辑表达式
AND OR NOT
说明
逻辑与 逻辑或 逻辑非
示例
1 AND 1 = ; 1 AND 0 = 0; 0 AND 0 = 0; 1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0; NOT 1 = 0; NOT 0 = 1;
8
讲述T-SQL之前…
数据库对象 语法检查 执行 选择数据库
T-SQL
执行 结果
9
Sql语言
四个关键字
select(查) insert(增) update(改) delete(删)
目标
理解查询的机制 使用SELECT语句进行条件查询 在查询中返回限制行、进行查询排序 在查询中使用表达式、运算符和函数
怎么查的?
学员编号 001 002 003 004 005 006 007 008 009 010 011 002 008 010 学员姓名 张明全 李菲 于寄谦 刘国正 周接轮 巩小妹 巩大妹 张明敏 矛十八 罗林光 司马坡 李菲 张明敏 罗林光 地址 湖南长沙 湖北宜昌 甘肃天水 山东荷泽 台湾新竹 香港龙湾 香港龙湾 北京顺义 四川棉阳 陕西临潼 新疆喀什 湖北宜昌 北京顺义 陕西临潼 所在班级 S201 S202 S204 S201 S204 S203 S203 S202 S204 S202 S201 S202 S202 S202 13 … …….SELECT * FROM StudentsH .
21
数据查询-排序 2-2
按多列排序 SELECT StudentID As 学员编号, Score As 成绩 FROM Score WHERE Score>60 ORDER BY Score,CourseID
思考:排序中的字段,可以使用表达式吗? —— 如果不可以,请说明原因; —— 如果可以,请举例说明;
WHERE 所在班级 = ‘S202’
思考
既然查询得到的“结果集”的结构类似于一张表,那么可 以在“结果集”上继续进行查询吗?
14
编写查询语句之前…
ቤተ መጻሕፍቲ ባይዱ
15
查询
SELECT FROM [WHERE [ORDER BY
列名称
SELECT SCode, SName, SAddress
<列名> <表名> <查询条件表达式>] <排序的列名>[ASC或DESC]] 或
CURRENT_USER DATALENGTH HOST_NAME SYSTEM_USER
返回当前用户的名字 返回用于指定表达式的字节 数 返回当前用户所登录的计算 机名字 返回当前所登录的用户名称
USER_NAME
从给定的用户I D返回用户名
27
总结
查询将逐行筛选表中的数据,最后符合要求的 记录重新组合成“记录集”,记录集的结构类 似于表结构 判断一行中的数据项是否为空,使用IS NULL 使用ORDER BY进行查询记录集的排序,并且 可以按照多个列进行排序 在查询中,可以使用常量、表达式、运算符 在查询中使用函数,能够像在程序中那样处理 查询得到的数据项
25
数学函数
函数名 描述 取数值表达式的绝对值 返回大于或等于所给数字表达 式的最小整数 举例 SELECT ABS(-43) 返回:43 SELECT CEILING(43.5) 返回:44
ABS
CEILING
FLOOR POWER ROUND Sign Sqrt
取小于或等于指定表达式的 SELECT FLOOR(43.5) 最大整数 返回:43
取数值表达式的幂值 将数值表达式四舍五入为指定 精度 对于正数返回+1,对于负数返 回-1,对于0 则返回0 取浮点表达式的平方根 SELECT POWER(5,2) 返回:25 SELECT ROUND(43.543,1) 返回:43.5 SELECT SIGN(-43) 返回:-1 SELECT SQRT(9) 返回:3
20
数据查询-排序 2-1
升序排列 SELECT StudentID As 学员编号,(Score*0.9+5) As 综合成绩 FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score 降序排列 SELECT Au_Lname +'.' +Au_fName AS EMP From Authors Union SELECT fName +'.'+ LName AS EMP From Employee ORDER BY EMP DESC
26
系统函数
函数名 CONVERT 描述 用来转变数据类型 举例 SELECT CONVERT (VARCHAR (5), 12345) 返回:字符串12345 SELECT CURRENT_USER 返回:你登录的用户名 SELECT DATALENGTH ('中国A盟') 返回:7(一个汉字占两个字节) SELECT HOST_NAME() 返回:你所登录的计算机的名字 SELECT SYSTEM_USER 返回:你当前所登录的用户名 (登录电脑的用户名) SELECT USER_NAME(1) 返回:从任意数据库中返回“dbo”
举例
SELECT CHARINDEX(‘sql','My sql Course',1 ) 返回:4 SELECT LEN('SQL Server课程') 返回:12 SELECT LOWER('SQL Server课程') 返回:sql server课程 SELECT UPPER('sql server课程') server ') 返回:SQL SERVER课程 SELECT LTRIM (' 周智宇 ') 返回:周智宇 (后面的空格保留) SELECT RTRIM (' 周智宇 ') 返回: 周智宇(前面的空格保留) SELECT RIGHT('买卖提.吐尔松',3) 返回:吐尔松 SELECT REPLACE('莫乐可切.杨可','可','兰') 返回:莫乐兰切.杨兰 SELECT STUFF('ABCDEFG', 2, 3, '我的音乐我的世界') 返回:A我的音乐我的世界EFG
LEN LOWER UPPER LTRIM RTRIM RIGHT REPLACE
STUFF
在一个字符串中,删除指定长度的字符, 并在该位置插入一个新的字符串
24
日期函数
函数名 GETDATE DATENAME DATEPART 描述 取得当前的系统日期 日期中指定日期部分的字符串 形式 日期中指定日期部分的整数形 式 举例 SELECT GETDATE() 返回:今天的日期 SELECT DATENAME(dw,’01/01/2000’) 返回:Saturday SELECT DATEPART(day, ’01/15/2000’) 返回:15
18
数据查询-空行常量列
查询空行 SELECT sName FROM students WHERE sAge IS NULL
思考:非空行怎么查?
使用常量列 SELECT 姓名=sName,性别= sSex,‘中南大学' AS 学校名称 FROM student
19
数据查询-限制行数
限制固定行数 SELECT TOP 5 sName, sDepart FROM Student WHERE sSex = 0 返回百分之多少行 SELECT TOP 20 PERCENT sName, sDepart FROM Student WHERE sSex = 0
11
什么是查询?
SELECT * FROM SALES
查询请求 查询结果集 Application Logic SQL SERVER
客户程序
A B C D E F G
查询产生一个虚拟表,看到的是表形式显示的结果,但结 果并不真正存储,每次执行查询只是现从数据表中提取数 据,并按照表的形式显示出来
12
28
第二章 数据查询1
1
回顾
数据完整性包括了实体完整性、引用完整 性、域完整性和自定义完整性 创建数据库表的过程实际上就是实施完整 性约束的过程 创建表包括选择字段名称、数据类型、定 义是否为空、设置默认值、主键和关系、 检查约束等 表中没有合适的列作为主键,可以创建标 识列
2
目标
理解T-SQL及其作用 使用SQL Server中的逻辑表达式和运算符 使用T-SQL向表中插入数据 使用T-SQL更新表中的数据 T-SQL 使用T-SQL删除表中的数据
3
SQL
WHAT(SQL是什么?)
——Structured Query Language:结构化查询语言
WHY(为何要使用SQL?)
—— ——难道仅仅使用企业管理器操作SQL Server数据库? SQL Server ? ——应用程序如何与数据库打交道?
WHEN(何时使用?)
——对SQL Server执行所有的操作都可以 ——程序中的增删改查
HOW(怎么使用?)
——…
4
T-SQL中的运算符
运算符 = > < >= <= <> ! 等于 大于 小于 大于或等于 小于或等于 不等于 非 含义
语言中的一样, 与C语言中的一样,很难写错 语言中的一样
5
通配符
通配符
‘_’ % 一个字符 任意长度的字符串
解释
示例
A Like 'C_' B Like 'CO_%'
22
SQL Server中的函数
字符串函数 日期函数 数学函数 系统函数
相当于C语言中的内部函数
23
字符串函数
函数名
CHARINDEX
描述
用来寻找一个指定的字符串在另一个字符 串中的起始位置 返回传递给它的字符串长度 把传递给它的字符串转换为小写 把传递给它的字符串转换为大写 清除字符左边的空格 清除字符右边的空格 从字符串右边返回指定数目的字符 替换一个字符串中的字符
FROM Students
过滤条件
WHERE SSEX = 0
排序条件
ORDER BY SCode
SELECT FROM WHERE ORDER BY
sNum,sName,sDepart Student sSEX = 0 sNum
16
数据查询-基础
查询全部的行和列 SELECT * FROM Students 查询部分行 SELECT sNum,sName,sDepart FROM Student WHERE sDepart=‘计算机’
17
数据查询-列名
使用AS来命名列 SELECT sNum AS 学号,sName AS 学员姓名,sDepart AS 专业 FROM student WHERE sDepart <> ‘计算机'
SELECT FirstName+'.'+LastName AS '姓名' FROM Employees 使用=来命名列 SELECT '姓名' = FirstName+'.'+LastName FROM Employees
6
通配符使用说明
通常与LIKE关键字一起来使用 可以用在检查约束中使用LIKE 在后面的查询语句中还会经常使用到
7
逻辑表达式
逻辑表达式
AND OR NOT
说明
逻辑与 逻辑或 逻辑非
示例
1 AND 1 = ; 1 AND 0 = 0; 0 AND 0 = 0; 1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0; NOT 1 = 0; NOT 0 = 1;
8
讲述T-SQL之前…
数据库对象 语法检查 执行 选择数据库
T-SQL
执行 结果
9
Sql语言
四个关键字
select(查) insert(增) update(改) delete(删)
目标
理解查询的机制 使用SELECT语句进行条件查询 在查询中返回限制行、进行查询排序 在查询中使用表达式、运算符和函数
怎么查的?
学员编号 001 002 003 004 005 006 007 008 009 010 011 002 008 010 学员姓名 张明全 李菲 于寄谦 刘国正 周接轮 巩小妹 巩大妹 张明敏 矛十八 罗林光 司马坡 李菲 张明敏 罗林光 地址 湖南长沙 湖北宜昌 甘肃天水 山东荷泽 台湾新竹 香港龙湾 香港龙湾 北京顺义 四川棉阳 陕西临潼 新疆喀什 湖北宜昌 北京顺义 陕西临潼 所在班级 S201 S202 S204 S201 S204 S203 S203 S202 S204 S202 S201 S202 S202 S202 13 … …….SELECT * FROM StudentsH .
21
数据查询-排序 2-2
按多列排序 SELECT StudentID As 学员编号, Score As 成绩 FROM Score WHERE Score>60 ORDER BY Score,CourseID
思考:排序中的字段,可以使用表达式吗? —— 如果不可以,请说明原因; —— 如果可以,请举例说明;
WHERE 所在班级 = ‘S202’
思考
既然查询得到的“结果集”的结构类似于一张表,那么可 以在“结果集”上继续进行查询吗?
14
编写查询语句之前…
ቤተ መጻሕፍቲ ባይዱ
15
查询
SELECT FROM [WHERE [ORDER BY
列名称
SELECT SCode, SName, SAddress
<列名> <表名> <查询条件表达式>] <排序的列名>[ASC或DESC]] 或
CURRENT_USER DATALENGTH HOST_NAME SYSTEM_USER
返回当前用户的名字 返回用于指定表达式的字节 数 返回当前用户所登录的计算 机名字 返回当前所登录的用户名称
USER_NAME
从给定的用户I D返回用户名
27
总结
查询将逐行筛选表中的数据,最后符合要求的 记录重新组合成“记录集”,记录集的结构类 似于表结构 判断一行中的数据项是否为空,使用IS NULL 使用ORDER BY进行查询记录集的排序,并且 可以按照多个列进行排序 在查询中,可以使用常量、表达式、运算符 在查询中使用函数,能够像在程序中那样处理 查询得到的数据项
25
数学函数
函数名 描述 取数值表达式的绝对值 返回大于或等于所给数字表达 式的最小整数 举例 SELECT ABS(-43) 返回:43 SELECT CEILING(43.5) 返回:44
ABS
CEILING
FLOOR POWER ROUND Sign Sqrt
取小于或等于指定表达式的 SELECT FLOOR(43.5) 最大整数 返回:43
取数值表达式的幂值 将数值表达式四舍五入为指定 精度 对于正数返回+1,对于负数返 回-1,对于0 则返回0 取浮点表达式的平方根 SELECT POWER(5,2) 返回:25 SELECT ROUND(43.543,1) 返回:43.5 SELECT SIGN(-43) 返回:-1 SELECT SQRT(9) 返回:3
20
数据查询-排序 2-1
升序排列 SELECT StudentID As 学员编号,(Score*0.9+5) As 综合成绩 FROM Score WHERE (Score*0.9+5)>60 ORDER BY Score 降序排列 SELECT Au_Lname +'.' +Au_fName AS EMP From Authors Union SELECT fName +'.'+ LName AS EMP From Employee ORDER BY EMP DESC
26
系统函数
函数名 CONVERT 描述 用来转变数据类型 举例 SELECT CONVERT (VARCHAR (5), 12345) 返回:字符串12345 SELECT CURRENT_USER 返回:你登录的用户名 SELECT DATALENGTH ('中国A盟') 返回:7(一个汉字占两个字节) SELECT HOST_NAME() 返回:你所登录的计算机的名字 SELECT SYSTEM_USER 返回:你当前所登录的用户名 (登录电脑的用户名) SELECT USER_NAME(1) 返回:从任意数据库中返回“dbo”
举例
SELECT CHARINDEX(‘sql','My sql Course',1 ) 返回:4 SELECT LEN('SQL Server课程') 返回:12 SELECT LOWER('SQL Server课程') 返回:sql server课程 SELECT UPPER('sql server课程') server ') 返回:SQL SERVER课程 SELECT LTRIM (' 周智宇 ') 返回:周智宇 (后面的空格保留) SELECT RTRIM (' 周智宇 ') 返回: 周智宇(前面的空格保留) SELECT RIGHT('买卖提.吐尔松',3) 返回:吐尔松 SELECT REPLACE('莫乐可切.杨可','可','兰') 返回:莫乐兰切.杨兰 SELECT STUFF('ABCDEFG', 2, 3, '我的音乐我的世界') 返回:A我的音乐我的世界EFG
LEN LOWER UPPER LTRIM RTRIM RIGHT REPLACE
STUFF
在一个字符串中,删除指定长度的字符, 并在该位置插入一个新的字符串
24
日期函数
函数名 GETDATE DATENAME DATEPART 描述 取得当前的系统日期 日期中指定日期部分的字符串 形式 日期中指定日期部分的整数形 式 举例 SELECT GETDATE() 返回:今天的日期 SELECT DATENAME(dw,’01/01/2000’) 返回:Saturday SELECT DATEPART(day, ’01/15/2000’) 返回:15
18
数据查询-空行常量列
查询空行 SELECT sName FROM students WHERE sAge IS NULL
思考:非空行怎么查?
使用常量列 SELECT 姓名=sName,性别= sSex,‘中南大学' AS 学校名称 FROM student
19
数据查询-限制行数
限制固定行数 SELECT TOP 5 sName, sDepart FROM Student WHERE sSex = 0 返回百分之多少行 SELECT TOP 20 PERCENT sName, sDepart FROM Student WHERE sSex = 0
11
什么是查询?
SELECT * FROM SALES
查询请求 查询结果集 Application Logic SQL SERVER
客户程序
A B C D E F G
查询产生一个虚拟表,看到的是表形式显示的结果,但结 果并不真正存储,每次执行查询只是现从数据表中提取数 据,并按照表的形式显示出来
12
28
第二章 数据查询1
1
回顾
数据完整性包括了实体完整性、引用完整 性、域完整性和自定义完整性 创建数据库表的过程实际上就是实施完整 性约束的过程 创建表包括选择字段名称、数据类型、定 义是否为空、设置默认值、主键和关系、 检查约束等 表中没有合适的列作为主键,可以创建标 识列
2
目标
理解T-SQL及其作用 使用SQL Server中的逻辑表达式和运算符 使用T-SQL向表中插入数据 使用T-SQL更新表中的数据 T-SQL 使用T-SQL删除表中的数据
3
SQL
WHAT(SQL是什么?)
——Structured Query Language:结构化查询语言
WHY(为何要使用SQL?)
—— ——难道仅仅使用企业管理器操作SQL Server数据库? SQL Server ? ——应用程序如何与数据库打交道?
WHEN(何时使用?)
——对SQL Server执行所有的操作都可以 ——程序中的增删改查
HOW(怎么使用?)
——…
4
T-SQL中的运算符
运算符 = > < >= <= <> ! 等于 大于 小于 大于或等于 小于或等于 不等于 非 含义
语言中的一样, 与C语言中的一样,很难写错 语言中的一样
5
通配符
通配符
‘_’ % 一个字符 任意长度的字符串
解释
示例
A Like 'C_' B Like 'CO_%'
22
SQL Server中的函数
字符串函数 日期函数 数学函数 系统函数
相当于C语言中的内部函数
23
字符串函数
函数名
CHARINDEX
描述
用来寻找一个指定的字符串在另一个字符 串中的起始位置 返回传递给它的字符串长度 把传递给它的字符串转换为小写 把传递给它的字符串转换为大写 清除字符左边的空格 清除字符右边的空格 从字符串右边返回指定数目的字符 替换一个字符串中的字符