当前位置:文档之家› SQLServer数据查询select语言及函数

SQLServer数据查询select语言及函数


函数名
描述
举例
CONVERT
用来转变数据类型
SELECT CONVERT (VARCHAR (5),
12345) 返回:字符串12345
CURRENT_USER 返回当前用户的名字
SELECT CURRENT_USER 返回:你登录的用户名
DATALENGTH
返回用于指定表达式的字节 SELECT DATALENGTH ('中国A盟')
S202 S202
…….SELECT * FROM StudentsH WHERE 所在班级 = ‘S202’
思考
既然查询得到的“结果集”的结构类似于一张表,那 么可以在“结果集”上继续进行查询吗?
SELECT <列名>
FROM
<表名>
[WHERE <查询条件表达式>]
[ORDER BY <排序的列名>[ASC或DESC]]
现在希望通过SQL语句进行排序,并且首先要按照前 半部分的数字进行排序,然后再按照后半部分的数字 进行排需,输出要排成这样:
13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13108、14-1、14-2
数据库表名:SellRecord;字段名:ListNumber;
使用=来命名列
SELECT '姓名' = FirstName+'.'+LastName FROM Employees
数据查询-空行常量列
查询空行
SELECT SName FROM Students WHERE SEmail IS NULL
思考:非空行怎么查?
使用常量列
SELECT 姓名=SName,地址= SAddress,'河北新龙' AS 学校
返回传递给它的字符串长度 把传递给它的字符串转换为小写 把传递给它的字符串转换为大写 清除字符左边的空格 清除字符右边的空格 从字符串右边返回指定数目的字符 替换一个字符串中的字符
SELECT LEN('SQL Server课程') 返回:12
SELECT LOWER('SQL Server课程') 返回:sql server课程
SELECT REPLACE('莫乐可切.杨可','可','兰') 返回:莫乐兰切.杨兰
在一个字符串中,删除指定长度的字符, SELECT STUFF('ABCDEFG', 2, 3, '我的音乐我的世界')
并在该位置插入一个新的字符串
返回:A我的音乐我的世界EFG
日期函数
函数名 GETDATE DATEADD DATEDIFF
一行SQL语句 Update Card Set PassWord = Replace(Replace(密码,'O','0'),'i','1')
案例分析2—要求
在数据库表中有以下字符数据,如:
13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、 13-15、14-1、14-2
据行 使用TRUNCATE TABLE来删除所有数据时,效率要比
DELETE语句高 上面的数据操作语句在程序中会经常使用到
2
目标
理解查询的机制 使用SELECT语句进行条件查询 在查询中返回限制行、进行查询排序 在查询中使用表达式、运算符和函数
什么是查询?
SELECT * FROM SALES
数据查询-排序 2-2
按多列排序
SELECT StudentID As 学员编号, Score As 成绩 FROM Score WHERE Score>60 ORDER BY Score,CourseID
思考:排序中的字段,可以使用表达式吗? —— 如果不可以,请说明原因; —— 如果可以,请举例说明;
案例分析1—要求
某公司印了一批充值卡,卡的密码是随机生成的,现 在出现这个问题:
卡里面的“O和0”(哦和零)“i和1”(哎和一),用户反映说看不 清楚,公司决定,把存储在数据库中的密码中所有的“哦”都改 成“零”,把所有的“i”都改成“1”;
请编写SQL语句实现以上要求;
数据库表名:Card;密码字段名:PassWord;

返回:7
HOST_NAME
返回当前用户所登录的计算 SELECT HOST_NAME()
机名字
返回:你所登录的计算机的名字
SYSTEM_USER
返回当前所登录的用户名称 SELECT SYSTEM_USER 返回:你当前所登录的用户名
USER_NAME
从给定的用户I D返回用户名 SELECT USER_NAME(1) 返回:从任意数据库中返回“dbo”
数据查询-排序 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
SELECT POWER(5,2) 返回:25
将数值表达式四舍五入为指定 精度
对于正数返回+1,对于负数返 回-1,对于0 则返回0
SELECT ROUND(43.543,1) 返回:43.5
SELECT SIGN(-43) 返回:-1
取浮点表达式的平方根
SELECT SQRT(9) 返回:3
系统函数
案例分析2—分析
这是查询语句,需要使用SELECT语句 需要使用到ORDER BY进行排序,并且在ORDER
BY的排序列中,也需要重新计算出排序的数字来 前半部分的数字,可以从先找到“-”符号的位置,然
后,取其左半部分,最后再使用Convert函数将其转 换为数字:
Convert(int, Left(ListNumber, CharIndex('-', ListNumber)-1))
返回:4
DATENAME DATEPART
日期中指定日期部分的字符串 SELECT DATENAME(dw,’01/01/2000’)
形式
返回:Saturday
日期中指定日期部分的整数形 SELECT

DATEPART(day, ’01/15/2000’)
返回:15
数学函数
函数名
ABS
CEILING
查询请求
客户程序
查询结果集 Application Logic
ABC DEFG
SQL SERVER
查询产生一个虚拟表,看到的是表形式显示的结果,但结 果并不真正存储,每次执行查询只是现从数据表中提取数 据,并按照表的形式显示出来
怎么查的?
学员编号 001 002 003 004 005 006 007 008 009 010 011
案例分析1—分析
这是更新语句,需要使用UPDATE语句; 因为牵涉到字符串的替换,需要使用到SQL Server中
的函数Replace;
案例分析1—T-SQL
两行SQL语句 Update Card Set PassWord = Replace(密码,'O','0') Update Card Set PassWord = Replace(密码,'i','1')
第四章 数据查询(1)
回顾
SQL分为数据操作语言、数据控制语言和数据定义语言; T-SQL是SQL的扩展
通配符经常与LIKE一起使用来进行非精确的限制; 一次插入多行数据,可以使用INSERT…SELECT…、
SELECT…INTO…或者UNION关键字来实现 标识列不能插入指定的数据值 使用UPDATE更新数据,一般都有限制条件 使用DELETE删除数据时,不能删除被外键值所引用的数
,,,,,,,,,,,,,,
FROM SellRecord
ORDER BY
Convert(int, Left(ListNumber, CharIndex('-', ListNumber)-1)),
Convert(int, Stuff(ListNumber,1, Charindex('-', ListNumber), ''))
思考:还有其他的计算出排序列方法吗?
总结
查询将逐行筛选表中的数据,最后符合要求的记 录重新组合成“记录集”,记录集的结构类似于 表结构
字符串函数 日期函数 数学函数 系统函数
SQL Server中的函数
相当于excel中的内部函数
字符串函数
函数名
CHARINDEX
LEN LOWER UPPER LTRIM RTRIM RIGHT REPLACE
STUFF
描述
用来寻找一个指定的字符串在另一个字符 串中的起始位置
举例
SELECT CHARINDEX(‘test','My test Course',1 ) 返回:4
FLOOR POWER ROUND Sign Sqrt
描述
举例
取数值表达式的绝对值
相关主题