码迷,mamicode.com
首页 > 其他好文 > 详细

第8周学习笔记

时间:2017-11-05 19:11:59      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:数据库   val   替换字符串   特定   技术分享   ble   文件   pad   大小   

一、查询知识点思维导图

                技术分享

                                                                 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; (下面第二张图)

见下面两张运行结果图

 技术分享

技术分享

 

 

 

 

                                                         

 

             

第8周学习笔记

标签:数据库   val   替换字符串   特定   技术分享   ble   文件   pad   大小   

原文地址:http://www.cnblogs.com/hualalalala/p/7788173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!