SQL基础知识(二)

1.数据表的操作

   1)常用的约束

        PRIMARY KEY 约束

        UNIQUE 约束

        FOREIGN KEY 约束

        DEFAULT

        CHECK 约束

   2)常用系统存储过程

       exec sp_helpdb test   /*查看数据库信息*/
       exec SP_HELP table2  /*查看表信息*/
       exec sp_helpconstraint table2  /*查看表的约束信息*/

       exec sp_helpindex  table2  /*查看索引信息*/

 

 2.什么时候建立索引

    1)一般主键上建立,因为经常考主键读取数据

    2)外键上建立,因为外键可能牵涉到表与表之间连接,建立之后有助于操作

    3)经常在一定范围了查找的字段上操作

   4)经常用到order by 或group by的字段上建立

   5)不要再经常修改,删除,跟新的字段上建立聚集所以

   6)一张表只能建立一个聚集索引,但是可以建立249个非聚集索引

 

3.数据的查询

  1)连接分类:内连接,左外连接,右外连接,全外连接,自连接,交叉连接(笛卡尔积),合并连接。

  2)一个SQL可能用到:select count(*) top all distinct * from  where group by having order by asc desc 

  3)模糊查询的几个通配符 % 任意多个 _单个  []在括号中的一个   [^]没在括号中的一个

     转义符  select * from admin where percent like '20/%' escape '/'  (这把%转义成正常字符,比通配符效率高)

  4)常用聚合函数 sum()  avg() count() max() min()

       distinct与聚合函数的连用  select count(distinct num) from table

       要用order by 对用了distinct的sql语句,那么order by 的字段必须出现在select字段中

  5)联合查询 select * from table1 union select * from table2

  6) IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。

  m)一些提高查询的写法

     在检索时判断某字段是否为空时用 is null 或 is not null  不要用where 字段=null

  n)一些降低查询效率的写法

         用not between .. and ..

         用not in 会一定程度上减低效率

 

4.视图

   1)不能再视图上创建索引,视图主要用于查找,如果对于简单视图(单表),可以进行增删改,但对于多个基表的时候希望实现增删改则不行,解决办法是在视图上创建instead of触发器来执行基表的操作。

   2)在视图中不能用order by语句,除非在select语句中用了top

        

5.Transact-SQL

   1)一些易用的关键词

      any all exists  some

   2)逻辑控制

       begin ... end  相当于{},构成一个单独的块

       if ... else ... if ... else

       case举例

       declare @id

       select @id=  case  when 条件 then  函数块

                                  when 条件 then 函数块

                                  ................................

                                  else  函数块

                 end 

      while  条件 begin   代码块 end

      break

      continue

      goto  这个要设置标识。 比如定义了标识 GZ:  就可以写  goto GZ

      return

 

6.常用函数

   1)类型转换

   cast(表达式 as 数据类型) 

   convert(数据类型[length],表达式)

   2)时间函数

   dateadd(datepart,number,date)--给指定时间添加大小

   datediff(datapart,starpart,endpart) --指定2个时间的时间差距

   getdate()获取系统当前时间 

  3)用户自定义函数

  

 

 

 

 

 

 

posted @ 2010-09-24 21:53  yu_liantao  阅读(150)  评论(0)    收藏  举报