zoukankan      html  css  js  c++  java
  • 数据库查询的基础技巧

                   窗外,一片烟水迷离,不远处灯光璀璨,喧闹之声清晰可辩,那些记忆里的爱与哀愁,千丝万缕,交织成殇,仿佛今日连绵的惆怅一去不返。

    诶闲话少说还是继续敲我的代码吧

                 

      Hello ,大家好,欢迎来到差点是美男,你好我好大家好的技术平台,接下来就由我为大家揭开数据库基础查询的神秘面纱吧

        揭开之前先来跟我了解一下T-SQL的查询机制:

                    查询是针对表中已经存在的数据行而言的,可以简单的理解为“筛选”将符合条件的数据抽选出来。数据表在接受查询请求的时候,可以简单的

    理解为“它将逐行判断”,判断是否符合查询条件。如果符合查询条件就提取出来,然后把所有被选中的行组织在一起,形成另外一个类似于表的结构。构成

    的查询结果,通常叫做记录集(RecordSet)由于记录集的结构实际上和表的结构类似,都是由组成的,因此在记录集上依然依然可以进行再次查询。

    最最最基础SELECT查询语句:

    Select<列名>
    From<表名>
    [Where <查询条件表达式>]
    [Order By <排列的列名>[ASC(升序)或DESC(降序)]
    Select查询语法

    查询所有的数据行和列:

    例如查看学生表所有的行和列
    Select  *  from  students

    查询部分行和列

    例如查看是北京学生的部分信息
    Select  Scode. Sname,SAddress
    From students
    Where SAddress ='北京'

    在查询中使用列的别名

    Select SCode  AS 学生编号,SName  AS 学生姓名
    From Students
    Where SAddress ='北京'

    请听专业人士如何解释AS子句:

    AS子句可以用来改变结果集中的名称,也可以为组合或者计算出的列指定名称,还有一种情况是让标题列的信息更易懂。

    查询空值

    //查询学生信息表中没有填写Email的信息的学生,
    //反向取值使用IS NOT NULL
    Select SName From Students
    Where SEmsil IS NULL

    在查询中使用常量列

    //例如查询学校名称统一都是“北大青鸟”,查询语句如下:
    Select 姓名=SName,地址=SAddress,'北大青鸟'AS学校名称
    From Students

    查询返回限制的行数

    //查询返回众多学生记录中前位女生的姓名和地址信息
    Select TOP  5  SName, SAdress
    From Students
    Where SSex=0 

    按一定的百分比提取记录用到PERCENT关键字

    Select TOP 20 PERCENT SName, SAddress
    From Students 
    Where SSex=0

    查询排序

    专业人士教你使用Order By 装X之术

    Order By  :需要排列查询选中的行的时候就要使用Order By 子句,并且告诉大家一个秘密,它可以使升序或降序排列(ASC升序DESC降序)一般人我不告诉他。记住如果不指定ASC或DESC结果集按默认ASC升序排序。

    //例如查询学生的成绩,升序查看
    Select StudentName,StudenScore
    From Score
    Where StudentScore>=60
    Order by Score

    通配符:

    %:任意长度的任意字符,(包含0个)

    :_:任意的单个字符,只能是一个字符

    where后多个条件通过and连接,order by才用逗号

    =(完全匹配)like(模糊查询)

    在查询基础之上的技术:使用函数

    函数:常用的有四类函数,分别是字符串函数丶日期函数丶数学函数丶系统函数。

    字符串函数:

    // 返回字符表达式中最左侧字符的ASCII代码值
    select Ascii('a') --a:97,A:65 
    //将整数ASCII代码转换为字符
    select Char(97)--97:a,65:A 
    //返回表达式中指定字符的开始位置
    select Charindex('b','abcdefg',5)
    //以整数返回两个字符表达式的SOUNDEX值之差
    select Difference('bet','bit')--3
    //返回字符表达式最左侧指定数目的字符
    select Left('abcdefg',3)--abc 
    //返回给定字符串表达的字符数
    select Len('abcdefg')--7 
    // 返回将大写字符转换为小字符的字符表达式
    select Lower('ABCDEFG')--abcdefg 
    //返回删除了前导空格之后字符表达式
    select Ltrim('   abcdefg')--abcdefg 
    //返回具有给定的整数代码的UNICODE字符
    select Nchar(65)--A
    //返回指定表达式中模式第一次出现的开始位置
    select Patindex('%_cd%','abcdefg')--2
    //返回为成为有效的SQL SERVER分隔标识符而添加了分隔符的UNICODE字符串
    select Quotename('create table') 
    //用第三个表达式替换第一个表达式中出现的第二个表达式
    select Replace('abcdefg','cd','xxx')--abxxxefg 
    //按指定次数重复表达式
    select Replicate('abc|',4)--abc|abc|abc|abc|
    //返回字符表达式的逆向表达式
    select Reverse('abc')--cba

    日期函数:

    //获得当前系统时间
    select getdate()
    //返回表示指定日期的指定日期部分的字符串
    //其中datepart 可以是year,month,weekday
    DateName ( datepart , date ) 
    SELECT DATENAME(year, getdate()) AS 'Year Name' --------返回:2012
     
    SELECT DATENAME(month, getdate()) AS 'Month Name'  --------返回:07
     
    SELECT DATENAME(weekday, getdate()) AS 'Weekday Name'------返回:星期一
    //DATEADD (datepart , number, date ),向指定日期加上一段时间,返回新的 datetime 值。
    select DateAdd(MM,2,'2008-8-8') --------------返回:2008-10-08 00:00:00.000
    
    select DateAdd(dd,2,'2008-8-8') --------------返回:2008-08-10 00:00:00.000
    
    select dateadd(hh,-1,getdate()) --------------返回:2012-07-02 15:26:25.240,返回前一个小时的时间
    //.DATEDIFF ( date-part, date-expression-1, date-expression-2 ) 返回两个日期之间的时间间隔,此函数计算两个指定日期之间的差值,结果为日期部分中等于(date2-date1)的有符号的整数值
    SELECT datediff( hour, '4:00AM', '5:50AM' )---------------------------返回: 1
    
    SELECT datediff( month, '1987/05/02', '1995/11/15' )------------------返回: 102
    
    SELECT datediff( day, '00:00', '23:59' )------------------------------返回:0
    
    SELECT datediff( day,  '1999/07/19 00:00',  '1999/07/23 23:59' )------返回:4
    
    SELECT datediff( month, '1999/07/19', '1999/07/23' )------------------返回:0
    
    SELECT datediff( month, '1999/07/19', '1999/08/23' )------------------返回:1
    //DATEPART ( datepart ,date )返回代表指定日期的指定日期部分的整数。
    SELECT DATEPART(year,getdate()) as 'Year'    --------返回:2009
    
    SELECT DATEPART(month,getdate()) as 'Month'   ---------返回:2
    
    SELECT DATEPART(weekday,getdate()) as 'Weekday' ---------返回:3,如:Sunday = 1、Saturday = 7
    
    SELECT DAY(getdate())             -----------------------返回:24

    顺便给大家提供一个福利可以给大家带来更快的效率(不用谢,我姓雷名锋):

    数学函数:

    //返回从0到1之间的随机Float值
    Select rand()---返回0.79288062146374
    //取数值表达式的绝对值
    Select ABS(-100)--返回100
    
    
    //向上取整,取大于或等于指定数值,表达式的最小整数
    Select CEILING(43.5)--返回44
    //向下取整,取小于或等于指定数值,表达式的最大整数
    Select FLOOR(43.5)--返回43
    //取数值表达式的幂值
    Select POWER(5,2)--返回25
    //取数值表达式的四舍五入为指定精度
    Select ROUND(43.543,1)--返回43.500
    //对于正数返回+1.负数返回-1.对0返回0
    Select SIGN(-43)--返回-1
    //取浮点表达式的平方根
    Select SQRT(9)--返回3

    系统函数:

    //返回当前用户的名字
    Select CURRENT-user返回你登陆的用户名
    //返回用于指定表达式的字节数
    Select DATALENGTH('我爱你中国')返回5
    //从给定的用户ID返回用户名
    Select USER- NMAE(1)--返回从任意数据库中返回“dbo”

    由于系统函数用到的地方比较少所以大家可以稍微了解几个就ok

    好了各位,不知道我讲到这里对各位有没有一丢丢的帮助,如果有请别忘了留下您的脚印。只要熟悉select查询语句和函数的用法我想查询数据库对于我们是小菜一碟。谢谢大家

    肯花宝贵时间的来观望我的文章。如果觉得不错就请关注我吧

  • 相关阅读:
    Linux入门之常用命令(14) kill
    【JVM命令系列】jstack
    【JVM命令系列】javap
    【JVM命令系列】jmap
    Hadoop安全(2)——————UserGroupInformation
    Hadoop安全(1)——————美团Hadoop安全实践
    软件测试流程进阶----两年软件测试总结
    每个程序员应该阅读的10本书籍
    成为优秀程序员的黄金10条法则
    Java异常的深入研究与分析
  • 原文地址:https://www.cnblogs.com/System-out-println/p/4937609.html
Copyright © 2011-2022 走看看