ACCP学习旅程之----- SQL Server2(第三章 SQL数据管理)

新列名永远不用单引号

1)使用As子句可改变结果集列的名称(同上),as 可省略。
2)使用As子句可将表达式或列明的组合指定为新的查询显示
   列名

   如: select firstname+’.’+lastname as 姓名
        from Employees

特别注意:上例中使用了“+”(符号连接符)连接两个列名,然
          后用as生成新列名,这里加号两端数据类型须一致。

          如果是字符类型的两串连接,只要都是字符大类的就
          行,不必完全相同,可包括:char,varchar,nvarchar
3)使用等号“=”改变列名(效果同AS)
   如: select 姓名= firstname+’-‘+lastname
        from Employees
6$ 查询空行:在where后用“is null”或“is not null”判断是否是空行(略)
7$ 在查询中使用常量列

   即在查询输出中将某一列的所有值设定为常量信息

   如: select 姓名=sname,地址=address,‘河北新龙’as 学校名称

   上例查询结果中的新列名“学校名称”下的所有值都为“河北新龙”
8$ 限制查询返回的行数
1.。使用top关键字限制返回行数

   如:从Students表中查询性别为女的前5名学生的姓名和地址
       select top 5 sname, saddress from Students where ssex=0

  再如:查询Students表中包含所有列的前三行
       select top 3 * from Students
特别注意:top+显示行数 后面必须有列名,如没有也必须加上*
2.。使用percent关键字限制返回的行数

    返回表中符合where查询条件的记录行数中的percent%行

    如: 查询Students表中女学生姓名和地址,只要20%的数据行
     select top 20 percent sname, saddress from Students where ssex=0
    ???????????percent必须与top一起使用吗?????????
     如果没有top是自上而下选取还是随机选取呢???????
答案:
     自上而下
特别注意:percent%的计算结果只要有小数位就必须加一
   如:20%的记录是2.4行,则查询结果显示3行
3¥ 给查询结果排序(使用order by子句,略)
特别注意:order by 子句后面可以按照多个字段排序,其结果是按照书写
          顺序进行相应的优先排序。

  如:在学员成绩排序的基础上再按照课程ID进行排序
    select Student id as 学员编号,Score as 成绩
    from Score
    where Score>60
    order by Score,Courseid
4¥ 在查询中使用函数
特别注意:所有函数使用时,前面必须有select,否则没用
1$ 字符串函数
特别注意:SQL Server中的字符串中的字符位从1开始计算
1.。 CharIndex(定位指定字符串在另一字符串中的起始位置)

  select CharIndex(指定字符串,被查找字符串,[开始查找的起始位])

  1)查找起始位置如是负数或0或没有,都从头(位置1)开始查找
  2)如从起始位置开始到末尾都没有查到,返回值为0

如:Select CharIndex(‘ACCP’,’My Accp Course’,1)   返回4





2.。Len(返回字符串参数的长度)
  select Len(字符串参数)

    统计方式中,汉字与英文字母一样,只占一个字符为
    如:select Len(‘SQL Server课程’)
        返回值为12




3.。Upper(把字符串参数中的所有字符转换为大写)
    如:select Upper(‘sql server课程’)
        返回:SQL SERVER课程

    转换为小写使用Lower,形如:select Lower(字符串参数)




4.。Rtrim(清楚字符右边的空格,左边的空格保留)
    如: select Rtrim ‘  周智勇   ’  
    返回:’  周智勇’(右边的空格被清除了)

    去掉字符串左右两边的空格(嵌套使用Rtrim和Ltrim)
    如: string A = ‘    aaa      ‘
         select Ltrim(Rtrim(A))
    返回:’aaa’   (先去了右边的,其结果作为新参数再去左边)




5.。Right(Left):从字符串右(左)边截取指定数目的字符
    用法: select Right(被查字符串,返回的字符数)
    说明: 左截取相当于指定字符数的掐头,
           右截取相当于指定字符数的截尾。

    如: select Right(‘买卖提。土尔松’,3)
    返回:土尔松




6.。Replace(替换一个字符串中的字符)
    用法: select Replace(被查字符串,要被替换的字符,替换字符)
    如: select Replace(‘莫乐可切。杨可’,’可’,’兰’)
    返回:莫乐兰切。杨兰




7.。Stuff(在字符串中,从指定位置(包含该位置) 开始删除指定
          长度字符,并在从该位置开始插入一个新的字符串)

    如: select Stuff(‘abcdefg’,2,3,’我的音乐我的世界’)
    返回:(从第2位开始删除3个字符,插入后串)
           ‘a我的音乐我的世界efg’




8.。Substring(从字符串指定位置(含该位置)截取指定长度的子串

   用法:select Substring(被截取的字符串,截取开始位置,截取长度)

   如:select Substring(‘阜成门北大青鸟’,3,3)
   返回:’门北大’
1)截取开始位置如为0或负数,则返回位置>o的所有字符(即
   全部原字符串)
2)截取开始位置值如大于原字符串长度,则返回长度为0的字
   符串即‘’(注意返回的仍是字符串“”,不是0)
3)如没有截取长度,则返回从截取开始位置到尾的全部字符





2$ 日期函数
特别注意1:不能直接对日期运用数学函数 形如:“当前日期+1”
  系统无法判断年月日到底加哪一个。
特别注意2:日期的理解格式为:月 / 日 / 年
特别注意3:查询语句中,括号里的日期数据须带有单引号,‘’
特别注意4:重要实例 2)where后不能简单的跟age,
            因为新建的别名不能用于条件语句和再次查询。
                
1.。GetDate(取得当前的系统日期) select GetDate()
2.。DateAdd(返回:依据返回参数不同,将指定的数值加到指定日
                   期上后的日期值)

    用法:select DateAdd(返回类型参数,添加值,指定的原日期)

    如:select DateAdd(mm,4,’01/01/99’)

    返回:05/01/99
