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, 都是立即检查外键约束
SQL Server基础知识的更多相关文章
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- Sql Server 基础知识
Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...
- SQL Server基础知识三十三问 (15-21)
15. 存储过程可以调用自己么, 或者说可能有递归的存储过程么? SP nesting最多可以到多少层? 答: 可以的. 因为Transact-SQL 支持递归, 你可以编写可以调用自己的存储过程. ...
- SQL Server基础知识三十三问 (7-14)
8. 一般什么时候使用update_statistics命令? 答: 这个命令基本上是在很多数据被处理过了之后才使用的. 如果大量的删除, 修改, 或这大量的数据插入已经发生了, 那么index就需 ...
- SQL Server基础知识三十三问 (1-7)
1. SQL Server运行在什么端口上? 可以被修改么? 答: 1433端口. 可以修改的, 在SQL Server Configuration Manager的SQL Server Networ ...
- SQL Server 基础知识/数据类型/数值类型
数据库设计简单地来讲,也就是设计表格的过程. 表格存储的数据是可以理解为一个二维表,由行和列组成. 原则上来讲,一个数据库只需要一个字段,一个数据类型就可以解决所有的问题,但是这样做并不明智,所以一般 ...
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- SQL数据库基础知识-巩固篇<一>
SQL数据库基础知识-巩固篇<一>... =============== 首先展示两款我个人很喜欢的数据库-专用于平时个人SQL技术的练习<特点:体积小,好安装和好卸载,功能完全够用 ...
- 数据库开发基础-SQl Server 基础
SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language 结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...
随机推荐
- Chrome插件: 网站收藏
在工作中我们会收藏很多网址.以前一直都是用的chrome里面的收藏夹.后面觉得一点都不方便.看一下Chrome插件开发挺容易入手的所以自己写了一个Chrome插件. 基于:Angularjs + ...
- [Template]高精度模板
重新写一下高精度模板(不要问我为什么) 自认为代码风格比较漂亮(雾 如果有更好的写法欢迎赐教 封装结构体big B是压位用的进制,W是每位长度 size表示长度,d[]就是保存的数字,倒着保存,从1开 ...
- 第15章 LinkedList类(暂无)
第15章 LinkedList类 LinkedList类是
- AR(增强现实) 知识篇
增强现实(Augmented Reality,简称AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互动.这种技术估计由1990年 ...
- android第一行代码-6.自定义控件的实现
0.假设一个应用中标题栏控件都是共用的,如果每个activity都需要设置button,绑定方法,那代码就会很臃肿.那我们可以自定义控件,然后继承这个控件就行了. 自定义控件为TitleLayout, ...
- 如何正确使用 Composer 安装 Laravel 扩展包
我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的: composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害. 因为 composer ...
- WPF Popup 控件导致被遮挡内容不刷新的原因
WPF Popup 控件导致被遮挡内容不刷新的原因 周银辉 今天在写一个WPF控件时用到了Popup控件,很郁闷的情况是:当popup关闭时,原来被popup挡住的界面部分不刷新,非要手动刷新一下(比 ...
- Type.IsContextful 说明
首先看MSDN的说明: 中文:获取一个值,通过该值指示 Type 在上下文中是否可以被承载. 英文:Gets a value indicating whether the Type can be ho ...
- [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】
[课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...
- Ext小总结
titleCollapse:true,//高级搜索点击隐藏显示 添加按钮 >弹出页面 1.添加按钮 //核销 在控制层页面添加页面路径>添加操作按钮>window.allOrder ...