精华内容
下载资源
问答
  • Android 数据库开发实战(简单易懂+DEMO)
    万次阅读
    2020-08-26 16:19:56

    Android数据库开发实战


    我们在Android开发中,如果需要本地持久化数据,可以采用SP、数据库、本地文件等方式。SP适合小数据的存取、数据库查询修改方面非常适合、文件存储适合大数据文件的操作。

    那么如何在Android中使用数据库呢?

    SQLiteOpenHelper类介绍

    SQLiteOpenHelper类可以帮助我们很方便的操作数据库。

    SQLiteOpenHelper类包含一组用于管理数据库的实用API。当使用此类获取对数据库的引用时,系统仅在需要时才执行可能需要长时间运行的数据库创建和更新操作,而不是在应用启动期间执行。

    可以调用getWritableDatabase()或getReadableDatabase() 方法获取数据库对象。

    注意:由于这些操作可能会长时间运行,因此请务必在后台线程中调用 getWritableDatabase() 或 getReadableDatabase()。

    创建SQLiteOpenHelper类

    我们要使用数据,首先需要新建一个SQLiteOpenHelper类的子类,并且重写onCreate()和onUpgrade()回调方法,可能还需要实现onDowngrade()或onOpen()方法,但这些方法并非必需。

    代码示例:

    public class SQLiteDbHelp extends SQLiteOpenHelper {
        private static final String SQL_CREATE_ENTRIES =
                "CREATE TABLE " + BookEntry.TABLE_NAME + " (" +
                        BookEntry._ID + " INTEGER PRIMARY KEY," +
                        BookEntry.COLUMN_NAME_TITLE + " TEXT," +
                        BookEntry.COLUMN_NAME_PRICE + " INTEGER)";
    
        private static final String SQL_DELETE_ENTRIES =
                "DROP TABLE IF EXISTS " + BookEntry.TABLE_NAME;
    
        public static final String DATABASE_NAME = "budaye_db.db"; //数据库名称
        public static final int DATABASE_VERSION = 1;
    
        public SQLiteDbHelp(Context context){
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
        /**
         * 数据库创建
         * @param db
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(SQL_CREATE_ENTRIES);
        }
    
        /**
         * 数据库版本升级
         * @param db
         * @param oldVersion
         * @param newVersion
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(SQL_DELETE_ENTRIES);
            onCreate(db);
        }
    
        /**
         * 数据库版本降级
         * @param db
         * @param oldVersion
         * @param newVersion
         */
        public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            onUpgrade(db, oldVersion, newVersion);
        }
    
    }
    

    BookEntry类定义了表名称及相关字段。

    public class BookEntry implements BaseColumns {
        public static final String TABLE_NAME = "book";
        public static final String COLUMN_NAME_TITLE = "name";
        public static final String COLUMN_NAME_PRICE = "price";
    }
    

    实例化SQLiteOpenHelper的子类

    例如,我们在主Activity中,创建它:

        private SQLiteDbHelp dbHelper;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ……
            dbHelper = new SQLiteDbHelp(this.getApplicationContext());
        }
    

    新建SQLiteDbHelp对象之后,我们就可以使用数据库了。

    在数据库中插入数据

        private long insertDB(){
            SQLiteDatabase db = dbHelper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put(BookEntry.COLUMN_NAME_TITLE, "Android");
            values.put(BookEntry.COLUMN_NAME_PRICE, 10);
            long newRowId = db.insert(BookEntry.TABLE_NAME, null, values);
    
            return newRowId;
        }
    
    1. insert() 的第一个参数就只是表名。
    2. 第二个参数将指示框架在 ContentValues 为空(即您没有 put 任何值)时应执行哪些操作。如果您指定列名称,框架会插入一行,并将该列的值设置为 null。如果您指定 null(如此代码示例所示),框架在没有值时不会插入行。
    3. insert() 方法会返回新创建行的 ID;如果在插入数据时出错,会返回 -1。如果您的数据与数据库中已有的数据之间存在冲突,就会出现这种情况。

    从数据库中读取信息

        private void readDB(){
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            String[] projection = {
                    BookEntry._ID,
                    BookEntry.COLUMN_NAME_TITLE,
                    BookEntry.COLUMN_NAME_PRICE
            };
            String selection = BookEntry.COLUMN_NAME_TITLE + " = ?";
            String[] selectionArgs = { "My Title" };
    
            String sortOrder =
                    BookEntry.COLUMN_NAME_PRICE + " DESC";
    
            Cursor cursor = db.query(
                    BookEntry.TABLE_NAME,   // The table to query
                    projection,             // The array of columns to return (pass null to get all)
                    selection,              // The columns for the WHERE clause
                    selectionArgs,          // The values for the WHERE clause
                    null,                   // don't group the rows
                    null,                   // don't filter by row groups
                    sortOrder               // The sort order
            );
    
            List itemIds = new ArrayList<>();
            while(cursor.moveToNext()) {
                long itemId = cursor.getLong(
                        cursor.getColumnIndexOrThrow(BookEntry._ID));
                itemIds.add(itemId);
            }
            cursor.close();
        }
    

    第三个参数和第四个参数(selection 和 selectionArgs)会合并起来创建一个 WHERE 子句。由于这两个参数是与选择查询分开提供的,因此它们在合并之前会进行转义。这样一来,您的选择语句就不受 SQL 注入的影响。

    从数据库中删除信息

    如需从表中删除行,您需要提供选择条件,以标识 delete() 方法的目标行。该机制与 query() 方法的目标选择参数的工作方式相同。它将选择规范划分为选择子句和选择参数。子句定义要查看的列,并允许您合并列测试。参数是要测试的值,这些值绑定到子句中。由于结果的处理方式与常规 SQL 语句的处理方式不同,因此不受 SQL 注入的影响。

        private void deleteDB(){
            SQLiteDatabase db = dbHelper.getReadableDatabase();
            // Define 'where' part of query.
            String selection = BookEntry.COLUMN_NAME_TITLE + " LIKE ?";
            // Specify arguments in placeholder order.
            String[] selectionArgs = { "MyTitle" };
            // Issue SQL statement.
            int deletedRows = db.delete(BookEntry.TABLE_NAME, selection, selectionArgs);
        }
    

    delete() 方法的返回值表示从数据库中删除的行数。

    更新数据库中的信息

        private void updateDB(){
            SQLiteDatabase db = dbHelper.getWritableDatabase();
    
            // New value for one column
            String title = "MyNewTitle";
            ContentValues values = new ContentValues();
            values.put(BookEntry.COLUMN_NAME_TITLE, title);
    
            // Which row to update, based on the title
            String selection = BookEntry.COLUMN_NAME_TITLE + " LIKE ?";
            String[] selectionArgs = { "MyOldTitle" };
    
            int count = db.update(
                    BookEntry.TABLE_NAME,
                    values,
                    selection,
                    selectionArgs);
        }
    

    update() 方法的返回值是数据库中受影响的行数。

    更多相关内容
  • 深入浅出MySQL数据库开发、优化与管理维护

    千次下载 热门讨论 2014-01-21 15:48:01
     15.2 应用开发中可以采取的应对措施   15.2.1 PrepareStatementBind-variable   15.2.2 使用应用程序提供的转换函数   15.2.3 自己定义函数进行校验   15.3 小结   第16章 SQLMode及相关问题   ...
  • VB6.0 数据库开发完整实例

    热门讨论 2010-07-20 14:36:59
    一个非常棒的VB数据库开发学习的完整实例,对初学VB数据库的新手来说是如获至宝。运行程序前,先把Data下面的数据库放到位于SQL Server安装目录\MSSQL.1\MSSQL\Data下,然后在SQL Server里面的“数据库”上右键选中...
  • 在数据库领域,其表现也异常突出,它不仅提供了多种数据库开发技术,支持几乎所有的数据库系统,如SQL Server,DB2,Sybase,FoxPro,Access等,还提供了良好的开发环境和丰富的文档支持。 SQL Server 2000是在SQL ...
  • 数据库开发工具——安装教程

    千次阅读 2020-08-06 14:26:37
    Navicat Premium 15是一套数据库开发工具,可以同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。它与 广大云数据库兼容,让你可以快速轻松地创建、管理和维护数据库。 二、...

    一、软件简介

    Navicat Premium 15是一套数据库开发工具,可以同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库。它与 广大云数据库兼容,让你可以快速轻松地创建、管理和维护数据库。

    二、下载

    百度网盘下载链接:
    链接:https://pan.baidu.com/s/11M9KcCoNb6wfh3Kto-Vl5A
    提取码:6666

    三、安装

    1.双击 navicat150_premium_cs_x64.exe 文件
    在这里插入图片描述
    2.点击下一步
    在这里插入图片描述
    3.同意条款,点击下一步
    在这里插入图片描述
    4.选择安装路径
    在这里插入图片描述
    5.快捷方式的创建位置,默认即可
    在这里插入图片描述
    6.点击下一步
    在这里插入图片描述
    7.开始安装
    在这里插入图片描述
    8.切记安装完成不要立马运行软件
    在这里插入图片描述

    四、配置

    详情见百度网盘里的word文档

    展开全文
  • 一、数据库 1、数据库,通常是一个戒一组文件,保存了一些符合特定规格的数据,数据库对应的英询单词是DataBase,简称DB;数据库软件称为数据库管理系统...2、无论你开发的是一款PC端的Web应用,还是一款移动端的ap...

    一、数据库
    1、数据库,通常是一个戒一组文件,保存了一些符合特定规格的数据,数据库对应的英询单词是DataBase,简称DB;数据库软件称为数据库管理系统,英文简称DBMS,全称为DataBase Management System,例如:Oracle、MySQL、SQL Server、Sybase、informix、DB2等等。

    2、无论你开发的是一款PC端的Web应用,还是一款移动端的app,都需要一个数据库来存储你的业务数据(包括电商的商品信息、游戏的道具信息、社交的人员信息等等)。可以说,数据库是后端系统最重要的存储组件。作为一名Java程序开发人员,你会发现你所完成的大部分代码逻辑最终都是在不断的与数据库进行交互。

    二、MySQL数据库
    1、MySQL是一个关系型的小型数据库管理系统。
    在 WEB 应用方面是最好的关系数据库管理系统应用软件之一。市场占有率有20%左右。
    它的优点有如下几方面:
    (1)开源软件。
    使用 C语言和 C++语言编写,以及使用了多种编译器进行测试,保证了源代码的可移植性。
    (2)适用性高。
    支持多种操作系统。支持多种存储引擎。能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。并且提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
    (3)为多种编程语言(包括C、C++、Python、Java、PHP等)提供了 API。
    (4)支持多线程,充分利用cpu。
    (5)使用优化了的 SQL语句查询算法,提高查询效率。

    2、补充:
    另外,如果Linux作为操作系统,Apache和 Nginx作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python作为服务器端脚本解释器。由于这四个软件都是免费的,因此使用这种方式不用花一分钱(除开人工成本)就可以建立起一个稳定、免费的网站系统,被业界称为“LAMP“或“LNMP”组合。
    所以也就是为什么很多新创业的公司或者中小型企业会使用mysql。

    三、Oracle数据库
    Oracle Database是甲骨文公司研发的关系型的大型的数据库管理系统。
    它是数据库领域的老大。可以说Oracle数据库管理系统是世界上目前最流行的关系型数据库管理系统,市场占有率达40%。
    原因有如下几个方面:
    (1)系统开放性高。(付费之后)
    Oracle能在所有主流系统平台上运行。支持所有的工业标准。采用完全开放的策略。对开发商全力支持。使客户可以选择最适合的解决方案。
    (2)可伸缩性、并行性高。
    Oracle数据库系统以分布式数据库作为核心,并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。
    (3)安全性高
    Oracle数据库获得最高认证级别的ISO标准认证。
    (4)性能优越
    保持着开放平台下的TPC-D和TPC-C的世界记录。
    (5)适用性高
    多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。
    (6)风险低
    完全向下兼容的数据库系统。得到很广泛的应用。没有任何风险。

    四、MySQL和Oracle的比较
    (1)Oracle支持多任务处理,也就是大并发,大访问量,是联机事务处理过程(OLTP)最好的工具。而MySQL却不能支持过大的访问量。
    (2)Oracle是付费的大型数据库;Mysql是开源的中小型数据库,Oracle市场占有率很高,Mysql比较低。
    (3)两者安装使用的空间差距很大的,Mysql安装完后一百多兆,Oracle却有三千多兆,而且使用的时候Oracle占用特别大的内存空间和其他机器性能。
    (4)Oracle的操作较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同。
    而Mysql使用sql语言进行操作,比较简单。这也就造成一个人工成本问题,使用Oracle的公司,需要对数据库技术人员进行专门的培训,而MySQL却不用。
    (5)给出现在一些知名公司数据库的配置:
    一号店、JD:都是MySQL和Oracle的混合体系,还买了叼炸天的Oracle一体机(一台Oracle Exadata X5有24T内存,576核CPU,价格估计几千万到上亿人民币)
    苏宁易购:是IBM一手打造的技术团队和技术体系,使用的是DB2、MySQL、Oracle的混合体系;
    携程旅行:.NET技术为主,所以是以SQL Server为主、MySQL为辅的混合体系;
    唯品会:也是MySQL和Oracle的混合体系;
    亚马逊:选择的是Oracle+MongoDB。
    fBay:用MySQL+MongoDB

    五、JDBC
    1、概念
    (1)JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
    (2)有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问MySQL数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。

    2、应用程序、JDBC API、数据库驱动及数据库之间的关系:
    这里写图片描述
    3、JDBC访问数据库步骤
    (1)加载JDBC驱动程序(具体要加载哪一个数据库的驱动程序)
    (2)建立数据库连接(驱动程序和数据库之间建立一条路径)
    (3)创建Statement对象(负责发送SQL语句和接受查询结果)
    (4)执行SQL语句(Statement对象的execuQuery()方法)
    (5)处理返回结果
    (6)关闭创建的对象

    六、MySQL-Front
    1、使用mysql数据库的时候,我们尽可能希望就像使用SQL Server一样有一个图形化工具,来方便我们的操作。其实mysql也有它的图形化工具,还有好多种比如MySQL GUI Tools、MySQL-Front等。

    2、mysql-front是为mysql制作的一种图形化界面工具,可以管理和操作数据库,比如建表,修改数据,拖拽方式的数据库和表格,可编辑/可增加/删除的域,可编辑/可插入/删除的记录,可显示的成员,可执行的SQL脚本,提供与外程序接口,保存数据到CSV文件等。

    七、Oracle SQL Developer和SQL Plus
    1、Oracle SQL Developer
    Oracle SQL Developer是Oracle公司出品的一个免费的集成开发环境。是一个免费非开源的用以开发数据库应用程序的图形化工具,使用 SQL Developer 可以浏览数据库对象、运行 SQL 语句和脚本、编辑和调试 PL/SQL 语句。另外还可以创建执行和保存报表。

    2、SQL Plus
    SQL Plus是Oracle自带的数据库管理客户端,可以在这里编辑SQL语句执行,是命令行模式的。
    借助SQL Plus可以查看、修改数据库记录。在SQL Pluss中,可以运行SQL Plus命令与SQL语句。

    3、SQL Plus是Oracle自带的数据库管理客户端,安装Oracle软件时会自动安装上SQL Plus这个开发工具。
    SQL Developer是Oracle公司自己推出的官方的开发工具。不过,我们在安装甲骨文(Oracle)公司的其中一个 数据库软件Oracle 11g时,在安装的过程中,系统也会附带的同时安装上SQL Plus和SQL Developer这两个开发工具。
    二者在Oracle 11g上自带安装:
    这里写图片描述
    如图,Oracle 11g的两种SQL执行环境:
    这里写图片描述
    在学习Oracle数据库知识时,我们又发现SQL Developer比SQL Plus更加人性化,方便。

    八、PL/SQL Developer
    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 PL/SQL 的,但支持Navicat Premium。

    九、Oracle的几个开发工具
    Oracle 数据库并不提供图形界面的开发环境,只是自带了一个类似于 CMD 的 SQL Plus 开发工具,所以需要其他的集成开发软件。 总的来说,Oracle的开发工具为:
    (1)SQL Plus,Oracle软件自带了一个类似于 CMD 的 SQL Plus 开发工具。
    (2)Oracle SQL Developer,SQL Developer是Oracle公司自己推出的官方的免费的开发工具。在数据库软件Oracle 11g中,已经内嵌到数据库的安装程序中去了,相当于Oracle软件自带的开发工具了。
    (3)PL/SQL Developer,是第三方的Oracle客户端开发工具,服务于Oracle,类似的工具还有Toad,SQL Plus,Oracle SQL Developer等等。安装PL/SQL Developer与安装Oracle软件没啥关系,但是如果没有Oracle客户端,安装PL/SQL Developer就没啥意义。
    (4)Toad,Oracle数据库的第三方工具,当今oracle数据库主流工具之一。Toad里面与Oracle数据库的功能,基本上都可以在Oracle自带的SQL Plus里面实现。只是他把很多的命令图形化了,可以让记不住命令的人快速入门,帮助人更加方便的管理数据库。
    总之,一般的开发使用Orale SQL Deveploer就可以了,而且是免费的,后两个是商业软件,需要授权费用。

    十、Oracle SQL Developer和PL/SQL Developer
    1、Oracle SQL Developer:
    (1)SQL Developer目前已经支持Windows,Mac OS X,Linux系统,其具有多平台性(fedora、ubuntu等桌面级linux上唯一可用的图形化开发工具)。
    (2)免费。
    (3)除了可以连接oracle数据库以外,sybase、mysql、mssqlserver、MS Access等数据库也可以访问查看数据。
    (4)同一个界面可以登陆多个数据库,方便在多个数据库之间操作。虽然这不是什么复杂的功能,但是,PL/SQL Developer却做不到。而且,Oracle SQL Developer的插件比较丰富。
    (5)支持自定义快捷键可以实现组合键清空界面、组合键复制代码等快捷操作。
    (6)比较占用内存消耗资源较多,这是缺点也是优点,缺点是相对消耗资源,优点是由于占用较多内存在执行几十、几百条sql的效率上很高,不像PL/SQL Dev还要有一个初始化的动作。
    (7)Oracle SQL Developer,是Oracle官方自己出的工具,11g已经内嵌到数据库的安装里去了,也提供比较好的开发和管理的功能。其中带有的migration tools是此工具的一亮点,可以对异构或者同构的数据库进行数据迁移,在mysql和ms sql上都做个不是很复杂的迁移,还是很方便和实用的。而且该工具最好的一点是 java开发,使用的jdbc的连接方式,所以即使没有安装客户端也可以通过thin的方式连接。

    2、PL/SQL Developer
    (1)PL/SQL Developer只能在Windows上使用。
    (2)PL/SQL Dev是老牌的开发工具,稳定性很高。
    (3)新版本也开始支持其他数据库的连接,但支持的种类还是不够全。
    (4)要同时访问多个数据库的话需要启动多个软件界面。
    (5)不支持自定义快捷键,但是界面上的按键也足够开发者使用了。
    (6)资源占用很少。
    (7)HTML Manual功能可以将从Oracle下载的官方文档直接索引到自己的帮助当中,尤其适合不能上网的环境,即便能上网,在这个里面搜索一些语法、错误号等效率也是很高的。
    (8)report窗口支持直接从用sql当中选取表的字段来做成图表,例如饼、曲线、柱状、雷达图等,可以另存为PDF、图片等。
    (9)支持select * from xxx for update的修改方式,SQL Developer貌似不支持。
    (10)PL/SQL需要安装Oracle的客户端,并且需要配置tnsname。

    3、小结:两种工具大致上功能都是一样的。PL/SQL Developer还是比较主流的,在开发和管理上都比较方便,还支持导入、导出功能。目前使用PL/SQL Developer的Oracle DBA或者开发人员占据了超过60%,而其中绝大部分都在使用破解版。这两个工具在开发和管理上,PL/SQL胜出一筹。但是在迁移功能和跨平台上,SQL Developer又展现出它一大亮点。

    本篇博文的写作非常感谢一些大神的帮助。
    http://blog.sina.com.cn/s/blog_6372cc4801011ypv.html
    https://www.cnblogs.com/xsht/p/5258071.html

    展开全文
  • 精通C#与.NET 4.0数据库开发源码

    热门讨论 2013-03-29 12:17:12
    精通C#与.NET 4.0数据库开发源码 --------------------------------------------- 这是随书配套源码,共 11.3M. --------------------------------------------- 按我名字搜索,也有本书的PDF档下载和其它的C#与...
  • 1、 数据库开发规范

    千次阅读 2018-06-03 18:07:03
    第1章 数据库开发规范的制定

    第1章 数据库开发规范的制定
    数据库设计步骤:
    1、数据结构设计:逻辑设计-》物理设计
    2、实际工作中:逻辑设计+物理设计
    3、物理设计:表名+字段名+字段类型
    数据库设计几个规范:
    数据库命名规范、数据库基本设计规范、数据库索引设计规范、数据库字段设计规范、数据库SQL开发规范、数据库操作行为规范
    数据库命名规范
    1、所有数据库对象名称必须使用小写字母并用下划线分割
    不同的数据库名 DbName dbname
    不同的表名 Table table tabLe
    2、所有数据库对象名称禁止使用MySQL保留关键字
    select id,username,from,age from tb_user from是关键字 ,但是可以用单引号括起来
    3、数据库对象的命名要见名识义,并且最好不要超过32个字符
    例如 用户数据库mc_userdb 用户账号表 user_account
    4、临时库表必须以tmp为前缀并以日期为后缀
    5、备份库、备份表必须以bak为前缀并以日期为前缀
    6、所有存储相同数据的列名和列类型必须一致
    比如两张表中有相同的数据,那么他们列名和列类型必须是一致的
    这里写图片描述
    数据库基本设计规范
    1、所有表必须使用Innodb存储引擎,mysql 5.6后默认存储引擎,支持事务,行级锁,更好的恢复性,高并发下性能更好
    2、数据库和表的字符集统一使用UTF8,避免由于字符集转换产生的乱码
    mysql中utf8字符集汉字占3个字节,ASCII码占用1个字节
    3、所有表和字段都需要添加注释,使用comment从句添加表和列的备注
    4、尽量控制单表数据量的大小,建议控制在500万以内,500万并不是mysql数据库的限制,
    mysql最多可以存储多少万数据?目前没有做限制,这种限制取决于存储设置和文件系统
    可以用历史数据归档,分库分表等手段来控制数据量大小
    5、谨慎使用mysql分区表
    分区表在物理上表现为多个文件没在逻辑上表现为一个表
    谨慎选择分区键,跨分区查询效率可能更低
    建议采用物理分表的方式管理大数据
    6、尽量做到冷热数据分离,减小表的宽度
    mysql限制最多存储4096列,为了是减少磁盘IO,保证热数据的内存缓存命中率,利用更有效的利用缓存,避免读入无用的冷数据
    经常使用的列放在一个表中
    7、禁止在表中建立预留字段
    预留字段的命名很难做到见名识义
    预留字段无法确认存储的数据类型,所以无法选择合适的类型
    对预留字段类型的修改,会对表进行锁定,修改字段类型的成本往往大于增加
    8、禁止在数据库中存储图片、文件等二进制数据
    9、禁止在线上做数据库压力测试
    10、禁止从开发环境测试环境直连生产环境数据库
    索引设计规范
    索引对数据库的查询性能来说非常重要,查询、更新,禁止滥用索引
    1、限制每张表上的索引数量,建议单张表索引不超过5个
    索引并不是越多越好的,索引可以提高效率同样可以降低效率
    索引可以增加查询效率,但同样也会降低插入和更新的效率
    2、禁止给表中的每一列都建立单独的索引
    3、Innodb是按照主键索引的顺序来组织表的
    4、每个Innodb表必须有一个主键
    不使用更新频繁的列作为主键,不使用多列主键
    不使用uuid、MD5、hash,字符串列作为主键
    主键建议使用主键自增
    常见的索引列建议:
    select、update、delete语句的where从句中的列
    包含在order by、group by 、destinct中的字段
    多表join的关联列
    如何选择索引列的顺序:
    联合索引是从做到右的顺序来实现的
    1、区分度最高的列放在联合索引的最左侧
    2、尽量把字段长度小的列放在联合索引的最左侧
    3、使用最频繁的列放到联合索引的左侧
    5、避免建立冗余索引和重复索引
    重复索引:如 primary key(id)、index(id)、unique index(id)
    冗余索引:如 index(a,b,c) index(a,b) index(a)
    6、对于频繁的查询优先使用覆盖索引
    覆盖索引:就是包括了所有查询字段的索引
    优点:避免Innodb表进行索引的二次查找,可以把随机IO变为顺序IO加快查询效率
    7、尽量避免使用外键
    不建议使用外键约束,但一定在表与表之间的关联键上建立索引
    外键可用于保证数据的参照完整性,但建议在业务端实现
    外键会影响父表和子表的写操作从而降低性能
    数据库字段设计规范
    1、优先选择符合存储需要的最小的数据类型
    将字符串转化为数字类型存储
    对于非负数据采用无符号整形进行存储
    signed int -2147483648-2147483648
    unsigned int 0-2147483648
    有符号比无符号多出一倍的存储空间
    varchar(n) n代表字符数,不是字节数,varchar(255)=765个字节
    过大的长度会消耗更多的内存
    2、避免使用text\BLOB数据类型
    建议text\BLOB列分离到单独的扩展表中
    text\BLOB类型只能使用前缀索引
    3、避免使用enum数据类型
    修改enum需要使用alter语句
    enum类型的order by操作效率低,需要额外操作
    禁止使用数值作为enum的枚举值
    4、尽可能把所有列定义为not null
    索引null列需要额外的空间来保存,所以要占用更多的空间
    进行比较和计算时要对null值做特别的处理
    5、禁止字符串存储日期型的数据
    缺点1:无法用日期函数进行计算和比较
    缺点2:用字符串存储日期要占用更多的空间
    使用timestamp或datetime类型存储时间,timestamp存储空间更小
    4、财务的相关金额使用decimal类型
    decimal类型为精准浮点数,在计算时不会丢失精度
    float、double非精准浮点数
    数据库SQL开发规范
    1、建议使用预编译语句进行数据库操作
    好处:只传参数,比传递SQL语句更高效
    相同语句可以一次解析,多次使用,提高处理效率
    2、避免数据类型的隐式转换
    隐式转换会导致索引失效
    3、利用表上已经存在的索引
    这里写图片描述
    4、禁止连接不同的数据库使用不同的账号,禁止垮库查询
    为数据库迁移和分库分表留出余地
    减低业务耦合度
    避免权限过大而产生的安全风险
    5、禁止使用select * 必须用select 字段列表 查询
    消耗更多的CPU和io以及网络带宽资源
    无法使用覆盖索引
    可减少表结构变更带来的影响
    6、禁止使用不含字段列表的insert语句
    如,insert into t values(‘a’,’b’,’c’)
    7、避免使用子查询,可以把子查询优化为join操作
    子查询的结果集无法使用索引
    子查询会产生临时表,如果子查询数据量大则严重影响效率
    消耗过多的CPU和io资源
    8、避免使用join关联太多的表
    每join一个表会多占用一部分内存join_buffer_size
    会产生临时表操作,影响查询效率
    mysql最多关联61个表,建议不超过5个
    9、减少同数据库的交互次数
    10、禁止使用order by rand()进行随机排序
    11、where从句中禁止对列进行函数转换和计算
    对列进行函数转换和计算会导致无法使用索引
    如: where date(createtime)=’20160901’
    优化后:where createtime>=’20160901’
    这里写图片描述
    这里写图片描述

    数据库操作行为规范
    这里写图片描述

    这里写图片描述

    这里写图片描述
    这里写图片描述

    这里写图片描述

    展开全文
  • 如何理解多用户的数据库开发

    万次阅读 2021-03-27 11:57:30
    今天周末,接到朋友电话,咨询一下:“多用户的数据库开发具体是指哪些?” 我听了,有些楞住,没有梳理过什么叫多用户的数据库开发,还是据实而言,工作生活没有接触过这个词语:“多用户的数据库开发”,根据我...
  • 精通C#与.NET 4.0数据库开发 2 OF 2

    热门讨论 2013-02-06 20:23:35
    精通C#与.NET 4.0数据库开发 2 OF 2 --------------------------------------------- PDF文档,共有 2 个分卷文件,请全部下载完才能顺利解压缩 --------------------------------------------- 后续也可按我...
  • 数据库开发工程师 主要职责 深入研究数据库内核相关技术,设计并实现数据库管理系统 深入了解数据库应用的业务需求,主导设计不同数据库架构的应用软件,并持续优化 根据业务需求设计数据库逻辑和物理模型, 开发...
  • 如果搞一个投票来评选数据库中最难以理解的模块,那么非优化器莫属。
  • 精通C#与.NET 4.0数据库开发 1 OF 2

    热门讨论 2013-02-06 20:54:54
    精通C#与.NET 4.0数据库开发 1 OF 2 --------------------------------------------- PDF文档,共有 2 个分卷文件,请全部下载完才能顺利解压缩 --------------------------------------------- 后续也可按我...
  • .NET平台是Microsoft公司推出的一套开发框架和工具,是软件开发领域非常重要的里程碑。...本书适用于使用Visual C#开发Windows应用程序和Web应用程序的技术人员及编程爱好者,同时也是数据库开发人员的优秀参考书。
  • 在大数据处理当中,数据库承担着重要的职责,需要保证大数据存储的稳定性和可用性,因此在大数据开发当中,数据库开发也是非常重要的一环。那么数据库开发是干什么的,数据库开发难不难,今天我们就来具体聊一聊。 ...
  • Visual C++数据库开发经典实例精解.pdf

    千次下载 热门讨论 2012-02-14 14:11:44
    Visual C++数据库开发经典实例精解.pdf
  • SQL Server作为数据库应用开发的利器,被广大的数据库开发者所钟爱,是Web应用程序开发最常用的后台数据库。 本书前3章主要对ASP.NET应用程序的基础知识以及SQL Server数据库应用高级技术分别进行说明和解析;第4章...
  • 达梦数据库 开发版试用时间限制

    千次阅读 2019-09-05 16:07:27
    达梦数据库开发版,是指用于业务场景开发时所用的数据库。它和企业版在功能、性能上没有任何区别,仅有的区别是开发版只能试用1年,1年后如何想继续用该库,就需要增加dm.key。 开发版,查询试用时间: SELECT SVR...
  • 【内容提要】 本书共11章,第1~8章主要介绍了.NET Framework及MSDN、C#程序设计语言、C# Windows程序设计、C# Web程序设计,在.NET环境下XML使用及Crystal Reports技术、ADL.NET核心技术、SQL Server数据库开发技术...
  • 数据库设计开发规范-阿里.pdf

    热门讨论 2017-06-23 16:26:55
    数据库设计开发规范-阿里.pdf
  • 深入浅出MySQL++数据库开发、优化与管理维护 第2版 唐汉明.pdf 带书签。比别家的更便宜,只需更少积分 该资源为深入浅出mysql数据库开发、优化与管理维护的第二版,最新上传,是学习mysql的必备资料 7zip 分卷解压
  • 8个精彩Access实例,是很好的行业数据库开发范例应用教程.
  • C++进行sql server数据库开发

    万次阅读 2018-12-20 23:29:38
    下面使用ADO进行c++数据库开发 下面的每个小标题中代码都是不完整的,可能无法编译通过,只是分析,完整的代码会放在最后。 如果有什么地方有错误,请尽管指出来,十分感谢。 1.首先先创建一个C++的项目,Win32...
  • Firebird(火鸟)数据库开发手册(PDF)

    热门讨论 2008-10-10 12:56:31
    Firebird(火鸟)数据库开发手册(PDF).rar
  • 第一天:01_数据库课程的安排.avi02_Oracle数据的安装简介.avi03_Oracle的历史简介和基本开发概念.avi04_Oracle实例和Oracle数据库的关系.avi05_Oracle数据库的基本结构.avi06_Oracle客户端和服务器的安装和配置.avi...
  • Navicat Premium for Mac 是Mac平台上优秀的数据库开发工具,你可以使用Navicat Premium 同时连接MySQL、SQL Server、Oracle、SQLite等数据库,功能强大,navicat premium 让你轻松创建、管理和维护数据库,非常...
  • SQL Server 2017 数据库开发工具介绍

    万次阅读 2017-11-08 15:33:23
    自从安装了SQL Server 2017 试用以来, 测试了几个感兴趣的点. 在使用过程中, 发现在原有SSMS的基础上, 还有几个微软的工具可以进行数据库开发. 工具 使用平台 SSMS Wi
  • 数据库开发工程师(高级) 工作职责描述: 1、负责数据仓库建模、调度系统的设计和开发 2、负责数据仓库流程的优化及解决相关技术问题 3、规划业务相关的数据主题建设,制定数据治理方案 职位技能要求: 1、计算机...
  • PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序...
  • 数据库开发 维护 性能调优 备份还原 各种复杂问题的解决方案 这时对CSDN上出现的很多问题的解决方案的总结 免费分享 大家多多下载哦

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,961,855
精华内容 784,742
关键字:

数据库开发

友情链接: Poisson.zip