精华内容
下载资源
问答
  • 数据库.txt

    2019-10-19 23:14:32
    <1> 在数据库系统中,SQL语句不区分大小。但字符串常量区分大小。建议命令大写,表名库名小写; <2> SQL语句可单行或多行书写,以";"结尾。关键词不能跨多行或简写。 <3> 用空格和缩进来提高语句的可读性。子句...
  • 批量升级mysql数据库

    2021-05-11 10:28:43
    <p><strong>情况描述:</strong></p> 现在管理着10多台<strong>... 想问问大家这种情况都是怎么升级数据库的?用的什么方法?如果自己软件,那实现的思路大概是什么样呢?</p>
  • ![图片说明](https://img-ask.csdn.net/upload/201610/10/1476061821_776476.png) 现在数据库中有axh这个字段,bbh这个字段里的值目前是空的,想要按图上一一对应添加到数据库中,详细一点最好写语句
  • 批量插入数据库报错问题

    千次阅读 热门讨论 2018-04-25 10:34:31
    小编在本文(批量更新出错)中提到,之前项目中的好好的批量查人语句,...2、批量语句修改第一个方法的缺点想必大家都知道,频繁调用数据库增加数据库的压力。不可取那么出现这个错误呢?在链接数据库的配置...

    小编在本文(批量更新出错)中提到,之前项目中写的好好的批量查人语句,怎么到这个项目中就屡屡报错呢?

    我们在将所有条件相同的数据更新成相同数据的时候可以在条件中使用in语句,但是如果将相同条件的几个语句修改成不同数据呢?有两种方法

    1、在java中for循环调用修改的dao。

    2、写批量语句修改

    第一个方法的缺点想必大家都知道,频繁调用数据库,增加了数据库的压力。不可取

    那么出现这个错误呢?

    在链接数据库的配置中加入

    jdbc:mysql:自己库地址?useUnicode=true&characterEncoding=utf-8&
    zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&remarksReporting=true
    就可以了
    展开全文
  • 数据库操作捉鸡

    2021-01-09 00:50:04
    我也跟着到了监听文件夹下之后就不知道怎么用了,因为文档只了这些,只有参考laravel的文档,如此切换真不入直接用laravel 3.数据库的查询语句可能存在问题,于是向打印一下,番...
  • <1> 在数据库系统中,SQL语句不区分大小。但字符串常量区分大小。建议命令大写,表名库名小写; <2> SQL语句可单行或多行书写,以";"结尾。关键词不能跨多行或简写。 <3> 用空格和缩进来提高语句的可读性。子句...
  • 数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢。 总体思路 1,将表A重命名...
    [-]
    
    1. 总体思路
    2. 得到数据库表的列名
    3. 数据库升级的意义
      1. 定义数据库版本
      2. 如何写升级逻辑
      3. 注意
      4. 如何保证数据不丢失
    4. SQL语句

    请考虑如下情况:

    在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不一样的,比如V1.0的表A有10个column,而在V1.1的表A有12个colum,在升级时,表A增加了两列,此时我们应该怎么做呢。


    总体思路

    1,将表A重命名,改了A_temp。

    2,创建新表A。

    3,将表A_temp的数据插入到表A。

    下面代码列出了更新表的实现,upgradeTables,给定表名,更新的列名,就可以实现数据库表的更新。

    1. /** 
    2.  * Upgrade tables. In this method, the sequence is: 
    3.  * <b> 
    4.  * <p>[1] Rename the specified table as a temporary table. 
    5.  * <p>[2] Create a new table which name is the specified name. 
    6.  * <p>[3] Insert data into the new created table, data from the temporary table. 
    7.  * <p>[4] Drop the temporary table. 
    8.  * </b> 
    9.  * 
    10.  * @param db The database. 
    11.  * @param tableName The table name. 
    12.  * @param columns The columns range, format is "ColA, ColB, ColC, ... ColN"; 
    13.  */  
    14. protected void upgradeTables(SQLiteDatabase db, String tableName, String columns)  
    15. {  
    16.     try  
    17.     {  
    18.         db.beginTransaction();  
    19.   
    20.         // 1, Rename table.  
    21.         String tempTableName = tableName + "_temp";  
    22.         String sql = "ALTER TABLE " + tableName +" RENAME TO " + tempTableName;  
    23.         execSQL(db, sql, null);  
    24.   
    25.         // 2, Create table.  
    26.         onCreateTable(db);  
    27.   
    28.         // 3, Load data  
    29.         sql =   "INSERT INTO " + tableName +  
    30.                 " (" + columns + ") " +  
    31.                 " SELECT " + columns + " FROM " + tempTableName;  
    32.   
    33.         execSQL(db, sql, null);  
    34.   
    35.         // 4, Drop the temporary table.  
    36.         execSQL(db, "DROP TABLE IF EXISTS " + tempTableName, null);  
    37.   
    38.         db.setTransactionSuccessful();  
    39.     }  
    40.     catch (SQLException e)  
    41.     {  
    42.         e.printStackTrace();  
    43.     }  
    44.     catch (Exception e)  
    45.     {  
    46.         e.printStackTrace();  
    47.     }  
    48.     finally  
    49.     {  
    50.         db.endTransaction();  
    51.     }  
    52. }  

    得到数据库表的列名

    我们可以通过SQL表得到表的列名。 这里需要注意的一点,int columnIndex = c.getColumnIndex("name"); 这里根据name去取得index。 

    1. protected String[] getColumnNames(SQLiteDatabase db, String tableName)  
    2. {  
    3.     String[] columnNames = null;  
    4.     Cursor c = null;  
    5.   
    6.     try  
    7.     {  
    8.         c = db.rawQuery("PRAGMA table_info(" + tableName + ")"null);  
    9.         if (null != c)  
    10.         {  
    11.             int columnIndex = c.getColumnIndex("name");  
    12.             if (-1 == columnIndex)  
    13.             {  
    14.                 return null;  
    15.             }  
    16.   
    17.             int index = 0;  
    18.             columnNames = new String[c.getCount()];  
    19.             for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext())  
    20.             {  
    21.                 columnNames[index] = c.getString(columnIndex);  
    22.                 index++;  
    23.             }  
    24.         }  
    25.     }  
    26.     catch (Exception e)  
    27.     {  
    28.         e.printStackTrace();  
    29.     }  
    30.     finally  
    31.     {  
    32.         closeCursor(c);  
    33.     }  
    34.   
    35.     return columnNames;  
    36. }  


    upgradeTables方法应该是在onUpgrade方法中去调用。


    数据库升级的意义

    在应用程序开发的过程中,数据库的升级是一个很重要的组成部分(如果用到了数据库),因为程序可能会有V1.0,V2.0,当用户安装新版本的程序后,必须要保证用户数据不能丢失,对于数据库设计,如果发生变更(如多添加一张表,表的字段增加或减少等),那么我们必须想好数据库的更新策略。

    1,定义数据库版本

    数据库的版本是一个整型值,在创建SQLiteOpenHelper时,会传入该数据库的版本,如果传入的数据库版本号比数据库文件中存储的版本号大的话,那么SQLiteOpenHelper#onUpgrade()方法就会被调用,我们的升级应该在该方法中完成。

    2,如何写升级逻辑

    假如我们开发的程序已经发布了两个版本:V1.0,V1.2,我们正在开发V1.3。每一版的数据库版本号分别是18,19,20。

    对于这种情况,我们应该如何实现升级?

    用户的选择有:                   

    1) V1.0 -> V1.3  DB 18 -> 20                  

    2) V1.1 -> V1.3  DB 19 -> 20      

    3,注意

    数据库的每一个版本所代表的数据库必须是定义好的,比如说V18的数据库,它可能只有两张表TableA和TableB,如果V19要添加一张表TableC,如果V20要修改TableC,那么每一个版本所对应的数据库结构如下:

    V18  --->  TableA, TableB

    V19  --->  TableA, TableB, TableC

    V20  --->  TableA, TableB, TableC (变更)

    onUpgrade()方法的实现如下:

    1.        // Pattern for upgrade blocks:  
    2. //  
    3. //    if (upgradeVersion == [the DATABASE_VERSION you set] - 1){  
    4. //        .. your upgrade logic..  
    5. //        upgradeVersion = [the DATABASE_VERSION you set]  
    6. //    }  
    7.   
    8.   
    9. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)  
    10. {  
    11.     int upgradeVersion  = oldVersion;  
    12.   
    13.     if (18 == upgradeVersion) {  
    14.         // Create table C  
    15.         String sql = "CREATE TABLE ...";  
    16.         db.execSQL(sql);  
    17.         upgradeVersion = 19;  
    18.     }  
    19.   
    20.     if (20 == upgradeVersion) {  
    21.         // Modify table C  
    22.         upgradeVersion = 20;  
    23.     }  
    24.   
    25.     if (upgradeVersion != newVersion) {  
    26.         // Drop tables  
    27.         db.execSQL("DROP TABLE IF EXISTS " + tableName);  
    28.         // Create tables  
    29.         onCreate(db);  
    30.     }  
    31. }  

    从上面的代码可以看到,我们在onUpgrade()方法中,处理了数据库版本从18 -> 20的升级过程,这样做的话,不论用户从18 -> 20,还是从19 -> 20,最终程序的数据库都能升级到V20所对应的数据库结构。  

    4,如何保证数据不丢失

    这是很重要的一部分,假设要更新TableC表,我们建议的做法是:       

    1) 将TableC重命名为TableC_temp

           SQL语句可以这样写:ALERT TABLE TableC RENAME TO TableC_temp;

    2) 创建新的TableC表

    3) 将数据从TableC_temp中插入到TableC表中

           SQL语句可以这样写:INSERT INTO TableC (Col1, Col2, Col3) SELECT (Col1, Col2, Col3) FROM TableC_temp;                

                       
    经过这三步,TableC就完成了更新,同时,也保留了原来表中的数据。  

    注意:

    在onUpgrade()方法中,删除表时,注意使用事务处理,使得修改能立即反应到数据库文件中。       


    SQL语句

    由于Android是使用开源的SQLite3作为其数据库,所以,我们在开发数据库模块时,一定要注意SQLite3支持哪些关键字,函数等,不是所有的关键字,SQLite都是支持的。

    下面列出了一些参考链接:

    SQLite3官方文档:http://sqlite.org/

    W3CSchool网站:http://www.w3school.com.cn/sql/index.asp/

    SQL语句写得好坏能直接影响到数据库的操作。我曾经就遇到过SQL语句影响查询性能,更新3000条记录,用时30移左右,但在对WHERE条件的字段加上索引后,性能提升到3~4秒。

    展开全文
  • 以前一直以为把数据库访问层已经得很完美了,今天无意中一个客户提醒、现在的数据库访问层不只是Using语句,可能是编程习惯的原因一直不怎么用Using这个写法,的确是自己做得不好,马上针对客户的反馈意见进行了...

     以前一直以为把数据库访问层已经写得很完美了,今天无意中一个客户提醒、现在的数据库访问层不只是Using语句,可能是编程习惯的原因一直不怎么用Using这个写法,的确是自己做得不好,马上针对客户的反馈意见进行了改进,增加了IDisposable接口的实现。

    20110129003.jpg

    20110129001.jpg

    20110129002.jpg

    //------------------------------------------------------------
    // All Rights Reserved , Copyright (C) 2010 , Jirisoft , Ltd. 
    //------------------------------------------------------------

    using System;
    using System.Data;
    using System.Data.Common;
    using System.IO;
    using System.Text;

    namespace DotNet.DbUtilities
    {
    using DotNet.Utilities;

    ///<summary>
    /// BaseDbHelper
    /// 有关数据库连接的方法。
    ///
    /// 修改纪录
    ///
    ///        2011.01.29 版本:3.1 JiRiGaLa 实现IDisposable接口。
    ///        2010.06.13 版本:3.0 JiRiGaLa 改进为支持静态方法,不用数据库Open、Close的方式,AutoOpenClose开关。
    ///        2010.03.14 版本:2.0 JiRiGaLa 无法彻底释放、并发时出现异常问题解决。
    ///        2009.11.25 版本:1.0 JiRiGaLa 改进ConnectionString。
    ///
    /// 版本:3.1
    ///
    ///<author>
    ///<name>JiRiGaLa</name>
    ///<date>2011.01.29</date>
    ///</author>
    ///</summary>
    publicabstractclass BaseDbHelper : IDisposable // IDbHelper
       {

           代码省略

    publicvoid Dispose()
           {
    this.dbCommand =null;
    this.dbDataAdapter =null;
    this.dbTransaction =null;
    // 关闭数据库连接
    if (this.dbConnection !=null)
               {
    if (this.dbConnection.State != ConnectionState.Closed)
                   {
    this.dbConnection.Close();
                   }
               }
    this.dbConnection =null;
           }
       }
    }


      经过测试,顺利调试成功,又完善了一下,心里舒坦了很多。

    privatevoid TestUsing()
           {
    using (IDbHelper dbHelper =new SqlHelper(BaseSystemInfo.UserCenterDbConnection))
               {
                   dbHelper.ExecuteNonQuery(
    " SELECT GETDATE() ");
               }
           }


      客户多了有一个好处,很多问题都会得到及时的反馈,同时修改一个错误,改进了功能,又有几十几百的客户收益,会很有成就感。




    本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/1200877,如需转载请自行联系原作者

    展开全文
  • mysql创建流水号,以前也一直不知道怎么写,最后我知道了,然后我保存了下来,用的纯sql语句,不需要后台java或者别的语言去生成。直接数据库的sql语句就行了。我设置的积分是1分。要是增加了,就是CSDN增加的,
  • 解决数据库并发问题

    2008-12-14 23:07:11
    数据库表abc已经死了,不能随意的添加字段. [b]问题补充:[/b] 好象不行哦.constraint a primary key(cat_id,section_id,attr_id) 是复合主键盘,不行的.更新的是key_attr_seq 字段. [b]问题补充:[/b] key_attr_seq...
  • 5.6.1 数据库写入器和前协议 155 5.6.2 SCN 156 5.6.3 撤销管理 156 5.7 备份与恢复体系结构 157 5.7.1 用户管理的备份与恢复 157 5.7.2 RMAN 157 5.7.3 Oracle Secure Backup 158 5.7.4 闪回恢复...
  • //这里面有 连接数据库和定时的方法。 ... import java.sql.DriverManager; import java.sql.SQLException; import java.util.Calendar;...我想循环的数据是一个sql 语句而且能插入数据库但是不知道怎么操作
  • 深入浅出MySQL数据库开发、优化与管理维护

    千次下载 热门讨论 2014-01-21 15:48:01
     17.5 数据库名、表名大小问题   17.6 使用外键需要注意的问题   17.7 小结   第18章 SQL优化   18.1 优化SQL语句的一般步骤   18.1.1 通过showstatus命令了解各种SQL的执行频率   18.1.2 ...
  • 一个好用的数据库

    2008-05-14 08:36:06
    为了使用的方便,我自己了一个数据库类CMYODBC,它是用ODBC API的,它支持各种sql语句,支持事务处理。它最好的地方在于,对于查询的记录集实现了动态绑定,这是通过类CODBCSet来实现的。要说明的是,这两个类...
  • 今天在进行数据表结构的修改时,忽然发现居然已经记不得改怎么写sql语句了,这就尴尬了,无奈只能求助谷歌。为了增加记忆,整理一下,加深下印象吧。 一.数据表的增/删 1.创建表 create table 表名 (列名1 数据类型 ...

    今天在进行数据表结构的修改时,忽然发现居然已经记不得改怎么写sql语句了,这就尴尬了,无奈只能求助谷歌。为了增加记忆,整理一下,加深下印象吧。

    一.表的增/删

    1.创建表

    create table 表名 (列名1  数据类型 , 列名2  数据类型 , ...);

    2.删除表(三种方法的比较)

    ①delete  from 表名 删除数据,不释放表空间,不删除表结构

    ②truncate  table  表名 删除数据,释放表空间,不删除表结构

    ③drop  table  表名 删除表结构,释放表空间。


    二.表结构的修改

    1.新增一列

     alter  table  表名  add  (列名1  数据类型); 

    2.列的重命名

    alter  table  表名  rename  当前列名  to  新的列名;

    3.列的修改

    alter  table  表名  modify(列名   数据类型);

    4.删除一列

    alter  table  表名  drop  column   列名;


    ----待续----



    展开全文
  • 单表查询树形结构的SQL语句

    千次阅读 2019-06-22 15:59:25
    今天在做一个项目模块的时候遇到了点问题,数据库设计是单表自身关联,就是增加一个字段保存父级ID实现树状数据结构,开始设计的时候没有考虑要怎么查询,今天做到着一步卡住了,不晓得怎么写SQL语句,当时还在想...
  • 10.1 数据库名、表名大小问题 39 10.2 使用外键需注意的地方 41 第二篇 优化篇 45 第11章 SQL优化 45 11.1 优化SQL的一般步骤 45 11.1.1 通过show status和应用特点了解各种SQL的执行频率 45 11.1.2 定位执行效率...
  • 1.3.5 怎么能让应用运行得更快 42 1.3.6 DBA与开发人员的关系 44 1.4 小结 45 第2章 体系结构概述 46 2.1 定义数据库和实例 47 2.2 SGA和后台进程 52 2.3 连接Oracle 54 2.3.1 专用服务器 54 2.3.2 共享...
  •  本书发行之时,恰逢Oracle 11gR2 发布,新版本的设计已经开始面向数据中心,增加了更多的技术特性,DBA们的眼光,也不再局限于数据库本身,而应该放眼更大的数据中心,建设这个更大的主题。因此,更希望本书对于...
  • <p><br>...我想问的是,上映的第一部电影是《阿凡达》这个该怎么写,我自己想破脑袋结果也没想出来,= =| 如果能写出来全部SQL语句就更好了。</p>
  • 1.3.5 “怎么能让应用运行得更快?” 41 1.3.6 DBA与开发人员的关系 45 1.4 小结 46 第2章 体系结构概述 47 2.1 定义数据库和实例 48 2.2 SGA和后台进程 53 2.3 连接Oracle 56 2.3.1 专用服务器 56 2.3.2 ...
  • 于是就找其他的问题,打开oracle数据库,发现一个问题,sequence增加了,可是数据确一个也没有增加,而在我的存储过程中捕捉错误也不是那么完善,所有在页面上没有报错。到底是什么原因呢?没有办法,只好打开pl/sql...
  • 1.安装mysql 2.建一个tpcd的数据库。 2.下载TPC-H压缩包 ...dss.ri有错误,增加外键时,外表的字段名丢了,没有。需要自己修改,不然执行会报错。 5.执行上面两个文件,把表结构和主外键关系建好。 ...
  • MySQL作为关系型数据库,数据是通过SQL来拿的,也就是说,SQL语句写的好不好直接关系到你拿数据快不快,可见SQL语法的重要性了! 那么,今天我为大家分享的这份SQL语法学习笔记,能够解决你工作中的大部分问题,...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 144
精华内容 57
关键字:

数据库增加语句怎么写