精华内容
下载资源
问答
  • mysql中数据库字段类型详解 ...需注意:如果存储文件过数据库性能也会下降很。 mysql中四种BLOB类型: 类型 大小(单位:字节) TinyBlob 最大255 Blob 最大65K MediumBlob

    mysql中数据库字段类型详解

    1,blob字段
    mysql中blob是一个二进制大型对象,是一个可以储存大量数据的容器,它能容纳不同大小的数据。
    mysql中blob的四种类型除了存储数据的大小有区别,其它都一样。
    需注意:如果存储的文件过大,数据库性能也会下降很多。

    	mysql中的四种BLOB类型:
    	类型                                 大小(单位:字节)
    	TinyBlob							最大255
    	Blob									最大65K
    	MediumBlob					最大16M
    	LongBlob							最大4G
    

    2,时间字段
    日期类型
    Date 格式
    YYYY-MM-DD 支持范围为1000-01-01 到9999-12-31 并允许字符串或者数字为此列赋值

    		 update sys_table set str_date =  12331212  where id = "11";
    		 update sys_table set str_date= 1233-12-12 where id = "11"
    	DateTime格式
    		YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS  
    		支持范围为1000-01-01 00:00:00到9999-12-31 23:59:59 并允许字符串或者数字为此列赋值。
    		默认值为null,不会自动更新,可设置 default current_timestamp 新增时默认为当前时间
    		
    		 update sys_table set str_date =  12331212121212  where id = "11"
    		 update sys_table set str_date= 1233-12-12 12:12:12  where id = "11"
    	*TimeStamp格式*
    		YYYY-MM-DD HH:MM:SS或YYYYMMDDHHMMSS   
    		这是时间戳 ,从1970-01-01 00:00:00到2038-01-19 03:14:07,
    		输出的时间为 Thu Jan 01 08:00:00 CST 1970 即utc格式(格林威治标准时间-世界标准时间即存储时会把当前时区的转化为utc存储,查询时又转化为当前时区输出),北京时间东八区和它相差8小时,再存储时会减8小时,所以用mybatis 读取时要自动加8小时
    		由上可知对于跨时区的业务,timestamp比较适合
    		设置的时间得大于1970年
    		默认值 not null 默认时间为当前时间
    		
    		
    		update sys_table set str_date =  20081212121212  where id = "11";
    *关于两者的自动初始化和自动更新*
    	create table test_mm 
    	(
    	 id int(1) default null,
    	 hiredate timestamp not nul default current_timestamp on update current_timestamp,
    	 hirrrrr datetime  not nul default current_timestamp on update current_timestamp
    	)
    在mysql5.6.5 以后,只要新建表时时间字段如上边这样设计,则
    自动初始化-没有给该值赋值,会自动填充当前时间
    自动更新--修改表中任何一个字段,会自动填充当前时间
    

    mysql 中表示当前时间的字段:
    CURRENT_TIMESTAMP
    CURRENT_TIMESTAMP()
    NOW()
    LOCALTIME
    LOCALTIME()
    LOCALTIMESTAMP
    LOCALTIMESTAMP()
    以上字段都一样的意思

    展开全文
  • 数据库索引就是为了提高表搜索效率而对某些字段值建立目录。 建立索引目的是加快对表中记录查找或排序。 创建索引可以大大提高系统性能 1,通过创建唯一家引,可以保证教据库表中每一行数据...

       索引

    索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。
    它是对数据库表中一列或多列的值进行排序的一种结构。
    简单理解
    数据库索引好比是一本书前面的目录,能够加快数据库的查询速度,
    数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录。


    建立索引的目的是加快对表中记录的查找或排序。
    创建索引可以大大提高系统的性能
    1,通过创建唯一家引,可以保证教据库表中每一行数据的唯一性。
    2,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
    3,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
    4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    5,通过使用索引,可以在查询的过程中,使用优化器,提高系统的性能。


    索引的类型
    1,普通索引
    这是最基本的索引,它没有任何限制。分别为单列索引和组合索引.

    单列索引:即一个索引只包含单个列,一个表可以有多个单列索引 .
    它有以下几神创建方式:创建索引语法 create index  索引名 on 表名(表中的列名)

    组合家引:
    多列索引多列索引也称组合索引,即一个索引巴含多个列。 
    创建多列索引的方式与创建单列索引的方式几乎相同,
    只是创建单列索引时括号中只写上了一个列。
    创建多列索引时在拮号中写入多个列,列与列之间用退号隔开。
    例如:为学生表(student_9)的姓名,电话号码,所在地址创建组合案引,两行代码效果相同
    create index idx name phoneNo ads on student 9(name,phoneNo, address)
    alter table student_9 add index idx_name_phoneNo_ads(name, phoneNo, address)

    如果使用多列索引, where条件中字段的顺序非常重要,需要满足最左前缀列
    最左前缀:查询条件中的所有字段需要从最左边起按顺序出现在多列象引中,
    需要按照最左家引列查找,不能跳过中间列,
    查询条件的字段数要小于等于多列索引的字段数,
    中间字段不能存在范围查询的字段(s,like等),
    这样的sql语句可以使用该多列索引。

    mysal多列索引适合的场景
    1,匹配全值,对索引中的所有列都指定具体的值(例如: names='xxx' and phoneNo='xxx' andaddresse='xxx )
    2.匹配最左前缀(例如: names='xxx,使用索引中的第一列)
    3.匹配部分最左前缀(例如: names='xx' and phoneNo='xx')
    4.匹配第一列范围查询(可用like a%,但不能使用like %b或则 like %b%)


    2,唯一索引
    唯一索引它与前面的音通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。
    如果是组合索引,则列值的组合必须唯一.

    创建唯一索引
    create unique index 索引名 on 表名 (列名)
    修改表结构
    alter table 表名 add unique index(列名)
    创建表的时候直接指定
    create table 表名(
    列名  列的数据类型  列的约束, 
    unique index  索引名 (列名) ,


    3.主键索引
      特殊的唯一索引,不允许有空值
      为表定义主键将自动创建主键索引


    4,全文索引

    全文搜索中,mycql制定了最小字符长度,默认是4必须要匹配大于4的才会有返回结果,可以使用:
    SHOW VARIABLESLIKE'ft_min_word_len'来查看制定的字符长度,
    也可在mysql配置文件my.ini更改最小字符长度,
    方法是在my.ini增加一行  比如:ft_ini_word_len=2,改完后重启mycql即可
    另外mysql还会计算一个词的权值,已决定是否出现在结果集中,mysql默认的阀值是50%
    mysql不支持中文的全文索引

    MYISAM引擎
        不支持事务和外键
        mycql中全文索引类型fullText只能用于MYISAM引擎的表
        create table 表名(列名1,......,)engine=myisam
    创建以mysiam为引擎的表只需在后面加上:
    engine = mysiam

    INNODB
        支持事务和外键
    显示创建表时使用的数据库引擎:
    show create table 表名

    创建全文索引
        1.create fulltext index 索引名 on 表名(列名)
        2.alter table 表名 add fulltext 索引名(列名)
        3.create table 表名(列名 列的数据类型 列的约束,
    fulltext 索引名(列名)

    使用全文索引
        match(列名列表)against(搜索的值)


    存储过程(无参)

    mycql存储过程是一组为了完成特定功能的sql语句集

    优点:
    1.存储过程能实现较快的执行速度
    2.存储过程可以重复使用,可减少数据库开发人员的工作量
    3.存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算
    4.安全性高,可设定只有某些用户才具有对制定存储过程的使用权
    5.存储过程能减少网络流量

    基本语法
    如何创建存储过程:
    create proecdure 存储过程名称([参数列表])
    begin
    过程体(sql代码);
    end;
        例如显示3+2结果的存储过程:
    create proecdure pro_showNum()
    begin
    select 2+3 from dual;
    end;
    dual为伪表
    查询某个数据库下的所有存储过程:
    show procedure status where db=数据库名称
    如何调用存储过程:
    call 存储过程名称()
    如何删除存储过程:
    drop procedure 存储过程名称


    存储过程中的变量

    1、变量分类:
        局部变量
        begin到end语句之间,用declare申明
        声明局部变量:
    create proecdure 存储过程名称([参数列表])
    begin
    declare 变量名 数据类型 [default 值] 
    过程体;
    end;
                改变变量的值:
    create proecdure 存储过程名称([参数列表])
    begin
    declare 变量名 数据类型 [default 值] 
    set 变量名=值||表达式;
    (set 变量名:=值||表达式)
    过程体;
    end;
    局部变量只在begin  end之间有效


    2、用户变量
       用户自定义的变量
        声明用户变量:
    set @变量名 := 值
        使用select声明变量值:
    select @变量名 := 变量值
        查询用户变量:
    select @a from dual;
        用户变量全局对指定用户有用


    3、会话变量
    打开客户端连接到MySQL服务器到关闭连接的过程叫会话,会话变量只对连接的客户端有效


    4、全局变量
        对所有客户端生效,只有具有super权限才可以设置全局变量
        select into
            把选定的列值直接存储到变量,只有单一的行可以被取回:
    select 列1,列2...... into 变量1,变量2...... from 表名 where 过滤条件
    使用delimiter修改结束标识符
        一般我们修改结束标识符为$符号,或者双\\

          存储过程(有参)

    参数类型
    1、in 输入类型
    create proecdure 存储过程名称(in 参数名 参数数据类型)
    begin
    过程体;
    end;

    2、out 输出类型
    定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程(存储过程内部,该参数初始值为null,无论调用者是否给存储过程参数设置值)
    可在存储过程内部被改变并返回
    create proecdure 存储过程名称(参数类型 参数名 参数数据类型,out 参数名 参数数据类型......)
    begin
    过程体;
    end;
    调用该存储过程时要先在外部声明一个用户变量


    3、inout输入输出参数
    既是输入参数又是输出参数
    create proecdure 存储过程名称(inout  参数名 参数数据类型)
    begin
    过程体;
    end;
    调用该存储过程也需要先在外部声明用户变量


    语法:
    create proecdure 存储过程名称(参数类型 参数名 参数数据类型,......)
    begin
    过程体;
    end;


    参数类型使用
    仅将数据传递给mycql存储过程,使用in参数类型
    仅从mycql存储过程返回值,使用out参数类型
    需要把数据传给mycql存储过程,还要经过一些计算后再传回给我们,此时要用inout
    mycql存储过程参数如果不显示制定参数类型,则默认为"in"

    流程控制语句
    1、if判断语句
    语法:
    if 条件表达式 then sql语句集 
    end if;

    2、双分支if
    if 条件表达式 then sql语句集 
    else sql语句集
    end if;

    3、多分支if
    if 条件表达式 then sql语句集 
    elseif 条件表达式 then sql语句集
    else sql语句集
    end if;

    case判断语句
    语法:
    case 表达式
    when 表达式值 then sql语句集;
    [when 表达式值 then sql语句集]......
    [else sql语句集]
    end case;


    语法2:
    case
    when 表达式 比较运算符 表达式值 then sql语句集;
    [when 表达式 比较运算符 表达式值 then sql语句集]......
    [else sql语句集]
    end case;

    在普通sql中使用:
    select 列明列表,case 值 when 比较值 then 结果
    while语句
            
    repaet语句
    触发器是与事件相关的特殊的存储过程,
    优点
    1.自动
    2.安全性
    3.审计  跟踪用户对数据库的操作
    4.业务逻辑封装性号,修改方便
    5.实现复杂的数据

    基本语法:
    create tigger 触发器名称
    before/after
    insert/update/delete
    on 表名
    for each row
    begin
    sql语句集
    end
    查看触发器语法:
    show tiggers
    删除触发器:

    old关键字与new关键字
        old表示旧值
        new表示新值

    展开全文
  • 实际很SQL数据库被诟病性能问题大多是源于程序员不合理设计,一个好设计可以使sql类数据库提高几倍性能。 1.细节优化 字段尽量设置为not null 。 规范字段大小,越小越好。 表名规范前缀。 一个表...

    前言

    在一个项目中,技术的统一性是最重要的,数据库的设计则是重点中的重点。NoSQL 是目前最流行的数据库,但是其实用性和功能性远不如sql数据库。

    实际很多SQL数据库被诟病的性能问题大多是源于程序员的不合理设计,一个好的设计可以使sql类数据库提高几倍的性能。

    1.细节的优化

    字段尽量设置为not null 。

    规范字段大小,越小越好。

    表名规范前缀。

    一个表尽量储存一个对象。

    char永远比varchar更高效。

    timestamp 比datetime小一倍。

    避免字串ID。

    单条查询最后用limit 1。

    不用mysql内置函数,因为不会建立查询缓存。

    使用ip而不是域名作为数据库的路径,避免dns解析。

    2.使用sql内置功能

    例如trigger,procedure,event...等等,可以有效减少后端代码的运用,但是不适合处理高触发的项目。

    3.选择适合的存储引擎

    最常见的就是InnoDB 与 MyISAM. 两者区别请自行百度。

    4.将数据保存至内存中

    从内存中读取数据,最大限度减少磁盘的操作,相关内容会在后面详细解释。

    5.提高磁盘读写速度

    6.充分使用索引 INDEX

    mysql> DROP INDEX index_name ON tab;  //添加index
    mysql> ALTER TABLE tab DROP INDEX index_name ; //删除index
    

    7.使用内存磁盘  

    现在基础设施都过硬,所以可以将sql 目录迁移到内存磁盘上。

    8.读写分离设计

    随着系统变得越来越庞大,特别是当它们拥有很差的SQL时,一台数据库服务器通常不足以处理负载。但是多个数据库意味着重复,除非你对数据进行了分离。更一般地,这意味着建立主/从副本系统,其中程序会对主库编写所有的Update、Insert和Delete变更语句,而所有Select的数据都读取自从数据库(或者多个从数据库)。

    尽管概念上很简单,但是想要合理、精确地实现并不容易,这可能需要大量的代码工作。因此,即便在开始时使用同一台数据库服务器,也要尽早计划在php中使用分离的DB连接来进行读写操作。如果正确地完成该项工作,那么系统就可以扩展到2台、3台甚至12台服务器,并具备高可用性和稳定性。

    9.使用memcache或者redis

     之前的博客有相关的介绍。

    10.SQL数据库分散式布局

    将数据库分散到多个服务器上,分担数据库工作压力。

     

    转载于:https://www.cnblogs.com/peiyu1988/p/6703416.html

    展开全文
  • 数据库索引和分类

    2020-12-14 16:19:04
    B+树中间元素不储存数据,只储存索引,数据存储在B+树叶子节点处,一个节点可以存放个数据,查找一个节点时候可以个元素,大大提升查找效率,这就是为什么数据库索引用就是B+树,因为索引很,不可能...
  • 1.7 数据库设计优化

    2018-06-01 16:54:28
    如果严格遵循三范式,会导致在查询时经常需要连接许多表,查询效率降低,可以结合业务要求,适当做冗余。2.适度建立索引。索引加快某些字段的查询效率,但是更新操作速度会降低,会占用储存空间。索引建立...
    如果严格遵循三大范式,会导致在查询时经常需要连接许多表,查询效率降低,可以结合业务要求,适当的做冗余。
    2.适度的建立索引。
    索引加快某些字段的查询效率,但是更新操作速度会降低,会占用储存空间。
    索引建立的规则:
    a.索引的字段必须是经常用来做查询条件的字段
    b.若索引是多个字段组合的情况,要把经常作为查询条件的字段作为第一个。否则当通过单个字段查询时,数据库不会通过索引查询。
    c.索引的字段必须有足够的区分度,用一个经常相同的字段做索引,效率就会很低。
    3.对表进行水平划分
    如每年都会有大量数据产生,则可以按年份建立多张表。
    4.对表进行垂直划分
    若表中某些字段很长,占用空间较大,检索表的时候在这里进行大量I/0操作,则可以将该字段独立出一张表与原表建立1对1关系。
    5.选择适当的字段类型,如尽量使用VARCHAR而不是CHAR。
    6.文件图片等大文件使用硬盘存储,数据库中只储存文件路径。
    7.外键要表示清楚,实际工作中很少建立外键。
    8.集中批量操作优于频繁读写操作。
    9.选择合适的引擎。
    展开全文
  • MySQL数据库索引

    2017-07-23 20:48:01
    对关系型数据表中某些字段建索引可以提高查询速度(当然,不同字段是否selective会导致这些字段建立索引对查询速度提升幅度不同,而且索引也并非越越好,因为写入或删除时需要更新索引信息)。...
  • MySQL用户管理mysql授权级别·全局级别·数据库级别 (能否删除创建库·表级别·字段级别·储存过程、存储函数级别需要了解三种权限类型·管理类·数据库访问类·字段类如果某用户访问数据库服务器时候频率非常,...
  • 传统数据库mysql,单节点储存,储存容量小,且是行式储存,当我们需要查询某一个字段的所有数据时,需要将全表都加载一遍,而列式数据库则不需要,大大加快了查询速度.且方便执行压缩算法 hbase支持分布式储存,将数据储存在...
  • 登录各个网站时,可以直接双击需要复制的字段,再去登陆框粘贴即可; 简单:没有大多数密码管理软件的繁琐,使用熟练后会非常舒心,数据库也仅一个kdb文件,压缩加密后放到邮箱就完成了备份; 多样:软件是开源的,...
  • 180页面试题,前前后后不间断更新了两年,准备换工作时,总是拿来看看,有比较好面试题,也不间断更新,面试题目录如下: 【基础】面向对象特征有哪些方面 13 抽象 13 继承 13 封装 13 态性 13 【基础】...
  • 大学文献检索资料 DOC

    2009-11-28 10:35:24
    4. 科技文献特点: 形式、文种。数量、增长快。交叉重复。失效快、寿命短。 5.科技文献类型: 1:按文献载体形式划分:印刷型、缩微型、声像型、电子型。 2:按文献出版形式划分:科技图书、 科技期刊...
  • MySQL管理之用户权限

    2017-11-13 03:26:00
    MySQL用户管理 mysql授权级别 ...如果某用户访问数据库服务器时候频率非常,每秒N个查询并发,这样会消耗太服务器资源,也有可能恶意访问数据库服务器,所以为了避免类似情况出现,一般可以在授权同...
  • 2021-01-11

    2021-01-11 11:32:30
    第十七周学习周报: MySQL数据库: 1.MySQL环境安装及配置: ...3.表特性定义了数据库在表中的储存方式. 4.表由列组成,也称为字段,所有表都是由一个或个列组成,每一个列类似Java中属性。 5
  • 可以把免费团体住宿安排应用软件、网上预定工具和报名数据库结合起来使用,把所有住宿安排信息都储存在一个在线数据库中,及时监控住宿安排情况,并可以提前几个月或几个星期根据定房情况变化及时调整住房安排结构...
  • 字符串可以由单引号或双引号引出的字段定义。注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $...
  • 200 0x000000C8 程序代码区段不可以大于或等于 64KB。 201 0x000000C9 操作系统无法执行 %1。 202 0x000000CA 操作系统无法执行 %1。 203 0x000000CB 系统找不到输入环境选项。\r 205 0x000000CD 在指令子...
  • SqliteDev 384

    2014-12-19 11:20:59
     前面提到在某种情况下 SQLite的字段并不是无类型的 即在字段类型为”Integer Primary Key”时 使用 NET操作SQLLITE  先下载ADO NET2 0 Provider for SQLite 下载binaries zip版就可以了 下载完后解压缩 可以在...
  • SQLite(SqliteDev)

    热门讨论 2012-02-02 16:16:24
     前面提到在某种情况下, SQLite的字段并不是无类型的. 即在字段类型为”Integer Primary Key”时. 使用.NET操作SQLLITE  先下载ADO.NET2.0 Provider for SQLite。下载binaries zip版就可以了。下载完后解压缩,...
  • awesome-python 是 vinta 发起维护 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由「开源前哨...
  • 1、增加开关左侧导航的功能,现在你可以有更大的视觉空间来查看数据了 2、修正自由签到用户无法计算请假时间、导致无法请假的BUG 3、修正设置得无公共审批人无法在审批人列表中被看到的BUG 4、修正销假后,在...
  • PLSQLDeveloper下载

    2012-05-04 11:30:27
     PL/SQL主要用于数据库编程,所以其所有的数据类型跟Oracle数据库的字段类型是一一对应的,大体分为数字型、布尔型、字符型和日期型。这里简单介绍两种常用数据类型:number、varchar2。 number 用来存储整数和...
  • 由于部分杀毒软体有针对使用“Scripting.FileSystemObject”操作文件模块,会出现自动删除文件,而导致系统文件严重丢失情况.(甚至压缩包里文件也能被删除,使原本400K压缩包缩水为200K,不能解压,好似没有...
  • 由于部分杀毒软体有针对使用“Scripting.FileSystemObject”操作文件模块,会出现自动删除文件,而导致系统文件严重丢失情况.(甚至压缩包里文件也能被删除,使原本400K压缩包缩水为200K,不能解压,好似没有...
  • 终点小说连载系统1.0

    2010-01-22 14:41:16
    由于部分杀毒软体有针对使用“Scripting.FileSystemObject”操作文件模块,会出现自动删除文件,而导致系统文件严重丢失情况.(甚至压缩包里文件也能被删除,使原本400K压缩包缩水为200K,不能解压,好似没有...
  • Discuz网页斗地主插件

    2013-05-05 20:16:26
    用户数据全部储存在您服务器上,非第三方接入应用 *游戏服务端需要运行在有EXE权限主机上,配置好IP 游戏客户端是flash网页 版,有一个ddz.php,网页上加个链接就可以可以很轻松和论坛整合在一起 官方...
  • sql2005全文检索.doc

    2009-09-09 10:31:46
     a)选择要索引的字段   图6  或者键入如下命令:   CREATE FULLTEXT INDEX ON TableName KEY INDEX PK_IndexName ON DB WITH CHANGE_TRACKING AUTO ALTER FULLTEXT INDEX ON TableName ADD ColumnName  b)...
  • windows蓝屏错误代码

    2010-11-18 22:27:50
    200 0×000000C8 程序代码区段不可以大于或等于 64KB。 201 0×000000C9 操作系统无法执行 %1。 202 0×000000CA 操作系统无法执行 %1。 203 0×000000CB 系统找不到输入环境选项。\r 205 0×000000CD 在指令子...
  • Oracle事例

    2007-08-26 10:35:53
    下面的语句可以按照rollup不同的字段进行小计 select region_code,write_status,count(*) from aicbs.acc_woff_notify group by region_code,rollup(write_status); 21.查询view的创建语句 sql>set long 1000 ...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

数据库可以储存多大的字段