zoukankan      html  css  js  c++  java
  • 第8周学习笔记

    一、查询知识点思维导图

                   

                                                                     SELECT子句

                                                                     FROM子句

                                                                  WHERE子句

       

                                                                    GROUP BY子句

    数据库查询语句的组成                           ORDER BY子句

                                                                     HAVING子句

                                                                  子查询

                                                                  集运算符

               

    二、查询知识要点

    1、     在查询之前需要导入之前已经建立好的数据库文件。

    第一步:打开SQL,进行连接后右击数据库出现如图一式界面;

      

      

    第二步:点击附加,出现如图二式界面,点击添加,查找需要的文件,如图三所示。

    第三步:添加完数据库文件,再进行查询操作。

     

    2、         筛选列

    (1)      查询某表所有信息

      SELECT          

    *   

    FROM        

    tb_Drug;    

    2、在病人视图中,查询全体病人的姓名、出生年份、年龄             

    SELECT             

          S.Name AS 姓名        

          ,YEAR(S.BirthDate) AS 出生年份            ,YEAR(GETDATE())—YEAR(S.BirthDate) AS 年龄        

       FROM            

          vw_Patient AS S;  

       尽管上一条列表达式能够算出出生年份,且已定义别名,但不允许在其它任一列表达式中调用该别名;

    因为SQL Server对表的查询具有同时操作特性,所有表达式同时执行,故期间无法得知其它表达式定义的别名.

    3、         筛选行

    (1)在病人视图中,查询所有病人号码    SELECT          

         SS. PatientNo    

      FROM        

         vw_ Patient AS SS;   

    --消除重复:           

    SELECT DISTINCT         

         SS. PatientNo    

      FROM        

          vw_ Patient AS SS;   

    (2)在病人视图中,查询年龄在19~22岁之间的病人姓名、年龄            

    SELECT          

          S.*    

       FROM        

          (SELECT   

                 S.Name

    ,DATEDIFF(YEAR,S.BirthDate,GETDATE()) AS Age

              FROM  

                 vw_Patient AS S) AS S

       WHERE       

          S.Age BETWEEN 19 AND 22;   

    --或:           

    WITH cte_Age AS          

       (SELECT      

              S.Name

    ,DATEDIFF(YEAR,S.BirthDate,GETDATE()) AS Age   

          FROM     

              vw_Patient AS S)  

    SELECT          

          S.*    

       FROM        

          cte_Age AS S    

       WHERE       

          S.Age BETWEEN 19 AND 22;   

     3、字符

    在查询字符中会使用到许多函数,而函数的使用则就是需要特别注意。

    (1)通配符%代替任意个未知字符

    (2)通配符_代替1个未知字符

    (3)为避免查询内容中的_与通配符冲突,使用[ ]作为转义符,将查询内容中的_转成普通文本

    (4)使用ESCAPE自定义转义符

    (5)以行为单位的字符串拼接,例如‘+’

    (6)SUBSTRING(列名,长度)字符串函数

    (7)RIGHT(列名,长度)取右值函数,在某列中取从右边开始的多少长度。

    (8)LEFT(列名,长度)取右值函数,在某列中取从左边开始的多少长度。

    (9)STUFF(列名,位置 ,长度,替换内容) 替换字符串函数

    (10)CHARINDEX(查找特定字符,列名) 查找指定字符串在原字符串中的起始位置,从某列中查找某个特定的字符的位置。

    4、排序

    (1)排序过程中很经常使用到降序或者升序,其中降序使用DESC,升序使用ASC.

    (2)

    在病人视图中,查询所有病人名单,并按姓名笔画排序

       

    SELECT

                     
       

    S.*

                   
     

    FROM

                   
       

    vw_Fatient AS S

             
     

    ORDER BY

                 
       

    S.Name COLLATE CHINESE_PRC_STROKE_CS_AS_KS_WS;

           指定排序规则   简体中文 笔画 区分大小写、区分重音、区分假名、区分全半角。

    (3)查询某排列顺序前三名,使用SELECT TOP 3 WITH TIES语句,其中WITH TIES可以排除包含并列的情况。

    (4)查询某排列顺序前3%的人,使用

      SELECT TOP 3 PERCENT来查询。

    (5)在查询过程中涉及查询的列别名,使用ORDER BY语句实现此功能,因为ORDER BY语句最后执行,故能识别列别名。

    三、查询误点

    1、使用查询之前必须先使用数据库“USE Eduse”语句,不然是无法实现查询功能的。如下面第一图与第二图

     

    2、在使用函数STUFF(列名,位置 ,长度,替换内容)  替换字符串函数时需要查找指定位置使用到CHARINDEX(查找特定字符,列名)函数需要给此时查找到的位置再加一才是真正需要替换的位置,例如:在病人表中,查询所有病人的电话,其中固定电话前的区号均不显示;

    SELECT

         S.Phone

      ,SUBSTRING(S.Phone ,CHARINDEX('-',S.Phone),100)

         FROM

         tb_Fatient AS S; (下面第一张图)

    与下面这个代码的区别

      SELECT

         S.Phone

    ,SUBSTRING(S.Phone ,CHARINDEX('-',S.Phone)+1,100)

         FROM

         tb_Fatient AS S; (下面第二张图)

    见下面两张运行结果图

     

                                                             

                 

  • 相关阅读:
    解决Ubuntu Kylin 1610安装ANSYS17.2的NVIDIA显卡驱动问题
    ubuntu安装ANSYS17.2全过程
    Ubuntu1604下安装Liggghts及CFDEM Coupling
    【Pyrosim案例】02:简单燃烧
    【Pyrosim案例】01:空气流动
    【FLUENT案例】06:与EDEM耦合计算
    【FLUENT案例】05:DDPM模型
    【FLUENT案例】04:利用DDPM+DEM模拟鼓泡流化床
    DataTables学习:从最基本的入门静态页面,使用ajax调用Json本地数据源实现前端开发深入学习,根据后台数据接口替换掉本地的json本地数据,以及报错的处理地方,8个例子(显示行附加信息,回调使用api,动态显示和隐藏列...),详细教程
    Python的下载和安装
  • 原文地址:https://www.cnblogs.com/hualalalala/p/7788173.html
Copyright © 2011-2022 走看看