精华内容
下载资源
问答
  • 也就是说,数据在数据库中怎样存储由数据库管理系统管理的,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变时应用程序不用改变。 ②逻辑独立性指用户的应用程序与数据库的...
  • mysql的NUll是什么 ?...SQL空值是用来满足真实关系数据库管理系统(RDBMS),支持“缺失信息与不适用的信息”的需求。科德还介绍了在数据库理论使用小写的希腊字母(ω)符号来表示空值。在 SQL则是...

    mysql中的NUll是什么 ?

    • 维基百科是这样说的:空值(Null或NULL)是结构化查询语言中使用的特殊标记,是中对数属性未知或缺失的一种标识,用于指示数据库中不具值。由关系数据库模型的创作者 E.F.科德所引入。SQL空值是用来满足真实关系数据库管理系统(RDBMS)中,支持“缺失信息与不适用的信息”的需求。科德还介绍了在数据库理论中使用小写的希腊字母(ω)符号来表示空值。在 SQL中则是以 NULL 用于标识空值的保留关键字。SQL null是一个状态,而不是一个值。这种用法与大多数编程语言完全不同,其中引用的空值意味着不指向任何对象。
    • 这不应与 0 数值混淆。空值表示缺少值-而与零值不同,与缺乏答案的方式不同,作为“否”的答案。例如,考虑“亚当拥有多少本书?”这个问题,答案可能是“零”(我们知道他没有)或“空白”(我们不知道他拥有多少)。在数据库表格中,回报此问题的列结果,将从没有值(标记为Null)开始,并且在我们确定亚当没有书籍之前,并不会更新为值“零”。
    • 数据库表主键的取值不能为空值。另外,数据库中的统计计算,一般将有空值的数据忽略不计。

    MYSQL 的null值和’ '值有什么区别呢?

    • 占用空间区别 null值在mysql中的占用空间大小也为null,而’ '值在mysql 中为0。
    - mysql>  select length(NULL), length(''), length('1');
    +--------------+------------+-------------+
    | length(NULL) | length('') | length('1') |
    +--------------+------------+-------------+
    | NULL         |          0 |           1 |
    +--------------+------------+-------------+
    1 row in set
    
    • 查询方式不一样,null值查询必须使用is null/is not null 才能查到为null的record记录但是’ '旧可以使用算数运算符来进行查询 列如 = ,!= ,>,<等。
      需注意的时候当你的数据库字段里面null值的时候,你的a中有为null的值则是查不出来为null的行的。
    select * from table where a !=  10
    
    • COUNT 和 IFNULL函数
    1. 你在查询某一列的的条数的时候如果这一列有null值得时候就不会计算进去,但是你不单独查询某一列,如count(1) 或 count(*)时则是完整的。
    2. IFNULL(filedName,value) 如果你查的filedName 这个列值为null则查出来的这个值就是value。value为默认值
    • 对索引的影响
    1. 首先根据上面我们对null指的理解可以先分析一下,null在数据库中是真是存在且占用空间的,而’ '空白是不占用空间的,那就是说当你用不到这个null的含义的时候,且你的数据库DDL语句并没有使用 not null来定义,那就会浪费很快多的存储空间。那这就是第一点当你的某一列没有定义not NULL的时候且你用这一列去创建索引是会浪费不必要的存储空间 。
    2. 上面也说过了,NULL值在mysql是一种特殊值的存在,
      MySQL难以优化引用了可空列的查询,它会使索引、索引统计和值更加复杂。
      可空列需要更多的储存空间,还需要在MySQL内部进行特殊处理。当可空列被索引的时候,
      每条记录都需要一个额外的字节,还可能导致 MyISAM 中固定大小的索引(例如一个整数列上的索引)变成可变大小的索引。
      即使要在表中储存「没有值」的字段,还是有可能不使用 NULL 的,考虑使用 0、特殊值或空字符串来代替它。
      把 NULL 列改为 NOT NULL 带来的性能提升很小,所以除非确定它引入了问题,否则就不要把它当作优先的优化措施。
      然后,如果计划对列进行索引,就要尽量避免把它设置为可空,虽然在mysql里 Null值的列也是走索引的

      总结:
    3. 在创建MySQL表示尽量要限制not NULL 且给初始值为 ’ ’ 或 0;
    4. NULL值在mysql数据库中是占有存储的, ’ ’ 是不占用的。
    5. 如果某一列有NULL值,且以此列创建索引。这一 列不会出现索引失效,但是会出现索引相对不佳,以及数据库占用存储变大。
      参考资料 : https://blog.csdn.net/u010648555/article/details/94555199
      https://blog.csdn.net/yangstarss/article/details/79570592
    展开全文
  • 若属性(或属性组)F基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定不同的关系),则对于R每个元组F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S某个元组的主码值。即...
  • 昨天在数据库中建立数据表的时候要求显示的添加一些系统语法规则,对于这些设置不知道都是什么含义,这次记录下来供以后学习。 (1)SET ANSI_NULLS ON语句  T-SQL支持在与空值进行比较时,允许比较运算符返回...

    昨天在数据库中建立数据表的时候要求显示的添加一些系统语法规则,对于这些设置不知道都是什么含义,这次记录下来供以后学习。

    (1)SET ANSI_NULLS ON语句

      T-SQL支持在与空值进行比较时,允许比较运算符返回TRUE或FALSE.通过设置SET ANSI_NULLS OFF可将此项激活。举个例子:  

      当 SET ANSI_NULLS 为 ON 时,SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。  

      当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name<> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。

     

    (2)SET QUOTED_IDENTIFIER ON

      在创建一个表时,表名称正好是SQLSERVER的标识符,不管SET QUOTED_IDENTIFIER ON还是SET QUOTED_IDENTIFIER OFF都会提示错误。

      如果想以distinct为表时,在 SET QUOTED_IDENTIFIER on 的情况下是可以把sqlserver的标识符加上双引号来创建以sqlserver标识符为表名的表,但是加单引号也是不可以的。如下图代码

     

      但是在QUOTED_IDENTIFIER为off的情况下,不管distinct加引号或不加引号或加双引号都是不可以的。因为在QUOTED_IDENTIFIER为off情况下,sqlserver的标识符是不允许加引号的。

    (3)SET ANSI_PADDING ON

        建议始终将 ANSI_PADDING 设置为 ON。

      这个选项只在数据表的字符串字段被更新或者新的数据行插入到表中的时候作用。它控制着SQL Server在遇到字符串尾随空格时是否截断空格,以及是否填充空格以达到预定义的字符字段长度。

      当设置为ON时,不将值按列的长度进行填充。不剪裁字符值中插入到varchar列的尾随空格和二进制值中插入到varbinary列的尾随零。

      当设置为OFF时,将值按列的长度进行填充。剪裁varchar列的尾随空格和varbinary列的尾随零。

    (4)[DBNAME].[DBO].[TABLE]

      对数据表进行增删改查的时候,经常会见到数据库名称+DBO+数据表的情况,比如select* from [TestDB].[dbo].[usertable]。那么这是什么含义呢?

      [TestDB]好理解,就是指定查询哪一个数据库。

      [dbo]是每个数据库的默认用户,具有所有者权限,即DbOwner。通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
      比如:你以User1登录进去并建表Table,而未指定DBO,当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1.Table,如果他不知道是你建  的,则访问会有问题。如果你建表时把所有者指给了Dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。不光表是如此,视图等等数据库对象建立时也要如此才算  是好。

      建表、存储过程、视图等数据库对象时,其对应的所有者是创建它的用户。则除了该用户其他登录用户要引用这些东东时,都要加上前缀,很是麻烦。而且,程序因此易出错,你  查来查去问题确出在这,浪费你时间。

      为什么使用方括号将表名称、库名称括起来的原因:

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

     

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

     

    select from [user]

     

      否则就会报错。

     

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

     

      select from 表名 where [user]=1
     
      (5)N''是什么意思?
      加上 N 代表存入数据库时以 Unicode 格式存储。N'string' 表示string是个Unicode字符串。例如,'Michél' 是字符串常量而 N'Michél' 则是 Unicode 常量。Unicode 数据中  的每个字符都使用两  个字节进行存储,而字符数据中的每个字符则都使用一个字节进行存储。
      (6)

     

    转载于:https://www.cnblogs.com/qtiger/p/7019322.html

    展开全文
  • 若属性(或属性组)F基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定不同的关系),则对于R每个元组F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S某个元组的主码值。即...
  • 数据库

    2016-05-28 10:21:25
    1、数据库:存放和提供数据的“库房”。 2、数据的事务管理和运行控制:保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。...5、数据库中的数据为什么会有“空值”(null): 值

    1、数据库:存放和提供数据的“库房”。
    2、数据的事务管理和运行控制:保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
    3、数据库模式(内涵):数据库的描述,包括数据库的数据结构、数据类型和约束。
    4、数据库实例(状态/外延):某一时刻实际存储在数据中的数据集合。
    注:实例是模式在某一时刻的具体化、实例化。
    5、数据库中的数据为什么会有“空值”(null):

    • 值是未知的
    • 值存在但不能获得
    • 当前属性(列标题)对当前元组(行)不适合

    6、内连接
    (inner) join:连接两个表

    7、外连接
    left (outer) join:显示LEFT表(左边表)中的全部元组,如果RIGHT表(右边表)中没有扫描到符合连接条件的元组,则用NULL代替。
    right (outer) join:显示RIGHT表(右边表)中的全部元组,如果LEFT表(左边表)中没有扫描到符合连接条件的元组,则用NULL代替。
    full (outer) join:显示LEFT表(左边表) 和RIGHT表(右边表)中的全部元组,如果没有扫描到符合连接条件的元组,则用NULL代替。


    sql语句
    查询: select FNAME,LNAME from EMPLOYEE join DEPENDENT on SSN=ESSN where EMPLOYEE.SEX=’F’:连接表EMPLOYEE和DEPENDENT,查找EMPLOYEE.SEX=’F’的元组的FNAME,LNAME

    增:insert into DEPARTMENT(FNAME,AGE) values(‘mike’,6):在表DEPARTMENT中增加FNAME=’mike’,AGE=6的一行元组

    改:update DEPARTMENT set ADDRESS=’BEIJING’ where DNAME=’MIKE’:修改表DEPARTMENT中DNAME=’MIKE’的元组,修改其ADDRESS=’BEIJING’

    删:delete from DEPARTMENT where DNAME like ‘%D’:删除表DEPARTMENT中DNAME以D结尾的元组


    引申:一些小的知识点:
    where SALARY between 300 and 500:SALARY在300至500之间
    CITY in(‘houston’,’beijing’,’shanghai’):CITY是houston,beijing,上海其中一个
    %:代表多个字符
    _:代表单个字符
    is NOT NULL:不为空
    [JN]:该字符为J或N
    [^JN]:该字符不为J和N
    order by AGE (ASC):按AGE升序排列,ASC可省略
    order by AGE DESC:按AGE降序排列

    展开全文
  • 日常开发,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql的NULL和空字符。 空字符(”)和空值(null)表面上看都空,其实存在一些差异: 定义: 空值(NULL)的长度NULL,不确定占用了多少存储...
  • 做一个简单的学生管理系统专业:计算机科学与技术网络工程...}请问下为什么取出来了值但是在数据库中找不到匹配?提示query为空值数据库已有这个数据回复讨论(解决方案)至少要这样$query = “select * from s where p...

    做一个简单的学生管理系统

    专业:

    计算机科学与技术

    网络工程

    财务管理

    全部

    上边是选项

    这边是进行数据库搜索

    if ( $pro!=”全部” )

    {

    $query = “select * from s where pro=$pro”;

    }

    请问下为什么取出来了值但是在数据库中找不到匹配?

    提示query为空值

    数据库已有这个数据

    回复讨论(解决方案)

    至少要这样

    $query = “select * from s where pro=’$pro'”;

    贴出你的代码看看啦

    至少要这样

    $query = “select * from s where pro=’$pro'”;

    结果是一样的无法匹配到 单独显示$pro都有值

    贴出你的代码看看啦

    if (!empty($_POST[“sname”]))

    {

    $sname = $_POST[“sname”];

    }

    else

    {$sname=”空”;}

    if (!empty($_POST[“sid”]))

    {

    $sid=$_POST[“sid”];

    }

    else

    {$sid=”空”;}

    $pro = $_POST[“pro”];

    $grade=$_POST[“grade”];

    $class=$_POST[“class”];

    ?>

    if ($grade ==”全部” && $class ==”全部” && $pro==”全部” && $sname==”空” && $sid==”空” )

    {

    $query = “select * from s order by sid desc”;

    }

    else if ($grade ==”全部” && $class ==”全部” && $pro==”全部” && $sname!=”空” && $sid==”空” )

    {

    $query = “select * from s where sname=$sname order by sid desc”;

    }

    else if ($grade ==”全部” && $class ==”全部” && $pro==”全部” && $sname==”空” && $sid!=”空” )

    {

    $query = “select * from s where sid=$sid order by sid desc”;

    }

    else if ($grade ==”全部” && $class ==”全部” && $pro==”全部” && $sname!=”空” && $sid!=”空” )

    {

    $query = “select * from s where sid=$sid and sname=$sname order by sid desc”;

    }

    else if ($grade ==”全部” && $class ==”全部” && $pro!=”全部” && $sname==”空” && $sid==”空” )

    {

    $query = “select * from s where pro=$pro order by sid desc”;

    }

    $result = $db->query($query);

    if ($result >0) {

    while ($row = $result->fetch_assoc()) {

    ?>

    编辑

    展开全文
  • 数据库索引

    2021-03-25 17:40:28
    索引 什么是索引? MySQL 官方对索引的定义为:索引 Index 帮助 MySQL 高效获取数据的数据结构。...普通索引 MySQL 的基本索引类型,允许定义索引的列插入重复值和空值。 CREATE INDEX index_name ON tab
  • 数据库资料

    2018-04-01 22:00:33
    R图转换为表 3-2 如何将E-R图转换为表数据规范化 仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计创建好的表结构 Dr E.F.codd 最初定义了规范化的三个级别,范式具有最小冗余的表结构。这些范式:第一...
  • Oracle数据库学习指南

    2012-07-04 22:12:40
    46. SQLPlusinsert进的都中文的,为什么一存入服务器后,再select出的就是???了 47. 客户端处理Oracle的数据行加锁问题 48. 怎样查看init_ora文件 49. 怎样快速查出Oracle 数据库中的锁等待 50. 怎样...
  • 数据库相关面试笔记

    2018-05-25 11:41:57
    另外,定义主键时,如果这列之前没有索引,系统会为其创建唯一性索引 。 外键作用:能保证设置外键的列取值必须匹配父表已有的值.通过外键可以与同一张表的列建立引用关系,也可以与不同表的列建立引用关系。外键...
  • 在系统中, 数据类型的实际最大长度由数据库页面大小决定,具体最 大长度算法如表 的区别在于前者长度不足时,系统自动填充空 格,而后者只占用实际的字节空间。 表 数据库页面大 实际最大长度 注:这个限制长度...
  • oracle数据库经典题目

    2011-02-17 15:05:20
    系统权限提供了Oracle数据库系统范围内执行某种任务的操作能力,而对象权限则一种赋予用户指定的数据库对象(如表、视图、过程等) 16. Oralce数据库进行物理备份有联机备份和脱机备份两种方式可供选择。 ...
  • 数据未知数或者无法使用时,大多数的数据库管理系统将存储一个叫做Null值的特殊值。不要将它和零(一个合法数值)、零长度串(不含有字符的一种串数据类型)或空格字符混淆起来。SQL-3标准把一个Null定义为: ...
  • 【判断题】NULL即空值表示“空白”或者“ 0 ”,两个NULL值可能相等也可能不等。【判断题】HAVING子句的...【简答题】空间设计研究三个主要方面(三个关键词) (5.0分)【判断题】数据库的备份数据库还原到系统中去...
  • 2、在第一章中,主要学习怎么在数据管理系统软件新建数据库,然后在数据库中新建数据表以及删除表。3、在数据表表插入数据,可以直接打开表,然后一条一条的输入数据,也可以通过新建查询,然后通过SQL语句,批量...
  • 数据库课程设计(基于B/S)

    热门讨论 2008-12-28 15:28:06
    课程设计任务书 题目名称 数据库原理及设计课程设计 学生学院 经济管理学院 专业班级 06级电子商务5班 姓 名 麦少柠 学 号 3206005737 一、课程设计的内容 本课程设计要采用本课程中...而这个系统中,我们经常要按...
  • 缓存穿透指用户查询数据,在数据库没有,自然在缓存也不会有。 这样就导致用户查询的时候,在缓存找不到对应key的value,每次都要去数据库再查询一遍,然后返回空(相当于进行了两次 无用的查询)。这样请求就绕...
  • 5)列出满足如下条件的供应商的names和他们各自的订单平均订购书籍数量,要求他们的订单平均订购书籍数量大于系统中所有订单的平均订购书籍数量; 6)按字母顺序列出满足如下要求的所有图书馆中男读者的first names和...
  • 该种列具有以下三种特点:1、列的数据类型为不带小数的数值类型2、进行插入(Insert)操作时,该列的值系统按一定规律生成,不允许空值3、列值不重复,具有标识表每一行的作用,每个表只能有一个标识列。...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 122
精华内容 48
关键字:

在数据库系统中空值是什么