SQL SERVER中关于NULL的设定
/***************************************************
作者:herowang(让你望见影子的墙)
日期:2009.12.19
注: 转载请保留此信息
更多内容,请访问我的博客:blog.csdn.net/herowang
****************************************************/
SQL SERVER2005中关于NULL的设定
NULL处理时SQL SERVER中一个比较麻烦的事情,有许多处理可能因为NULL而得到一些预想不到的结果。NULL在数据库中一般有三层含义:1、该属性值不适合该实体;2、该实体还没有改属性;3、该实体有该属性,但是现在还不知道。
对于NULL的使用,和数据库的选项和会话的设置是息息相关的,也就是说不同的数据库的选项和会话的设置,对NULL的处理方式是不一样的。对于影响NULL处理的设置有如下几种:
一、ANSI_NULL_DEFT_ON 及ANSI_NULL_DEFT_OFF。
当该选项为OFF时,通过create table和alter table创建的新列默认为not null,对应的数据库选项为ANSI NULL默认值为false。当该选项为On时,则默认值为null,对应的数据库选项为ANSI NULL默认值为TRUE。
【测试1】
SET ANSI_NULL_DFLT_ON OFF
go
create table test1(id int,col char(10))
查看该表的属性,可以看到该表的两列不为空;
【测试2】
SET ANSI_NULL_DFLT_ON ON
go
create table test2(id int,col char(10))
查看该表的属性,可以看到该表的两列为空;
对于ANSI_NULL_DEFT_ON 及ANSI_NULL_DEFT_OFF是互斥选项,用于指明是否覆盖数据库选项,当开启一个选项时,都会迫使相反的那个选项关闭;但是关闭某个选项时,不会使相反的那个选项打开,而只是不再开启该选项。如果两个选项都关闭,那么将会启用数据库选项。
【测试3】
SET ANSI_NULL_DFLT_ON OFF
SET ANSI_NULL_DFLT_Off OFF
Go
create table tb(id int,col char(10))—ANSI NULL默认为false
查看该表的属性,可以看到该表的两列不允许为空;
【测试4】
SET ANSI_NULL_DFLT_ON OFF
SET ANSI_NULL_DFLT_Off OFF
Go
create table tb(id int,col char(10))—ANSI NULL默认为true
查看该表的属性,可以看到该表的两列允许为空;
二、SET CONCAT_NULL_YIELDS_NULL
当开启SET CONCAT_NULL_YIELDS_NULL时,如果串联操作的两个操
相关文档:
--当前使用的数据库是 系统自带的 master
create database temp1
go --此处不加go的话下面use temp1 会报错:找不到存储过程 'temp1'。
use temp1
set xact_abort on
begin tran
create table [order]( --order是关键字必须用[ ];
id int
)
create table fOrder(
id int
)
-- 下面的操作主要是为了实现fO ......
create procedure DeleteWareHouse_StoreArea_SummaryByPUR
(@po_no nvarchar(100))
as
begin
declare @cacheTable table(wh_id int);--声明一个table类型的变量
insert @cacheTable select wh_id from aps_inventory_store_area where description=@po_no--向变量@cacheTable中添加结果集
--select * from @cac ......
做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条SQL快速生成大量的测试数据的方法。
产生测试数据的SQL如下:
SQL> select rownum as id,
2 &nbs ......
1、SELECT 查询语句和条件语句
SELECT 查询字段 from 表名 WHERE 条件
查询字段:可以使用通配符* 、字段名、字段别名
表名: 数据库.表名 ,表名
常用条件: = 等于 、<>不等于、in 包含 、 not in 不包含、 like 匹配
BETWEEN 在范围 、 not BETWEE ......
党员管理系统的数据库设计
需要以下字段:
l 学生:
//学生基本信息
u 学生学号[id](char)主键
u 学生身份证号[id_num](char)
u 学生姓名[name](char)
u 学生出生日期[born_date](date)
u 学生籍贯[native](int)外键
u 学生家庭住址[address](char)
u&nbs ......