精华内容
下载资源
问答
  • 主要介绍了django实现更改数据库某个字段以及字段段内数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 指定时间修改数据库某字段的值

    千次阅读 2017-12-06 19:37:51
    1.指定时间: DROP EVENT IF EXISTS `event_at`; DELIMITER ;; CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2017-12-6 19:30:00' ON COMPLETION NOT PRESERVE ENABLE DO ...
    1.指定时间:
    DROP EVENT IF EXISTS `event_at`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2017-12-6 19:30:00' ON COMPLETION NOT PRESERVE ENABLE DO 
    
    BEGIN
        update USER set age=0;
    END
    ;;
    DELIMITER ;
    
    
    2,固定时间:
    
    DROP EVENT IF EXISTS `event_minute`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2017-12-6 19:30:00' ON COMPLETION NOT PRESERVE ENABLE DO 
    
    BEGIN
       sql...
    END
    ;;
    DELIMITER ;

    展开全文
  • 数据库设计——多选状态字段设计

    千次阅读 2018-09-04 00:39:00
    在做公司的算法分析相关项目时,遇到分析状态这个字段存在多种分析算法对应的状态,并且是多选的。这样讲起来有点抽象,由于项目保密问题,也不能细讲。换个通俗的例子来说明这个问题。 例如:某个商家支持多种会员...

    没人对你说「不」的时候 你是长不大的。——《战争与和平》

    1、引言

    在做公司的算法分析相关项目时,遇到分析状态这个字段存在多种分析算法对应的状态,并且是多选的。这样讲起来有点抽象,由于项目保密问题,也不能细讲。换个通俗的例子来说明这个问题。

    例如:某个商家支持多种会员卡打折,如金卡、银卡、其他卡,多选状态。通常的做法是在商家表中建立三个字段,

    gold_card(tinyint类型,0,支持;1,不支持)silver_card(tinyint类型,0,支持;1,不支持)other_card(tinyint类型,0,支持;1,不支持)

    这种用多个字段满足多种状态方案的确满足了项目需求,但是存在两个缺点,
    (1)增加了数据字段冗余和增加存储空间;
    (2)可拓展性差,比如增加一种钻石卡,只能在数据库中,增加一个字段,这样多项目改动是较大的。

    基于此问题,本文探索多选字段的设计。

    2、多选字段设计解决方案

    2.1 字符串表达

    这是我最开始的想法,这种方法就是将多个状态标识字段通过字符串拼接表示成一个字段。如:

    card_status(varchar,1表示金卡;2表示银卡;3表示其他卡;)
    // 字符串拼接表示多选,如1,2表示支持金卡,银卡;1,2,3表示都支持。。。

    这种方法的好处是
    (1)消除冗余状态字段;
    (2)增加可拓展性,增加新的会员卡类别时,不需增加新的字段,增加一种新字符就行。

    但是在开发时,发现查询的时候就特别麻烦,比如:我想查询支持银卡的商家,首先我们遍历整个数据库,然后对状态字符串进行分隔。最后才能查询。

    同时字符串类型的字段在查询效率和存储空间上不如整型字段。

    这种方法解决了设计的字段冗余和可拓展性问题,但是在查询上效率较低。

    在这里,有其他更好的解决方案吗?有,二进制位来表示。

    2.2 “位”表示

    二进制的“位”本来就有表示状态的作用。在这里,采用不同的位表示卡支持状态,例如:

    card_status(int)
    1(0001):表示支持金卡;
    2(0010):表示支持银卡;
    4(0100):表示支持其他卡;
    3(0001+0010=0011):表示支持金卡、银卡;
    5(0001+0100=0101):表示支持金卡、其他卡;
    7(0001+0010+0100=0111):表示支持所有卡;

    如果想拓展增加一种卡,则用8(1000)表示,再增加一种则用16(10000)表示。

    当想查询时,通过位的与运算即可以查询出想要的数据:

    // 查询支持银卡打折的商家信息:  
    select * from seller where card_status & b'0010'  
    或者:  
    Select * from seller where card_status & 2  

    这种方式解决了前面的三个问题:
    (1)无字段冗余,节省存储空间;
    (2)可拓展性强;
    (3)查询效率高。

    展开全文
  • 达梦数据库提供基表修改语句,对基表的结构进行全面的修改,包括修改基表名、列名、增加列、删除列、修改列类型、增加表级约束、删除表级约束、设置列缺省值、设置触发器状态等一系列修改。通用格式:ALTER TABLE ...

    2019独角兽企业重金招聘Python工程师标准>>>

    达梦数据库提供基表修改语句,对基表的结构进行全面的修改,包括修改基表名、列名、增加列、删除列、修改列类型、增加表级约束、删除表级约束、设置列缺省值、设置触发器状态等一系列修改。

    通用格式:ALTER TABLE [[.] .]

    下面通过例子来如何进行操作:根据实际情况对进行相应的变化

    1.修改一列(字段)的数据类型、精度、刻度,设置列上的 DEFAULT,NOT NULL,NULL;

    a. 使用 MODIFY COLUMN 时, 要更改的列不能是:

    (1)聚集索引的列或者引用约束中引用和被引用的列; //(信息量比较大)

    (2)用于 CHECK 约束的列。 //(信息量比较大)

    b. 使用 MODIFY COLUMN 子句不能在列上增加 check 约束,能修改的约束只有列上的NULL, NOT NULL 约束; 如果某列现有的值均非空,则允许添加 NOT NULL; 属于聚集索引包含的列不能被修改; 自增列不允许被修改。

    c. 使用 MODIFY COLUMN 修改可更改列的数据类型时,若该表中无元组(表中的一行称为元组,无元组即每行都没有数据),则可任意修改

    其数据类型、长度、精度或量度;若表中有元组,则系统会尝试修改其数据类型、长度、精度或量度,如果修改不成功,则会报错返回。

    特殊说明: 无论表中有、无元组,多媒体数据类型和非多媒体数据类型都不能相互转换。 d.修改有默认值的列的数据类型时, 原数据类型与新数据类型必须是可以转换的,否则即使数据类型修改成功,但在进行插入等其他操作时, 仍会出现数据类型转换错误。

    举例说明:

    例1 产品的评论表中COMMENTS、 PRODUCT_REVIEWID、 PRODUCTID、 RATING几列都不允许修改,分别因为: COMMENTS为多媒体数据类型; PRODUCT_REVIEWID上定义有关键字,属于用于索引的列; PRODUCTID用于引用约束(包括引用列和被引用列); RATING用于CHECK约束。另外,关联有缺省值的列也不能修改。而其他列都允许修改。假定当前数据库为BOOKSHOP,用户为SYSDBA,如将评论人姓名的数据类型改为varchar(8),并指定该列为NOTNULL,且缺省值为'刘青':

    ALTER TABLE PRODUCTION.PRODUCT_REVIEW MODIFY NAME varchar(8) DEFAULT '刘青' NOTNULL;

    此语句只有在表中无元组的情况下才能成功。

    2. 增加一列(字段)及该列(字段)上的列级约束;

    a.使用 ADD COLUMN 时,新增列名之间、新增列名与该基表中的其它列名之间均不能重复。若新增列跟有缺省值,则已存在的行的新增列值是其缺省值。添加新列对于任何涉及表的视图定义或约束定义没有作用。例如: 如果用“*”为一个表创建一个视图,那么后加入的新列不会自动地加入视图中,只能重新创建此视图。

    b.使用 ADD COLUMN 时,还有以下限制条件:

    (1)列定义中如果带有列约束,只能是对该新增列的约束;列级约束可以带有约束名,系统中同一模式下的约束名不得重复,如果不带约束名,系统自动为此约束命名;

    (2)如果表上没有元组,列可以指定为 NOT NULL;如果表中有元组,对于已有列可以指定同时有 DEFAULT 和 NOT NULL,新增列不能指定 NOT NULL(因为如果指定为not null那么之前存在的数据根本就没有这一列的数据,你还让它不能为空,是何居心?);

    (3)该列可指定为 CHECK;

    (4)该列可指定为 FOREIGN KEY;

    (5) 允许向空数据的表中,添加自增列。

    举例说明:

    例2 具有DBA权限的用户需要对EMPLOYEE_ADDRESS表增加一列,列名为ID(序号),数据类型为INT,值小于10000。

    ALTER TABLE RESOURCES.EMPLOYEE_ADDRESS ADD ID INT PRIMARY KEY CHECK (ID <10000);

    如果该表上没有元组,且没有PRIMARY KEY,则可以将新增列指定为 PRIMARY KEY。表上没有元组时也可以将新增列指定为UNIQUE,但同一列上不能同时指定PRIMARY KEY和UNIQUE两种约束。

    例3 具有DBA权限的用户需要对ADDRESS表增加一列, 列名为PERSONID,数据类型为INT,定义该列为NOT NULL,并引用PERSON的PERSONID。

    ALTER TABLE PERSON.ADDRESS ADD PERSONID INT NOT NULL REFERENCES PERSON. PERSON(PERSONID);

    如果表上没有元组,新增列可以指定为 NOT NULL;如果表上有元组且都不为空,该列可以指定同时有 DEFAULT 和 NOT NULL,不能单独指定为 NOT NULL

    3. 删除一列(字段);

    用 DROP COLUMN 子句删除一列有两种方式: RESTRICT 和 CASCADE。 RESTRICT 方式为缺省选项,确保只有不被其他对象引用的列才被删除。无论哪种方式,表中的唯一列不能被删除。 RESTRICT 方式下,下列类型的列不能被删除:被引用列、建有视图的列、有 check 约束的列。删除列的同时将删除该列上的约束。 CASCADE 方式下,将删除这一列上的引用信息和被引用信息、引用该列的视图、索引和约束;系统允许直接删除 PK 列(我猜pk列指的应该是主键列)。但被删除列为 CLUSTER PRIMARY KEY 类型时除外,此时不允许删除。(蓝色字没看懂)。

    例 4 具有 DBA 权限的用户需要删除 PRODUCT 表的 PRODUCT_SUBCATEGORYID 一列。

    ALTER TABLE PRODUCTION.PRODUCT DROP PRODUCT_SUBCATEGORYID CASCADE;

    删除PRODUCT_SUBCATEGORYID这一列必须采用CASCADE方式,因为该列引用了PRODUCT_SUBCATEGORY表的PRODUCT_SUBCATEGORYID。

    4 . 表名或列表的重命名

    举例说明:具有DBA权限的用户需要将表MY_STUDENT的SEX字段改为GENDER

    ALTER TABLE DMHR.MY_STUDENT ALTER SEX RENAME TO GENDER;

    /前4个是操作表的字段的,后几个是操作关于这个表的属性的*/

    5. 增加表上的约束;

    ADD CONSTRAINT 子句用于添加表级约束。表级约束包括:主键约束(PRIMARY KEY),唯一性约束(UNIQUE),引用约束(REFERENCES),检查约束(CHECK)。添加表级约束时可以带有约束名,系统中同一模式下的约束名不得重复,如果不带约束名,系统自动为此约束命名。用 ADD CONSTRAINT 子句添加约束时, 对于该基表上现有的全部元组要进行约束违规验证:

    (1)添加一个主键约束时,要求将成为关键字的字段上无重复值且值非空,并且表上没有定义主关键字;

    (2)添加一个 UNIQUE 约束时,要求将成为唯一性约束的字段上不存在重复值,但允许有空值;

    (3)添加一个 REFERENCES 约束时,要求将成为引用约束的字段上的值满足该引用约束。

    (4)添加一个 CHECK 约束或外键时,要求该基表中全部的元组满足该约束。

    例5 具有DBA权限的用户需要在PRODUCT表上增加UNIQUE约束, UNIQUE字段为NAME。

    ALTER TABLE PRODUCTION.PRODUCT ADD CONSTRAINT CONS_PRODUCTNAME UNIQUE(NAME);

    用ADD CONSTRAINT子句添加约束时, 对于该基表上现有的全部元组要进行约束违规验证。

    在这里,分为三种情况:

    (1)如果表商场登记里没有元组,则上述语句一定执行成功;

    (2)如果表商场登记里有元组,并且欲成为唯一性约束的字段商场名上不存在重复值,则

    上述语句执行成功;

    (3)如果表商场登记里有元组,并且欲成为唯一性约束的字段商场名上存在重复值,则上

    述语句执行不成功,系统报错“无法建立唯一性索引”。

    如果语句执行成功,用户通过查询

    SELECT TABLEDEF('BOOKSHOP', 'PRODUCTION', 'PRODUCT');

    可以看到,修改后的商场登记的表结构显示为:

    CREATE TABLE "PRODUCT" AT "BOOKSHOP"

    (

    "PRODUCTID" INTEGER IDENTITY(1,1) NOT NULL,

    "NAME" VARCHAR(50) NOT NULL,

    "AUTHOR" VARCHAR(25) NOT NULL,

    "PUBLISHER" VARCHAR(50) NOT NULL,

    "PUBLISHTIME" DATE NOT NULL,

    "PRODUCT_SUBCATEGORYID" INTEGER NOT NULL,

    "PRODUCTNO" VARCHAR(25) NOT NULL,

    "SATETYSTOCKLEVEL" SMALLINT NOT NULL,

    "ORIGINALPRICE" DEC(19,4) NOT NULL,

    "NOWPRICE" DEC(19,4) NOT NULL,

    "DISCOUNT" DEC(2,1) NOT NULL,

    "DESCRIPTION" TEXT,

    "PHOTO" IMAGE,

    "TYPE" VARCHAR(5),

    "PAPERTOTAL" INTEGER,

    "WORDTOTAL" INTEGER,

    "SELLSTARTTIME" DATE NOT NULL,

    "SELLENDTIME" DATE,

    PRIMARY KEY("PRODUCTID"),

    UNIQUE("PRODUCTNO"),

    CONSTRAINT "CONS_PRODUCTNAME" UNIQUE("NAME"),

    FOREIGN KEY("PRODUCT_SUBCATEGORYID")

    REFERENCES"PRODUCT_SUBCATEGORY"("PRODUCT_SUBCATEGORYID"))

    可以看到CONS_PRODUCTNAME就是UNIQUE约束名。

    6. 删除表上的约束;

    DROP CONSTRAINT 子句用于删除表级约束,表级约束包括:主键约束(PRIMARY KEY)、

    唯一性约束(UNIQUE)、引用约束(REFERENCES)、检查约束(CHECK)。用 DROP CONSTRAINT

    子句删除一约束时, 同样有 RESTRICT 和 CASCADE 两种方式。 当删除主键或唯一性约束时,

    系统自动创建的索引也将一起删除。 如果打算删除一个主键约束或一个唯一性约束而它有外部约

    束,除非指定 CASCADE 选项,否则将不允许删除。也就是说,指定 CASCADE 时,删除的不

    仅仅是用户命名的约束,还有任何引用它的外部约束。

    例6 假定当前数据库为BOOKSHOP,库中具有DBA权限的用户需要删除PRODUCT表上的NAME的UNIQUE约束。当前的PRODUCT表结构请参见例5。删除表约束,首先需要得到该约束对应的约束名,用户可以查询系统表 SYSCONSTRAINTS,如下所示:

    SELECT NAME FROM SYSCONSTRAINTS WHERE TABLEID =(SELECT ID FROM SYSTABLES WHERE NAME = 'PRODUCT' AND SCHID=( select SCHID from sysschemas where name='PRODUCTION'));

    该系统表显示商场登记表上的所有PRIMARY KEY, UNIQUE, CHECK约束。查询得到NAME上UNIQUE约束对应的约束名,这里为CONS_PRODUCTNAME。然后,可采用以下的语句删除指定约束名的约束:

    ALTER TABLE PRODUCTION.PRODUCT DROP CONSTRAINT CONS_PRODUCTNAME;

    语句执行成功。

    展开全文
  • 需求:一张表中,新增时有时间,状态(初始为0)字段,要求到该时间时,就将该条数据的状态设置为1思路:做正常的增改,直接将这两个字段存入至数据库,然后再公共类中写监听,每2分钟将数据库中小于系统时间的字段...

    需求:

    某一张表中,新增时有时间,状态(初始为0)字段,要求到该时间时,就将该条数据的状态设置为1

    思路:

    做正常的增改,直接将这两个字段存入至数据库,然后再公共类中写监听,每2分钟将数据库中小于系统时间的字段设置为1

    代码:

    监听类:

    public class SystemListener implements ServletContextListener {

    private Timer timer = null;

    public void contextDestroyed(ServletContextEvent arg0) {

    if (timer != null) {

    timer.cancel();

    }

    }

    public void contextInitialized(ServletContextEvent arg0) {

    if (timer == null) {

    System.out.println("审核监听开启...");

    timer = new Timer();

    Calendar calendar = Calendar.getInstance();

    calendar.set(Calendar.HOUR_OF_DAY, 23);

    calendar.set(Calendar.MINUTE, 90);

    calendar.set(Calendar.SECOND, 0);

    //服务启动后1分钟后执行1次,之后2分钟执行一次

    timer.schedule(new SynJzbmsj(), 1000*60, 2*60*1000);

    }

    }

    }

    修改状态类:

    public class SynJzbmsj extends TimerTask{

    private Logger log = Logger.getLogger(SynJzbmsj.class);

    @Override

    public void run() {

    try{

    log.info("修改截至报名时间的状态");

    long time_s = System.currentTimeMillis();

    syn();

    long time_e = System.currentTimeMillis();

    log.info("修改截至报名时间的状态,耗时(ms):"+(time_e-time_s));

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    private void syn(){

    try{

    //修改学位项目中截至报名时间的状态

    String sql = "update WEB_XWXM set sjzt = '0' where JZBMSJ <= sysdate";

    DBManagerUtil db = new DBManagerUtil();

    db.execute(sql);

    }catch(Exception e){

    log.error("修改截至报名时间的状态时发生错误"+e.toString(), e);

    e.printStackTrace();

    }

    }

    }

    web.xml文件中配置监听器

    yansoft.common.SystemListener

    自此大功告成!

    展开全文
  • mysql数据库用一个字段表示多个状态

    千次阅读 2019-11-23 12:13:04
    在实际的开发中,建数据库表的有可能会因为最初的表设计不能满足所用,为了标记某种状态需要重新增加字段,但是数据库中如果有几百万条真实的数据,往往改变表结构是很危险的操作 有没有办法用一个字段表示多个状态...
  • 数据库字段设计之流程与状态

    千次阅读 2016-12-14 22:22:13
    Status表示业务所处阶段的状态,而流程中的每个步骤通常表示某个动作,两者之间还是有一些差异的,差异来自于观察角度的不同,开发人员看的是流程,而用户看到是状态,下面我以审批流程为例进行解释。
  • 看文档发现一行代码就能...更改staff人员状态以及在username字段后加上_lizhi,成为username_lizhi的状态 Staff.objects.filter(id=get_id).update(action_flag=0,username=Concat(F('username'), Value("_lizhi"...
  • 常用的数据库字段类型及大小

    万次阅读 多人点赞 2018-08-28 08:30:15
    Oracle/MSSQL/Mysql 常用数据库字段类型及大小     ORACLE的数据类型  常用的数据库字段类型如下:  字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes `  VARCHAR2 可...
  • 常用数据库字段类型及大小

    万次阅读 多人点赞 2017-09-10 21:27:07
    Oracle/MSSQL/Mysql 常用数据库字段类型及大小     ORACLE的数据类型  常用的数据库字段类型如下:  字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes `  VARCHAR2 ...
  • 数据库某列数据相乘

    千次阅读 2019-11-18 09:32:37
    Oracle、MySQL等数据库中只有sum、max、min等函数用于做列数据聚合,而没有办法直接计算列数据的乘积,所以需要另想办法。 根据数学对数的加法原理,可对该列中所有数据取对数,后sum再做指数运算,即可得出所需...
  • mysql批量更新数据库一个字段

    千次阅读 2016-10-18 15:13:19
    一个table表,其中的Num字段要全部除以100,批量修改的语句为update table set num = replace(num,num,num/100)第一个Num表示 num字段 第二个num表示这个字段的原始值, 第三个表示要修改成什么值
  • Mysql根据数据库的时间字段到点更新另外一个状态字段值。
  • 真的执行删除(这里是逻辑删除,只改状态字段)操作 this .update("xxxx.updateRepeatedData" , map); } } } }     Mapper文件: <!-- 获取重复记录字段信息列表 去重条件:表中的 P_ID、...
  • 1、SELECT * from information_schema.INNODB_TRX 查看当前占用事务,根据id查找下面查询对应的结果 SHOW PROCESSLIST; 查看id ,找到对应的用户,杀死线程或者联系对方进行释放 ...
  • 咋一看没问题,实际上处理后,这someone字段就不可能包含‘2’了,看执行顺序嘛,如何解决呢?像‘冒泡排序’思想一样,为其弄一个临时对象用于存储转换,这儿临时的就用A和B替代。如下: update tablename tn ...
  • 一、传统用户状态设置传统的数据库表中,涉及到状态字段时,通常都会第一反应就是将其设置为0和1来表示。比如需求是,设计一张表来检查用户状态(绑定邮箱,绑定手机,实名认证,是否已经开通VIP),我以前会这样...
  • Oracle数据库状态查询

    千次阅读 2021-05-07 06:27:29
    1状态查询启动状态SQL语句结果nomountselect status fromv$instance;STARTEDselect open_mode fromv$database;ERROR at line 1:ORA-01507: database notmountedmountselect status fromv$instance;MOUNTEDselect ...
  • 举例:user表有id,name,age,status 4个字段 $model = M('User'); $model->field('*')->select();//SELECT * FROM user $model->field(true)->select();//SELECT id,name,age,status FROM user $model-...
  • 数据库字段设置为<非空><默认值>

    千次阅读 2019-10-09 02:12:27
    因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由MySQL按我们事先预想的方式处理,例如一些默认正常状态码、用户插入数据时候尚未设置的文本字段,诸如此类。 假设student表里有一个字段score被设置为&...
  • 数据库字段命名及设计规范

    千次阅读 2015-03-17 09:26:30
    转至元数据起始 ...数据的标准化有助于消除数据库中的数据冗余。标准化有好几种形式,但 ...简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的属性,当
  • MYSQL数据库字段命名及设计规范

    万次阅读 2018-01-12 09:12:01
    1. 设计原则 ...简单来说,遵守3NF标准的数据库的表设计原则是:“OneFactinOnePlace”即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。它具有以下
  • 有时候我们想通过一个值知道这个值来自数据库的哪个表以及哪个字段,通过一个存储过程实现的。只需要传入一个想要查找的值,即可查询出这个值所在的表和字段名。前提是要将这个存储过程放在所查询的数据库。CREATE ...
  • 数据库索引的理解及适合建立索引的字段

    万次阅读 多人点赞 2018-03-06 13:17:43
    转载深入浅出数据库索引原理,哪些字段适合建立索引 问题 为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引? 这些问题...
  • //需要更新本地数据库中附件的二进制流和下载状态 assert bytes != null; String whereSql = " FJLJ = '" + url + "' and ARG4 isnull"; ContentValues cv = new ContentValues(); cv.put("ARG4", bytes); cv....
  • // 将字段名和字段值, 存入map集合中 map.put(columnName, object); } // 将map集合添加到List集合中 list.add(map); } // 释放资源 JDBCUtils.close(resultSet, statement, connection); return list; } 例图 原文...
  •  分析:从前端输入时间段,最终将由前端的后台程序接收该时间段的开始时间和结束时间,而数据库存有张表用来存储设备运行状态,则该任务的本质就是利用该时间段的开始时间和结束时间对数据库中设备状态表进行约束,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,191
精华内容 57,676
关键字:

数据库某字段状态