精华内容
下载资源
问答
  • 在一个数据库不能出现两个同名的二维表,因此也就不能产生两个同名的要素类。 也就是说假设在工作问中存在一个名A的要素类和B的要素数据集,B中假设再产生一个名A的要素类是不会成功的。 因此能够使...

    之所以产生这种问题,其原因是不管一个要素类是直接放在工作空问中,还是放在工作空问的一个要素数据集中,这些区别不过逻辑上的,而它们的物理组成都是数据库中的一张二维表,并目表名就是要素类的名字。在一个数据库中不能出现两个同名的二维表,因此也就不能产生两个同名的要素类。

    也就是说假设在工作空问中存在一个名为A的要素类和B的要素数据集,B中假设再产生一个名为A的要素类是不会成功的。

    因此能够使用IFeatureWorkspace::OpenFeatureClass方法能够打开工作空问中的不论什么一个要素类,不管它是直接存放在工作空问还是存放在工作空问中的一个要素数据集中。

    展开全文
  • 设计数据库表时,是否允许字段为空很长时间我都认为无所谓,但在工作了很长时间后,才发现,其实这个很重要,不能想当然。 所以会有这个是否为空的选项,就是为了表示未知的情况。但是不是所有的未知情况都应该...

     设计数据库表时,是否允许字段为空很长时间我都认为无所谓,但在工作了很长时间后,才发现,其实这个很重要,不能想当然。


      之所以会有这个是否为空的选项,就是为了表示未知的情况。但是不是所有的未知情况都应该允许为空呢?

     例如,性别,使用1表示男,0表示女,空表示未知或者是用户没有选择。

     但又没有更好的方法呢?

          首先说下可空字段的问题,

              1如果为空,查询条件就必须处理为空的情况,否则会出现一些很奇怪的问题。也就是说,几乎所有的判断都必须加上 is not null 或者时  is null 的判断。

             尤其时在使用子查询时,例如:      

    select * from T_Test where Type1  in (select id from T_Test )

    如果允许ID为空,那么子查询出来的就有null空值,结果可能永远查不出来数据,一个数据不能包含在 有null空值的集合里。同样not in 也查不出来数据。无形之中导致编写SQL变得复杂了。

           2如果为空,在部分数据库中会导致索引失效

           3如果为空,为空也是需要存储空间的,导致空间变大,进而导致数据库系统查询分析变的复杂。

           4如果为空,在程序中也需要每次都判断是不是空,导致程序复杂了。

          例如为空的整形加上一个整形后,也是空,导致非常奇怪的计算错误。

      public class Test1
        {
         public int? A{set;get;}
         public int? B { set; get; }
         public int? C{ set; get; }
        }
    	
    	  Test1 t1=new Test1 ();
          t1.A=1;
          var h = ConvertUtil.ToDecimal(t1.A + t1.B);

     以上计算的结果可能是null,导致一些非常奇怪的问题。

     那么有没有办法改进呢?

     其实在部分情况下可以使用默认值

    alter table EAS.T_SurveyQuestion add  SQ_HasHtml INTEGER default 0 not null 

    例如,性别,使用1表示男,0表示女,2表示未知或者是用户没有选择。在默认值设置2

     更好的设计时使用0未知,1表示男,2表示女因为大部分编程语言的数字类型的默认值0



    这样的话,如果没有给相应的字段赋值,就会插入默认值,以上所有的问题也就解决了。使用默认值的思想可以解决很大一部分可为空的问题,但不是所有,具体还是要根据具体业务进行分析。




    展开全文
  • 数据库之约束

    2020-03-30 16:53:59
    约束就是指对插入数据的各种限制,例如:人员的姓名不能为空,人的年龄只能在0~150岁之间。约束可以对数据库中的数据进行保护。 约束可以在建表的时候直接声明,也可以为已建好的表添加约束。 (2、数据完整性 存储早...

    1、约束的定义:

    约束就是指对插入数据的各种限制,例如:人员的姓名不能为空,人的年龄只能在0~150岁之间。约束可以对数据库中的数据进行保护。
    约束可以在建表的时候直接声明,也可以为已建好的表添加约束。

    (2、数据完整性

    存储早数据库中的所有数据值均真确的状态。如果数据库中存储有不正确的数据值,则该数据库称已丧失数据完整性。
    域完整性、实体完整性、参照完整性、

    (1)域完整性:

    是指一个列的输入有效性,是否允许为空值。强制域完整性的方法有:限制类型(通过设定列的数据类型)、格式(通过CHECK约束和规则)或可能值的范围(通过FOREIGN KEY约束、CHECK约束、DEFAULT定义、NOT NULL定义和规则)。如:学生的考试成绩必须在0~100之间,性别只能是“男”或“女”。

    (2)实体完整性:

    是指保证表中所有的行唯一。实体完整性要求表中的所有行都有一个唯一标识符。这个唯一标识符可能是一列,也可能是几列的组合,称为主键。也就是说,表中的主键在所有行上必须取唯一值。强制实体完整性的方法有:索引、UNIQUE约束、PRIMARY KEY约束或IDENTITY属性。如:student表中sno(学号)的取值必须唯一,它唯一标识了相应记录所代表的学生,学号重复是非法的。学生的姓名不能作为主键,因为完全可能存在两个学生同名同姓的情况。

    (3)参照完整性:

    是指保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。它涉及两个或两个以上表数据的一致性维护。外键值将引用表中包含此外键的记录和被引用表中主键与外键相匹配的记录关联起来。在输入、更改或删除记录时,参照完整性保持表之间已定义的关系,确保键值在所有表中一致。这样的一致性要求确保不会引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。参照完整性是基于外键与主键之间的关系。例如学生学习课程的课程号必须是有效的课程号,score表(成绩表)的外键cno(课程号)将参考course表(课程表)中主键cno(课程号)以实现数据完整性。
    域完整性、实体完整性及参照完整性分别在列、行、表上实施。数据完整性任何时候都可以实施,但对已有数据的表实施数据完整性时,系统要先检查表中的数据是否满足所实施的完整性,只有表中的数据满足了所实施的完整性,数据完整性才能实施成功。

    3、常用约束:

    NOT NULL :非空约束
    PREIMARY KEY:主键约束
    UNIQUE:唯一约束,值不能重复(空值除外)
    CHECK:条件约束,插入的数据必须满足某些条件
    Foreign Key:外键

    4、级联删除: delete cascade

    导致子表的数据也跟着删除。

    5、级联置空:delete set null

    前提是外键不能有非空约束

    展开全文
  • NOT NULL 指示某列不能储存NULL值,即某列不为空; 使用: 如果在增加数据时,第一列为NULL,就会报错 UNIQUE :保证某列的每行必须有唯一的值; 这时表中已经有一个name为李数据信息,倘若此时再添加一个name为...

    数据库约束

    1:约束类型:

    约束类型 约束方式
    NOT NULL 指示某列不能存储NULL值
    UNIQUE 保证某列的每行必须有唯一值
    DEFAULT 规定没有给列赋值时的默认值
    PRIMARAY KEY NOT NULL和UNIQUE的结合(指定某列不能为null值,并且此列的每一行的值都是唯一的),确保某一列(或多列)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
    FOREIGN KEY 保证一个表中的数据匹配另一个表中的值的参照完整性
    CHECK 保证列中的值符合指定的条件。(对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK语句)

    NOT NULL :指示某列不能储存NULL值,即某列不为空;
    使用:在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    如果在增加数据时,第一列为NULL,就会报错
    在这里插入图片描述

    UNIQUE :保证某列的每行必须有唯一的值

    在这里插入图片描述
    这时表中已经有一个name为李数据信息,倘若此时再添加一个name为李的数据,就会报错
    在这里插入图片描述

    DEFAULT:规定没有给列赋值时的默认值
    使用方法:

    在这里插入图片描述

    在这里插入图片描述
    当name列没有赋值时,使用默认值unkown。
    在这里插入图片描述

    PRIMARY KEY主键约束某列不能存储空值且唯一(NOT NULL和UNIQUE的结合)确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速的找到表中的一个特定记录。(因为是主键,可以理解为其他表连接此表的接口,所以不能存储空值,这样接口就不存在了,也必须唯一,只有唯一,其他表才能找到此接口)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    FOREIGN KEY:(外键约束外键用于关联其他表的主键或唯一键,保证一个表中的数据匹配与另一个表中的值的参照完整性。

    foreign key (字段名) reference 主表(列)
    

    创建班级表,id 为主键:
    在这里插入图片描述

    创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,
    classes_id为外键,关联班级表id
    在这里插入图片描述
    在两个表中插入数据

    在这里插入图片描述
    在这里插入图片描述

    CHECK:(忽略)保证列中的值符合指定条件。(MySQL数据库对CHECK子句进行分析,但是忽略CHECK语句)

    展开全文
  • 此外,主键字段不能为空,这是由于数据库引擎需要一个值来对记录进行定位。 主键字段永远要被编入索引。这条规则没有例外。你必须对主键字段进行索引,这样数据库引擎才能快速定位给予该键值的行。 下面的例子把 ...
  • MySQL数据库之DDL操作

    2021-06-03 20:07:29
    主键:是唯一的,在一张数据表中只有一个主键,且不能为空。 外键:主要用于关联两个表。 复合键:将多个列组合起来形成一组键,通常用于索引,主键一般不采用符合键的形式,因为这样做会违反三大范式中的第二范式,...
  • 数据库主键是用来标记数据记录唯一性的列,不能为空,不能重复。 主键具有的特点:唯一性、非空性。 数据库联合主键:可以将多个列作为主键。(当多个列一起作为主键时,这里面的列均不能为空,但列值可以重复(不能...
  • Mysql数据库之主键

    2021-05-17 11:39:46
    用于限制字段的值不能重复,设置主键列对的字段默认不能为空。一个表只能有一个主键,当然该主键也可以是组合主键(几个列共同组合成为主键)。 主键有下面几个规则: 1.每个表只能定义一个主键。 2.唯一性原则:...
  • 数据库之约束条件

    2019-10-03 03:25:23
    ```python"""PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录FOREIGN KEY (FK) 标识该字段为该表的外键NOT NULL 标识该字段不能为空UNIQUE KEY (UK) 标识该字段的值是唯一的AUTO_INCREMENT 标识该字段...
  • 但是数据库在设计表的时候,很多字段都是不允许为空的,现在的情况是我们点击增加按钮时,没有给出的那些不能为空的字段,所以我们需要在点击增加,然后保存之前,给出那些不能为空的字段设置默认值: 1)你可以...
  • Oracle数据库之变量

    2018-03-31 13:32:25
    --一、变量--1、语法variable_name [CONSTANT] type [not null] [:=value];--2、注释constant :表明为...not null:变量值不能为空; :=value:用于为变量赋予初始值;--3、示例declare v_deptName varchar2(32); v_...
  • mysql数据库之约束

    2019-09-30 13:21:05
    字段的值不能为空 1.1、创建表时添加非空约束 语法:列名 数据类型 NOT NULL; 1.2、修改表时添加非空约束 语法:ALTER TABLE <表名> MODIFY 列名 数据类型 NOT NULL; 1.3、删除非空...
  • 数据库之超详细的完整性约束

    千次阅读 2020-08-12 15:57:03
    数据库之超详细的完整性约束  数据库的完整性是指数据的正确性...性(列)不能为空,所谓空值是"不知道"或"无意义"的值。之所以要保证实体完整性主要是因为在关 系中,每一个元组的区分是依据主码值的不同,若主码...
  • 数据库之约束关系

    千次阅读 2010-08-25 15:54:00
    包括5种类型: 1、检查约束:通过在定义数据库表里,在字段级或者是在表级加入的检查约束,使其满足特定的要求。 比如以下的表定义: ...列不能为空,直接在字段后面加上:NOT NULL。
  • mdiv.innerHTML ="不为空 </font>"; } } </script> <form action="" method="post" > <td> SERVID : <td> ()"/> <span id="usermsg"></span> </td> <td> &...
  • 数据库之完整性约束

    2019-10-08 01:09:28
    一、介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: ...NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCR...
  • 文章目录字段字段参数Meta的配置 字段 字段名 类型 备注 ...如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主 键 primary_key=True。...不能为空,Blan
  • Mysql数据库之在指定字段后加入字段

    千次阅读 2020-09-30 09:46:39
    Mysql数据库之在指定字段后加入字段 alter table tablename add column columnname varchar(64) not null after somecolumn;...no null 表示新增字段不能为空。varchar(64) 设置新增字段类型和长度。 ...
  • 主键不能重复,且只能有一个,也不允许为空。定义主键主要是为了维护关系数据库的完整性。 2、外键: 外键用于与另一张表的关联,是能确定另一张表记录的字段。外键是另一个表的主键,可以重复,可以有多个,也可以...
  • 具体症状:用iis浏览动态网页(我浏览的是asp网页,其他的清楚),页面可以打开,无如何错误提示,但数据库中的内容却怎么也读取出来,所以与数据库相关的页面数据都显示为空。 症状原因:可能电脑上你之前使用...
  • PRIMARY KEY (PK) 标识该字段为该表的主键,可以...NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键) DEFAULT 为该字段设置...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 444
精华内容 177
关键字:

数据库之不能为空