zoukankan      html  css  js  c++  java
  • 学习sqlserve的一些笔记

    创建表:

    1 create table 表名
    2 {
    3   //定义列名
    4   id int identify(1,1) primary key,//自动编号:从1开始每次增长1,约束:主键约束
    5   name nvarchar(50) not null      //非空约束
    6 }

    表数据的增删改查:
              

    1 insert   into   表名 values()
    2 delete   from   表名
    3 update   表名   set 
    4 select   *    from   表名
    5 注:当删除表中所有数据还可使用truncate table 表名,它不能加where条件但是比delect所有表数据效率高,因为它通过释放数据页来删除数据,在事务日志中只记录数据页的释放;而且删除数据后计数器重置为定义的种子,如果没有定义种子,则使用默认值1。

    修改表结构:

     1 alter table 表名
     2           add 列名 数据类型                 //增加一列
     3           drop column 列名                //删除一列
     4           alter column 表名 数据类型 not null       //修改一列,并添加非空约束
     5           add constraint PK_表名_列名 primary key(列名)      //添加主键约束
     6           add constraint UQ_表名_列名 unique(列名)         //添加唯一约束
     7           add constraint DF_表名_列名 default(值) for 列名   //添加默认约束
     8           add constraint CK_表名_列名 check(列的条件表达式)   //添加检查约束
     9           add constraint FK_表名_列名 foreign key(外键表的列名) references 主键表名(主键表的列名)      //添加外键约束
    10           drop constraint 约束名1,约束名2............       //删除约束

    去除重复记录:

    1 select distinct .... from 表名 ......     //对查询的结果集去重(针对每一列都相同的情况)

    排序:

    1 select * from 表名 order by 列名 desc      //按照列名降序排序,默认为asc升序排序
    2 注:order by语句必须放在整个sql语句的后面。

      

    查询数据前多少条:

    1 select top 
    2        值                              //如:5,则表示查询该表前5条
    3        (表达式)                           //如:(2*2),则表示查询该表的前4条
    4        值 percent                        //如:30 percent,则表示查询该表的前30%
    5              * from 表名

    模糊查询:
        通配符:_ 表示任意的单个字符 

    1 例如:select * from 表名 where 列名 like '张_'            //表示查询出 张字开头,单个任意字符结尾 的数据


            % 匹配任意多个字符 

    1 例如:select * from 表名 where 列名 like '%张%'           //表示查询出 包含张字 的数据


            [] 表示范围内的单个字符 

    1 例如:select * from 表名 where 列名 like '张[0-9]'     //表示查询出 张开头,0-9中任意数字结尾 的数据


            [^] 不在指定范围内的单个字符 

    1 例如:select * from 表名 where 列名 like '[^0-9]'   //表示查询出 不是0-9中任意数字 的单个字符

    自定义转义符:escape

    1 例如:select * from 表名 where 列名 like '%/[%' escape '/'     //定义/为转义符,此语句表示查询出所有包含[的数据

    空值判断:

    1 select * from 表名 where 列名 
    2                  is null                  //判断为空
    3                  is not null             //判断部位空

    类型转换函数:cast(表达式 as 数据类型)、convert(数据类型,表达式[,格式])
           注:[]表示参数可写可不写。

    联合结果集:union,union all
      

    1 例如:select 列名1,列名2 from 表1
    2                    union all    
    3                          select 列名3,列名4 from 表2
    4 注意:联合的结果集列名默认使用第一个结果集中的列名,每个结果集必须有相同的列数,每一列的数据类型必须相容。
    5 区别:union会去除重复列,所以效率较低。

    T-SQL:
        声明变量:

    1 declare @name nvarchar(50),@age int = 18


        变量赋值:

    1 set @name = '张三'


        循环:

    1 while 条件    
    2       begin
    3         ..........    
    4       end


        条件判断:

    1 if 条件
    2 begin
    3   ....
    4 end
    5 else
    6 begin
    7   ...
    8 end

    事务:
        特性ACID:
        原子性(Atomicity):事务是一个完整的操作,事务的各个步骤是不可分割的,要么全部执行,要么全都不执行。
        一致性(Consistency):当事务完成时,数据必须处于一致状态。
        隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
        持久性(Durability):事务完成后,它对数据库的修改被永久保持。

      

     1 例子:
     2    begin transaction                   //开始一个事务
     3    declare @sum int = 0                //声明一个变量,记录sql语句出错次数
     4      sql语句1    
     5      set @sum = @sum + @@error             //@@error:如果sql语句没有错返回0
     6      sql语句2    
     7      set @sum = @sum + @@error
     8      if @sum <> 0                     //如果sum不等于0,表示有sql语句出错
     9      begin
    10        rollback                    //回滚
    11      end
    12      else
    13      begin
    14        commit                      //提交该事务
    15      end 

     

    存储过程:
          执行存储过程:exec 存储过程名称
          创建存储过程:

    1 create proc 存储过程名称
    2 as
    3 begin
    4   .......
    5 end


          创建带参数的存储过程及执行:

     1 create proc usp_test                            //创建代参的存储过程
     2 @name nvarchar(50),                           //定义参数
     3 @age int output                                //定义输出参数
     4 as
     5 begin
     6   set @age = select 表.age fromwhere 表.name = @name    //参数的使用
     7 end
     8 
     9 declare @num int                            //声明一个变量,传递给输出参数
    10 exec usp_test @name = '张三',@age = @num output           //执行带参的存储过程
    11 print @num                                //输出变量,即输出参数的值


      例子(存储过程实现分页):

     1 create  proc  usp_getPage
     2 @pageSize  int = 6,                          //每页的条数
     3 @pageIndex  int = 1,                         //当前要查看第几页
     4 @pageCount  int  output,                     //共多少页,输出参数
     5 @recordCount  int  output                    //共多少条记录,输出参数
     6 as
     7 begin
     8   select  *  
     9   from  (select  * ,rownumber = row_number()  over(order  by  id  asc)  from  表名)  as  temp  10     where  temp.rownumber  between  (@pageIndex - 1)*@pageSize + 1  and  @pageSize*pageIndex   11     set  @recordCount = (select  count(*)  from  表名)     //计算表中记录
    12     set  @pageCount = ceiling(@recordCount*1.0/pageSize)  //计算页数,ceiling()向上取整13 end
    14  
    15 declare @rc int,@pc int //用于传递给输出参数 16 exec usp_getPage @pageSize = 6, @pageIndex = 1, @recordCount = @rc output, @pageCount = @pc output //执行带参数的存储过程 17 print @rc //打印总记录条数 18 print @pc //打印总页数

    创建触发器:

    1 create trigger 触发器名称 on 表名
    2 after insert,delete,update        //当进行增加、删除、修改时触发
    3 as
    4 begin
    5   ........
    6 end
  • 相关阅读:
    Mysql转换成SqlServer数据库,以及SqlServer转换成Mysql数据库
    MySQL分页存储过程
    zabbix监控指定端口
    zabbix_server.conf 详解
    zabbix监控常见系统报错
    Zabbix3.2下Template App Zabbix Server+Template OS Linux Item
    Zabbix邮件报警配置
    分布式监控系统Zabbix-3.0.3-完整安装记录
    Nginx高级应用之Location Url
    st
  • 原文地址:https://www.cnblogs.com/tianyaguoke/p/5950691.html
Copyright © 2011-2022 走看看