1)括号里的日期数据需带有单引号,‘’
2)返回类型参数:  mm   返回值在月上加
                   yy    返回值在年上加
                   dd    返回值在天上加
3.。DateDiff(两个日期之间的指定日期部分的整数差值)
    用法: select DateDiff(返回类型参数,前日期,后日期)

    如:select DateDiff(mm,’01/01/99’,’05/01/99’)
    返回:(后日期减去前日期的四则运算值)   4
1)返回值可以是:正数  后日期晚于前日期
                 负数  后日期早于前日期
                    0  后日期等于前日期
2)返回类型参数:  mm   返回月的整数差值
                   yy    返回年的整数差值
                   dd    返回天的整数差值
3)如果两个日期是跨年度的,系统自动计算年度中包含的全部
   返回类型参数量。

 如:select datediff(dd,'02/01/1999','09/01/2000')
     返回:578
     自动包含了一个整年365天
  
再如:select datediff(mm,'02/01/1999','09/01/2000')
     返回:19
     自动包含了一个12个月
 
4.。DateName(返回日期值中,指定日期部分的字符串形式)
  
    用法: select DateName(返回类型参数, 被查的日期值)

    如:select DateName(dw,’01/01/2000’)
   返回:Saturday(中文系统显示 星期六)


   返回类型参数: dy或y     当年的第几天
                  dd或d     当月的第几天
                  wk或ww   当年的第几个星期
                  dw         按工作日计算的星期几
                  yy或yyyy   当年的年份值
                  qq或q      当年的第几季度
                  mm或m     日期当中的月份值

   请注意:虽然返回值看似都是整数,但是他们都是字符串形式。
5.。DatePart(返回日期中指定日期部分的整数形式)

    用法: select DatePart(返回类型参数,被查的日期值)

    如: select DatePart(day,’01/15/2000’)
   返回:15


   返回类型参数: dy或y     当年的第几天
                  dd或d     当月的第几天
                  wk或ww   当年的第几个星期
                  dw         按工作日计算的星期几
                  yy或yyyy   当年的年份值
                  qq或q      当年的第几季度
                  mm或m     日期当中的月份值
DateName和DatePart小结:除了返回值数据类型不同,完全相同
6.。返回日期之中的部分日期信息的函数(返回值为整数)

    整数形式,返回当前日期的年份:  select year(getdate())
    整数形式,返回当前日期的月份:  select month(getdate())
    整数形式,返回当前日期是几号:  select day(getdate())
7.。重要实例
1)将表中设置为时间/日期型数据的列中的值去掉00:00:00
   设某时间日期型字段名为d:

   select datename(yy,d)+‘-’+datename(mm,d)+‘-’
                             +datename(dd,d)
2)查询18岁以上的学生信息
   select name,datediff(yy,birthday,getdate()) as age
   from t
   where datediff(yy,birthday,getdae())>18
3)查询和BB同年出生的学生信息(重复查询)
   select * from t
   where year(birthday)=(select year(birthday) from t
                                where name=’BB’ )
   and name<>’BB’
特别注意:2)例中where后不能简单的跟age,

   select name,datediff(yy,birthday,getdate()) as age
   from t
   where age>18

    因为新建的别名
               不能用于条件语句和再次查询。
3$ 数字函数
1.。Abs(取数值表达式的绝对值) select Abs(-43)  返回:43
2.。Ceiling(取大于或等于指定数值,表达式最小的整数)
    select Ceiling(43.5)  返回:44   (注意不是四舍五入)

    即:天花板数查询
3.。Floor(取小于或等于表达式的最大整数值)
    select Floor(43.5)   返回:43    (注意不是四舍五入)

    即:地板数查询
4.。Power(取数值表达式的幂值)
    select Power(5,2)   返回:25
5.。Round(将数值表达式四舍五入为指定精度)
    select Round(43.543, 1)    返回:43.5
6.。Sign(对于正数返回+1,对于负数返回-1,0返回0)
     select sign(-43)     返回:-1
7.。Sqrt(取浮点表达式的平方根)
     select sqrt(9)     返回:3   (返回值也是浮点式的)
8.。Rand(返回介于 0 和 1 之间的随机 float 值)

  用法: Rand(数字种子)

  说明: 数字种子,可以隐式转换为 int 的整数表达式,给出种子
         或起始值
重要实例:产生4位随机整数

      Convert(varchar(4),
              select right(rand(datepart(ms,getdate())*1000),4))

   说明:datepart(ms,getdate())à取当前时间的毫秒数
        以此为基础产生0~1之间的多位随机小数,再乘以1000
        然后去最右4位,最后转换为字符串类型。

        详见P148页

4$ 系统函数
1.。Convert(用来转换数据类型)

    用法:select convert(转换后的数据类型,被转换的数据)
   
      如:select convert(varchar(5),12345)   返回:’12345’

     转换后的数据可以是任何类型,只需逻辑正确。

      如:  stringàdatetime
            stringàint
2.。Current_user(返回本数据库文件安全性中的用户名)
3.。DataLength(返回用于指定表达式的字节数—汉字占个两个字节)
    如: select DataLength(’中国A联盟’)   返回:9
   对比:select Len('中国A联盟’)          返回:5
4.。Host_Name(返回当前用户所登录的计算机名—计算机名)
5.。System_User(返回当天登录的用户名称—SQL登录名)
6.。User_Name(从给定的用户ID返回用户名)?????
    如: select user_name(1)   返回:从任意数据库中返回“dbo”
                       (2)   返回:guest
                其他参数:详见参数

 

你可能感兴趣的:(sql,数据,管理,表达式,Accp)