zoukankan      html  css  js  c++  java
  • SQL Server基础知识

    1、SQL Server表名为什么要加方括号?

    这个不是必须要加,但表名或字段名如果引用了sqlserver中的关键字,数据库会不识别这到底是关键字还是表名(或字段名)时就必须要加。

    比如,一个表名叫user,user在sqlserver中属于关键字,那么查询的时候必须要这样:

    select * from [user]

    否则就会报错。

    同理,如果user属于字段名,也同样要加,如

    select * from 表名 where [user]=1

    2、SQL中的go,begin,end

      

    go 向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号。go是把t-sql语句分批次执行。(一步成功了才会执行下一步,即一步一个go)

    BEGIN 和 END 语句用于将多个 Transact-SQL 语句组合为一个逻辑块。在控制流语句必须执行包含两条或多条 Transact-SQL 语句的语句块的任何地方,都可以使用 BEGIN 和 END 语句。

    例如,当 IF 语句仅控制一条 Transact-SQL 语句的执行时,不需要使用 BEGIN 或 END 语句:

    IF (@@ERROR <> 0)
    SET @ErrorSaveVariable = @@ERROR

    如果 @@ERROR 为 0,则仅跳过 SET 语句。

    用 BEGIN 和 END 语句可以使 IF 语句在计算结果为 FALSE 时跳过语句块:

    IF (@@ERROR <> 0)
    BEGIN
    SET @ErrorSaveVariable = @@ERROR
    PRINT 'Error encountered, ' +
    CAST(@ErrorSaveVariable AS VARCHAR(10))
    END

    BEGIN 和 END 语句必须成对使用:任何一个均不能单独使用。BEGIN 语句单独出现在一行中,后跟 Transact-SQL 语句块。最后,END 语句单独出现在一行中,指示语句块的结束。

    3、mysql语句转换为sqlserver

      alter table order_detail add constraint FK_Relationship_1 foreign key (book_id)
    references book (id) on delete restrict on update restrict;
    SQL Server 的语法如下:

    ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }
    指定如果已创建表中的行具有引用关系,并且被引用行已从父表中删除,则对这些行采取的操作。默认值为 NO ACTION。

    NO ACTION
    数据库引擎将引发错误,并回滚对父表中行的删除操作。

    CASCADE
    如果从父表中删除一行,则将从引用表中删除相应行。

    SET NULL
    如果父表中对应的行被删除,则组成外键的所有值都将设置为 NULL。若要执行此约束,外键列必须可为空值。

    SET DEFAULT
    如果父表中对应的行被删除,则组成外键的所有值都将设置为默认值。若要执行此约束,所有外键列都必须有默认定义。如果某个列可为空值,并且未设置显式的默认值,则将使用 NULL 作为该列的隐式默认值。

    MySQL 里面的 on delete restrict
    切换到 SQL Server , 可以切换为 ON DELETE NO ACTION
    也可以不写,因为 默认值为 NO ACTION。

    3、 mysql的on delete restrict与on ordelete cascade区别

      外键约束对子表的含义: 
      如果在父表中找不到候选键,则不允许在子表上进行insert/update 

    外键约束对父表的含义: 
      在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句, InnoDB支持5种方式, 分列如下 
      
      . cascade方式 
       在父表上update/delete记录时,同步update/delete掉子表的匹配记录 
       On delete cascade从mysql3.23.50开始可用; on update cascade从mysql4.0.8开始可用 

      . set null方式 
       在父表上update/delete记录时,将子表上匹配记录的列设为null 
       要注意子表的外键列不能为not null 
       On delete set null从mysql3.23.50开始可用; on update set null从mysql4.0.8开始可用 

      . No action方式 
       如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作 
       这个是ANSI SQL-92标准,从mysql4.0.8开始支持 

      . Restrict方式 
       同no action, 都是立即检查外键约束 

      

    
    




    
    
  • 相关阅读:
    jQuery EasyUI dialog 居中最简单的办法
    Sql Server 查看存储过程最后修改时间
    MyEclipse格式化JSP代码,其中Javascript无法格式化的原因
    MyEclipse格式化JSP代码导致Java表达式<%= %>自动换行的解决办法
    重新格式化hadoop的namenode导致datanode无法启动的最简单解决办法
    端口映射
    你以为的Jquery选择器是什么样子的?
    JS&Jquery基础之窗口对象的关系总结
    JS&Jquery基础之对象和数组以及类型转换
    SQL Server关于AlwaysOn的理解
  • 原文地址:https://www.cnblogs.com/maxiaofang/p/4800803.html
Copyright © 2011-2022 走看看