精华内容
下载资源
问答
  • delphi数据库字段数量方法 方法1:sql2000查询语句 ---------------------------------- declare @objid int,@objname char(40) set @objname = 'a'--表名称 select @objid = id from sysobjects where id = object_...
  • 方法1:sql2000查询语句 ---------------------------------- declare @objid int,@objname char(40) set @objname = 'a'--表名称 select @objid = id from sysobjects where id = object_id(@objname) ...
  • 数据库字段类型

    2014-12-31 12:47:47
    数据库字段类型  来源:http://blog.csdn.net/chpdirector84/article/details/6110018 一:Microsoft Access 数据类型  Text 用于文本或文本与数字的组合。最多 255 个字符。   Memo Memo 用于...
    
    

    一:Microsoft Access 数据类型
        Text            用于文本或文本与数字的组合。最多 255 个字符。  
        Memo            Memo 用于更大数量的文本。最多存储 65,536 个字符。 
        Byte            允许 0 到 255 的数字。                                      1 字节
        Integer         允许介于 -32,768 到 32,767 之间的数字。                     2 字节
        Long            允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字     4 字节
        Single          单精度浮点。处理大多数小数。                                4 字节
        Double          双精度浮点。处理大多数小数。                                8 字节
        Currency        用于货币。支持 15 位的元,外加 4 位小数。                   8 字节
        AutoNumber      AutoNumber 字段自动为每条记录分配数字,通常从 1 开始。      4 字节
        Date/Time       用于日期和时间                                              8 字节
        Yes/No          逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。         1 比特
        Ole Object      可以存储图片、音频、视频或其他 BLOBs (Binary Large OBjects) 最多 1GB
        Hyperlink       包含指向其他文件的链接,包括网页。  
        Lookup Wizard   允许你创建一个可从下列列表中进行选择的选项列表。            4 字节

    二:MySQL 数据类型
        1: Text 类型:
            CHAR(size)          保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
            VARCHAR(size)       保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。
            TINYTEXT            存放最大长度为 255 个字符的字符串。
            TEXT                存放最大长度为 65,535 个字符的字符串。
            BLOB                用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
            MEDIUMTEXT          存放最大长度为 16,777,215 个字符的字符串。
    MEDIUMBLOB 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
            LONGTEXT            存放最大长度为 4,294,967,295 个字符的字符串。
            LONGBLOB            用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
            ENUM(x,y,z,etc.)    允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。
            SET                 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。
        2: Number 类型:
            TINYINT(size)       -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
            SMALLINT(size)      -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
            MEDIUMINT(size)     -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。
    INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
            BIGINT(size)        -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
            FLOAT(size,d)       带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
            DOUBLE(size,d)      带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
            DECIMAL(size,d)     作为字符串存储的 DOUBLE 类型,允许固定的小数点。
        3: Date 类型:
            DATE()          日期。格式:YYYY-MM-DD 注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'
            DATETIME()      *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
            TIMESTAMP()     *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
            TIME()          时间。格式:HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59' 
            YEAR()          2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
            
    三:SQL Server 数据类型
        1: Character 字符串:
            char(n)         固定长度的字符串。最多 8,000 个字符。 
            varchar(n)      可变长度的字符串。最多 8,000 个字符。  
            varchar(max)    可变长度的字符串。最多 1,073,741,824 个字符。  
            text            可变长度的字符串。最多 2GB 字符数据。  
        2: Unicode 字符串:
            nchar(n)        固定长度的 Unicode 数据。最多 4,000 个字符。  
            nvarchar(n)     可变长度的 Unicode 数据。最多 4,000 个字符。  
            nvarchar(max)   可变长度的 Unicode 数据。最多 536,870,912 个字符。  
            ntext           可变长度的 Unicode 数据。最多 2GB 字符数据。
        3: Binary 类型:
            bit             允许 0、1 或 NULL  
            binary(n)       固定长度的二进制数据。最多 8,000 字节。  
            varbinary(n)    可变长度的二进制数据。最多 8,000 字节。  
            varbinary(max)  可变长度的二进制数据。最多 2GB 字节。  
            image           可变长度的二进制数据。最多 2GB。
        4: Number 类型:
            tinyint       1 字节  允许从 0 到 255 的所有数字。 
            smallint      2 字节  允许从 -32,768 到 32,767 的所有数字。 
            int           4 字节  允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 
            bigint        8 字节  允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8 字节
            decimal(p,s)  5-17 字节     固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
            numeric(p,s)  5-17 字节     固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
            smallmoney    4 字节        介于 -214,748.3648 和 214,748.3647 之间的货币数据。 
            money         8 字节        介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 
            float(n)      4 或 8 字节   从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 
            real          4 字节        从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 
        5: Date 类型:
            datetime        8 字节      从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。
            datetime2       6-8 字节    1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 
            smalldatetime   4 字节      从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。
            date            3 字节。    从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 
            time            3-5 字节    仅存储时间。精度为 100 纳秒。
            datetimeoffset  8-10 字节   datetime2 相同,外加时区偏移。 
            timestamp                   存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。

    展开全文
  • 尤其是在遇到巨量的数据库表、有些数据库表由于历史原因设计的不合理,导致表中的数据字段数量会达到 100+,尤其是在对比各个数据库的差异时,将会耗费大量的人力、时间去做对比。为了解决这样的难题,小编在这里...
  • mysql在字段量特别大情况下 如何获取数据库中的字段数量 SELECT COUNT(*) FROM information_schema. COLUMNS WHERE TABLE_SCHEMA = ‘数据库名’ AND table_name = ‘表名’; 比如以下 SELECT COUNT(*) FROM ...

    mysql在字段量特别大情况下 如何获取数据库中的字段数量

    SELECT
    COUNT(*)
    FROM
    information_schema. COLUMNS
    WHERE
    TABLE_SCHEMA = ‘数据库名’
    AND table_name = ‘表名’;

    比如以下

    SELECT
    COUNT(*)
    FROM
    information_schema. COLUMNS
    WHERE
    TABLE_SCHEMA = ‘portal’
    AND table_name = ‘user_info’;

    portal为数据库名称
    user_info为表名称

    展开全文
  • 关于数据库字段模糊查询

    千次阅读 2019-01-30 11:49:48
    A:有时候仅仅为了一个属性进行建立一张表,会将表的数量变多,在插入和查询时候进行大量的操作。 数据库demo设计: CREATE TABLE `WeNickName` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMME...

    原始需求:数据库中存储了很多微信名称然后得进行模糊查询。

    Q1:为什么不进行一对多的设计,可以采用一对多的设计?

    A:有时候仅仅为了一个属性进行建立一张表,会将表的数量变多,在插入和查询时候进行大量的操作。

    数据库demo设计:

    CREATE TABLE `WeNickName` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
      `weNickName` varchar(11) DEFAULT NULL COMMENT '微信名',
      `other` int(11) DEFAULT NULL COMMENT '其他信息',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    一对多的查询:

    情景1:要进行简单的模糊查询,例子:输入“爱”,查出“爱情”、“爱”、“爱情爱”等

    查询方式为:

    select * from WeNickName where weNickName like "%爱%"

    结果为:

    情景2:对数据进行精确模糊查询,如;输入天使 查出来 第4和第6条

    select * from WeNickName where FIND_IN_SET("天使",weNickName)

    结果为:

    注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。

    多对多的查询:

    场景一:输入多个查询对象,是模糊查询,例如:输入爱情,天使查出来结果是除了第二、三条其他的数据都应该查出来。

    select * from WeNickName where weNickName regexp "爱情|天使"

    Q2:使用正则表达和like间的效率

    A2:效率上正则表达相对效率低下一些,但是在数量比较小的情况下,使用正则表达式能让sql语句变得简单

    场景二:在多对多情况下,想要精确查询,输入天使宜家、天使 那么仅仅会输出第六条

    目前我还没有找到比较好且简洁的方式处理这个问题,如果有人知道如何让处理这类问题,欢迎在评论中留言。

    多对一的查询

    场景一:指多个属性对一个字符进行模糊查询,这种场景比较少见,基本的sql模式语句模式为:

    SELECT * FROM `magazine` WHERE CONCAT(`title`,`tag`,`description`) LIKE ‘%关键字%’

    欢迎大家关注我,我将不定期更新一些自己在后台开发中遇见的一些通用问题总结帮助大家一起进步。

     

     

    展开全文
  • 原因:列的字段越大,建立索引时所需要的空间也就越大,这样一页中所能存储的索引节点的数量也就越少也越少,在遍历时所需要的 IO 次数也就越多,索引的性能也就越差。 方法a. 将字符串转换成数字类型存储,如:将 IP...
        

    字段设计规范

    1. 优先选择符合存储需要的最小的数据类型1

    原因:列的字段越大,建立索引时所需要的空间也就越大,这样一页中所能存储的索引节点的数量也就越少也越少,在遍历时所需要的 IO 次数也就越多,索引的性能也就越差。

    方法a. 将字符串转换成数字类型存储,如:将 IP 地址转换成整形数据

    MySQL 提供了两个方法来处理 ip 地址

    • inet_aton 把 ip 转为无符号整型 (4-8 位)
    • inet_ntoa 把整型的 ip 转为地址

    插入数据前,先用 inet_aton 把 ip 地址转为整型,可以节省空间,显示数据时,使用 inet_ntoa 把整型的 ip 地址转为地址显示即可。

    方法b. 对于非负型的数据 (如自增 ID,整型 IP) 来说,要优先使用无符号整型来存储

    原因:无符号相对于有符号可以多出一倍的存储空间

    SIGNED INT -2147483648~2147483647
    UNSIGNED INT 0~4294967295
    VARCHAR(N) 中的 N 代表的是字符数,而不是字节数,使用 UTF8 存储 255 个汉字 Varchar(255)=765 个字节。过大的长度会消耗更多的内存。

    2. 避免使用 TEXT,BLOB 数据类型,最常见的 TEXT 类型可以存储 64k 的数据

    a. 建议把 BLOB 或是 TEXT 列分离到单独的扩展表中

    MySQL 内存临时表不支持 TEXT、BLOB 这样的大数据类型,如果查询中包含这样的数据,在排序等操作时,就不能使用内存临时表,必须使用磁盘临时表进行。而且对于这种数据,MySQL 还是要进行二次查询,会使 sql 性能变得很差,但不是说一定不能使用这样的数据类型。

    如果一定要使用,建议把 BLOB 或是 TEXT 列分离到单独的扩展表中,查询时一定不要使用 select * 而只需要取出必要的列,不需要 TEXT 列的数据时不要对该列进行查询。

    b. TEXT 或 BLOB 类型只能使用前缀索引

    因为 MySQL[1] 对索引字段长度是有限制的,所以 TEXT 类型只能使用前缀索引,并且 TEXT 列上是不能有默认值的

    3. 避免使用 ENUM 类型

    修改 ENUM 值需要使用 ALTER 语句;ENUM 类型的 ORDER BY 操作效率低,需要额外操作;禁止使用数值作为 ENUM 的枚举值

    4. 尽可能把所有列定义为 NOT NULL

    原因:索引 NULL 列需要额外的空间来保存,所以要占用更多的空间;进行比较和计算时要对 NULL 值做特别的处理

    5. 使用 TIMESTAMP(4 个字节) 或 DATETIME 类型 (8 个字节) 存储时间

    TIMESTAMP 存储的时间范围 1970-01-01 00:00:01 ~ 2038-01-19-03:14:07;TIMESTAMP 占用 4 字节和 INT 相同,但比 INT 可读性高;超出 TIMESTAMP 取值范围的使用 DATETIME 类型存储

    经常会有人用字符串存储日期型的数据(不正确的做法)

    • 缺点 1:无法用日期函数进行计算和比较
    • 缺点 2:用字符串存储日期要占用更多的空间

    6. 同财务相关的金额类数据必须使用 decimal 类型

    • 非精准浮点:float,double
    • 精准浮点:decimal

    Decimal 类型为精准浮点数,在计算时不会丢失精度;占用空间由定义的宽度决定,每 4 个字节可以存储 9 位数字,并且小数点要占用一个字节;可用于存储比 bigint 更大的整型数据

    索引设计规范

    1. 限制每张表上的索引数量,建议单张表索引不超过 5 个

    索引并不是越多越好!索引可以提高效率,同样可以降低效率。

    索引可以增加查询效率,但同样也会降低插入和更新的效率,甚至有些情况下会降低查询效率。

    因为 MySQL 优化器在选择如何优化查询时,会根据统一信息,对每一个可以用到的索引来进行评估,以生成出一个最好的执行计划,如果同时有很多个索引都可以用于查询,就会增加 MySQL 优化器生成执行计划的时间,同样会降低查询性能。

    2. 禁止给表中的每一列都建立单独的索引

    5.6 版本之前,一个 sql 只能使用到一个表中的一个索引,5.6 以后,虽然有了合并索引的优化方式,但是还是远远没有使用一个联合索引的查询方式好。

    3. 每个 Innodb 表必须有个主键

    Innodb 是一种索引组织表:数据的存储的逻辑顺序和索引的顺序是相同的。每个表都可以有多个索引,但是表的存储顺序只能有一种。

    Innodb 是按照主键索引的顺序来组织表的

    • 不要使用更新频繁的列作为主键,不适用多列主键(相当于联合索引)
    • 不要使用 UUID,MD5,HASH,字符串列作为主键(无法保证数据的顺序增长)
    • 主键建议使用自增 ID 值

    4. 常见索引列建议

    • 出现在 SELECT、UPDATE、DELETE 语句的 WHERE 从句中的列
    • 包含在 ORDER BY、GROUP BY、DISTINCT 中的字段
    • 并不要将符合 1 和 2 中的字段的列都建立一个索引, 通常将 1、2 中的字段建立联合索引效果更好
    • 多表 join 的关联列

    5. 如何选择索引列的顺序

    建立索引的目的是:希望通过索引进行数据查找,减少随机 IO,增加查询性能 ,索引能过滤出越少的数据,则从磁盘中读入的数据也就越少。

    • 区分度最高的放在联合索引的最左侧(区分度=列中不同值的数量/列的总行数)
    • 尽量把字段长度小的列放在联合索引的最左侧(因为字段长度越小,一页能存储的数据量越大,IO 性能也就越好)
    • 使用最频繁的列放到联合索引的左侧(这样可以比较少的建立一些索引)

    6. 避免建立冗余索引和重复索引(增加了查询优化器生成执行计划的时间)

    • 重复索引示例:primary key(id)、index(id)、unique index(id)
    • 冗余索引示例:index(a,b,c)、index(a,b)、index(a)

    7. 对于频繁的查询优先考虑使用覆盖索引

    覆盖索引:就是包含了所有查询字段 (where,select,ordery by,group by 包含的字段) 的索引

    覆盖索引的好处:

    • 避免 Innodb 表进行索引的二次查询: Innodb 是以聚集索引的顺序来存储的,对于 Innodb 来说,二级索引在叶子节点中所保存的是行的主键信息,如果是用二级索引查询数据的话,在查找到相应的键值后,还要通过主键进行二次查询才能获取我们真实所需要的数据。而在覆盖索引中,二级索引的键值中可以获取所有的数据,避免了对主键的二次查询 ,减少了 IO 操作,提升了查询效率。
    • 可以把随机 IO 变成顺序 IO 加快查询效率: 由于覆盖索引是按键值的顺序存储的,对于 IO 密集型的范围查找来说,对比随机从磁盘读取每一行的数据 IO 要少的多,因此利用覆盖索引在访问时也可以把磁盘的随机读取的 IO 转变成索引查找的顺序 IO。

    8. 索引 SET 规范

    尽量避免使用外键约束

    • 不建议使用外键约束(foreign key),但一定要在表与表之间的关联键上建立索引
    • 外键可用于保证数据的参照完整性,但建议在业务端实现
    • 外键会影响父表和子表的写操作从而降低性能

    作者: 听风,原文地址: https://www.cnblogs.com/huchong/p/10219318.html

    展开全文
  • 这个对应的数据库中的表是v9_position 字段说明: Posid:推荐位ID Modelid:适用的模型ID,0即为全部模型 Catid:栏目ID Name:名称 Maxnum:最大存储数量 Extention: Listorder:排序 Siteid:站点ID ...
  • 一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。若符合这两个条件,则可以说明这个数据库的标准化水平还是比拟高的。当然这是两个泛泛而谈的指标。为了达到数据库计划标准化的要求,一般来说,需要符合...
  • 先从sql语句数据库查询 下方代码Types是字段名,kfmsg是表名,where Types=1为查询Types中的1 select Types from kfmsg where Types=1 根据下图显示查到三条1记录 查询有几个2,改末尾Types值即可即可 select Types...
  • 一:Microsoft Access 数据类型  Text 用于文本或文本与数字的组合。最多 255 个字符。  ... Memo Memo 用于更大数量的文本。最多存储 65,536 个字符。   Byte 允许 0 到 255 的数字。 
  •  1、查询数据库数量 #查询MySQL服务中数据库表数据量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; #查询指定数据库数量 SELECT COUNT(*) TABLES, ...
  • 1.查数据库中表数量 (红色标记的是常用到的重要的表结构信息表) mysql> use information_schema;Database changedmysql> show tables;+---------------------------------------+| Tables_in_information_...
  • 今天对一个表A中字段进行查询,不同类型的字段进行数据统计; 1.select count(1) from A where strwhere 对符合条件的行数进行统计 2.select count(filed) from A where strwhere 对符合条件列的行数进行统计...
  • 查询数据库数量 #查询MySQL服务中数据库表数据量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema;...查询数据库中的字段,表中的字段 #查询一个表中有多少字
  • 网站做下来有90多个表了,我想知道一共有多少个字段,一个一个数显然太麻烦了。到百度知道上问,没有得到答案,网上再搜,找到个启发性的语句,最后发现了语句。 要知道一个数据库里共有多少个用户表: select ...
  • 工作中遇到了需要查询数据库studylesson表dateline内容相同数量有多少 数据库studylesson表如下  dateline为时间戳  id dateline 1 1319092295

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,967
精华内容 786
关键字:

数据库字段数量