• Java 学习数据库

    2018-06-12 21:31:11
    数据库管理系统 可以操作数据库的应用程序常用的数据库 mysql数据库,中小型数据库。DDL数据库定义语言(定义库、表、列) CREATE ALTER DROPDML数据库操作语言(定义表中数据) INSERT UPDATE DELETEDQL数据库...

    数据库(DataBase)

        保存数据,保存到一个文件中,对数据进行持久化。

        使用简单的命令就可以实现增删改查。

    数据库管理系统

        可以操作数据库的应用程序

    常用的数据库

        mysql数据库,中小型数据库。

    DDL数据库定义语言(定义库、表、列)

        CREATE ALTER DROP

    DML数据库操作语言(定义表中数据)

        INSERT UPDATE DELETE

    DQL数据库查询语言(查询表中数据)

        SELECT


    注意:

        SQL语句不区分大小写;

        SQL语句以;结束。


    DDL指令:

        查询现有数据库:

        show database;

        创建一个数据库:

        create database 数据库名;

      创建数据库并指定字符集(一般使用utf8)

      create database 数据库名 character set 字符集名;

      

      指定查询一个创建好的数据库(查询该数据库的编码格式)

      windows 默认的数据库编码格式 utf8

      mac 初始默认数据库编码格式 latin1(不能插入中文)

      show create database 数据库名;


      修改数据库创建时的默认字符集:修改my.cnf文件(有数据库的默认配置文件)。

      查看字符集的所有校验规则:

      每一个编码格式 都有一个对应的校验规则。

      show character set;

        

      创建数据库 指定字符集和校验规则(collate 校验):

      create database 数据库名 character set 字符集名 collate 校验规则;

      注意:校验规则要对应上。


      修改数据库(Alter)

      1.修改编码格式

      alter database 数据库名 character set 字符集;

      

      删除数据库(Drop 删除)

      drop database 数据库名;


      表的操作

      创建一张表:

      create table 表名(

       字段1 字段类型,

       字段2 字段类型,

       ...

       字段n 字段类型

      );

      

      字段类型常用类型

      int:整型;
      double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
      char:固定长度字符串类型; char(10)  'abc       ';
      varchar:可变长度字符串类型;varchar(10) 'abc' (也是存10个字符但是会自动去除空格 常用但效率比char低);
      text:字符串类型; 大数据文本,最大4M;
      blob:字节类型;
      date:日期类型,格式为:yyyy-MM-dd;
      time:时间类型,格式为:hh:mm:ss;
      timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss。会自动赋值当前系统时间,可以直接插入null;
      '2018-06-11' 不想使用默认系统时间 可以直接用字符串插入;
      datetime:日期时间类型 yyyy-MM-dd hh:mm:ss。  


      DMl

      

      查看表结构

      desc 表名

      查看整张表内容

      select * from 表名;

      

      

      表中插入数据

      方式一:只要字段与值相对应,没填的字段,默认是null。

      格式:

      insert into 表名 (字段1,字段2,....) values (值1,值2,....);

      注意:字段与值得顺序和类型要一一对应。

      如果该字段没值,使用null代替。


      

      方式二:批量插入

      insert into 表名 values 

      (值1,值2,....),

      (值1,值2,....),

      (值1,值2,....);

      需要填全所有字段。


      修改表 DDL

      添加一列

      alter table 表名 add 字段名 类型;

      修改一个字段的长度 

      alter table 表名 modify 字段名 类型;

      删除一个字段  

      alter table 表名 drop 字段名;

      alter table 表名 drop 字段名;

      修改表名

      rename table 原表名 to 新表名;

      查看表格的创建细节

      show create table 表名;

      修改列名

      alter table 表名 change 原字段 新字段 新字段类型;


      

      修改(更新)表数据

      多个值用逗号隔开。

      update 表名 set 字段名1 = 字段值1,字段名2 = 字段值2,... where 字段 = 值;

      

      删除操作(删除一条数据)

      delete from 表名 where 字段 = 字段值;

      删除表中的所有数据

      delete from 表名;

      delete删除时 是一条记录一条记录删除,并且如果删除错误,数据可以回滚,但是一条一条删效率不高。

      truncate table 表名;

      直接删除表,再重新建立一张表,字段相同,效率高,但是不能找回。


      字段控制查询 

      去除重复数据

      select distinct 字段 from 表名;

      查询数据和

      select 字段1 + 字段2 from 表名;

      注意:一个值和null相加,得到的值一定是null。可以使用ifnull(字段,0)来解决。

      给字段起别名

      select 字段1 + 字段2 as 别名 from 表名;

      as可以省略。

      排序

      select * from 表名 order by 字段;  

      根据字段数据进行排序,默认升序排序(ASC)    

      select * from 表名 order by 字段 DESC;

      可以使用DESC进行降序排序。  


      模糊查询

      模糊查询

      使用like 关键字, like '%%' '__'

      select * from 表名 where 字段 like '%%';    


      聚合函数 对列数据进行操作

      可以自动过滤空值,count是计算总数,sum是求和,avg求平均数,max 最大,min最小  

      select count(字段) from 表名;

      select sum(字段) from 表名;

      select avg(字段) from 表名;

      select max(字段),min(字段) from 表名;





      
     



    数据库的完整性


    展开全文
  • 一、数据库 1、数据库,通常是一个戒一组文件,保存了一些符合特定规格的数据,数据库对应的英询单词是DataBase,简称DB;数据库软件称为数据库管理系统,英文简称DBMS,全称为DataBase Management System,例如:...

    一、数据库
    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

    展开全文
  • JAVA的JDBC学习总结 简洁: JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 1.下载对应数据库的...

    JAVA的JDBC学习总结

    简介: JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    1.下载对应数据库的jabc架包与驱动

    1.mySQL:https://dev.mysql.com/downloads/connector/
    2.Oracle:http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html
    3.SQL Server:https://www.microsoft.com/en-us/download/details.aspx?id=55539

    2.在项目中引入架包

    在这里插入图片描述

    3.加载驱动连接数据库查询数据

    以MySQL为例

    //声明在try外面,方便进行关闭
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    try {
    	//1、加载驱动
    	Class.forName("com.mysql.jdbc.Driver");
    	//其它数据库
    	/**
    	 * oracle.jdbc.driver.OracleDriver sqlserver
    	 * com.microsoft.sqlserver.jdbc.SQLServerDriver
    	 */
    	//2、获取数据库的连接Connection
    	String url = "jdbc:mysql://localhost:3306/demo";
    	String user = "main";//数据库用户名
    	String password = "main";//数据库密码
    	conn = DriverManager.getConnection(url, user, password);
    	
    	//3、从数据库连接Connection
    	// Statement s= conn.createStatement();
        ps = conn.prepareStatement("SELECT * from user");
        
        //4、执行sql
        //executeQuery() 用于查询,executeQuery() 用于新增,修改,删除
        rs=ps.executeQuery();
        
        //5.获取数据,数据下标从1开始
        while (rs.next()) {
           System.out.println(rs.getInt(1));
        }
     } catch (ClassNotFoundException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    } catch (SQLException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    } catch (Exception e) {
    	// TODO: handle exception
    	e.printStackTrace();
    }finally{
        //关闭连接
    	try {
    		if (conn!=null) {
    			conn.close();
    		}
    		if (ps!=null) {
    			ps.close();
    		}
    		if (rs!=null) {
    			rs.close();
    		}
    	} catch (SQLException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    }
        
    

    4.SQL语句声明参数赋值

    在执行新增、修改、删除时,往往是用传值的方式进行执行的,在jdbc中也可以声明SQL参数。

    //在sql语句中用‘?’占位
    ps=conn.prepareStatement("insert into user(name,password) values(?,?)");
    //传入参数 , 起始下标从 1开始
    ps.setString(1,"name003");
    ps.setString(2,"passs003");
    //返回执行影响条数
    int a =ps.executeUpdate();
    
    展开全文
  • Java学习指南系列』的第8篇教程 ,介绍MySQL数据库的安装使用,常见SQL语句,以及使用JDBC进行数据库开发的技术。 二、主要内容  * MySQL的安装和使用 * 常用SQL语句,增删改查操作 * 高级SQL...
  • java连接mysql数据库的详细步骤 连接说明: a、mysql连接的驱动 b、mysql数据库的安装 c、eclipse e、数据库服务是否打开(控制面板——管理工具——服务——找到mysql对应服务) f、创建一个数据库 1、...
    java连接mysql数据库的详细步骤

    连接说明:
    a、mysql连接的驱动
    b、mysql数据库的安装
    c、eclipse
    e、数据库服务是否打开(控制面板——管理工具——服务——找到mysql对应服务)
    f、创建一个数据库

    1、新建java项目 然后新建一个文件夹——libs(用来放各种外部包)

    2、在包里面加入连接mysql数据库的包
    下载后得到的是一个压缩包

    解压后打开选择红线圈着的jar包然后复制粘贴到我们的java项目的libs文件下面

    3、构建路径上的jar包
    在eclipse中
    a:点击项目——选择属性

    b:进行添加
    打开属性后,点击java构建路径
    点击添加jar,选择你的项目下的jar包,然后一直确定,最后添加完成


    4、在java项目中进行mysql数据库的连接
    在java项目包中新建两个Class文件,
    我的命名为MainClass和SqlConnection

    打开SqlConnection

    添加一下代码:
    public class SqlConnection {
    //这里是SqlConnection 类
    
    		/*
    		*java连接mysql数据库
    		*1、加载驱动程序
    		*2、数据库连接字符串"jdbc:mysql://localhost:3306/数据库名?"
    		*3、数据库登录名
    		*3、数据库登录密码
    		*/
    
        private static final String URL="jdbc:mysql://localhost:3306/deom?";//数据库连接字符串,这里的deom为数据库名
        private static final String NAME="admin";//登录名
        private static final String PASSWORD="13245";//密码
        
    	public void TheSqlConnection()
    	{
            //1.加载驱动
            try {
    			Class.forName("com.mysql.jdbc.Driver");
    		} catch (ClassNotFoundException e) {
    			System.out.println("未能成功加载驱动程序,请检查是否导入驱动程序!");
                            //添加一个println,如果加载驱动异常,检查是否添加驱动,或者添加驱动字符串是否错误
    			e.printStackTrace();
    		}
    		Connection conn = null;
    		try {
    			conn = DriverManager.getConnection(URL, NAME, PASSWORD);
    		        System.out.println("获取数据库连接成功!");
    		} catch (SQLException e) {
    			System.out.println("获取数据库连接失败!");
                            //添加一个println,如果连接失败,检查连接字符串或者登录名以及密码是否错误
    			e.printStackTrace();
    		}
                   //数据库打开后就要关闭
    		if(conn!=null)
    		{
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    				conn=null;
    			}
    		}
    	}
    }
    在MainClass中对SqlConnection进行调用
    package com.king.sqlCon;
    
    public class MainCalss {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		new SqlConnection().TheSqlConnection();
    	}
    
    }
    



    最后输出结果:


    5、连接mysql数据库失败原因分析:
    1、数据库的服务是否打开
    2、是否在新建了对应的数据库
    3、是否添加了jar包
    4、是否加载了驱动
    5、连接字符串、登录名以及密码是否有误

    如果连接失败,看这几个因素是否发生

    最后谢谢看到这里,若有不恰当的地方。请指出,大家相互学习。
    展开全文
  • (1)定义:规划数据库中数据对象以及之间关系的过程 (2)为什么进行数据库设计 节约数据占用空间大小 保证数据的4种完整性 便于程序的后期开发及维护 2.E-R模型 定义:实体关系模型图 矩形:实体 椭圆形:...
    
    

    1.数据库设计

    (1)定义:规划数据库中数据对象以及之间关系的过程

    (2)为什么进行数据库设计

    节约数据占用空间大小

    保证数据的4种完整性

    便于程序的后期开发及维护

    2.E-R模型

    定义:实体关系模型图

    矩形:实体

    椭圆形:属性

    菱形:关系

    3.数据库设计的三大范式

    定义:为了设计结构良好的数据库,需要遵守一些专门的规则,

    称为数据库的设计范式

    三大范式的设计目标:

    第一范式(1NF)的目标:确保每列的原子性

    第二范式(2NF)的目标:确保表中的每列,都和主键相关

    第三范式(3NF)的目标:确保每列都和主键列直接相关,而不是间接相关

    (例如:年龄和出生日期,二者保留不变动或不常变动的一个即可)

    4.数据库设计步骤

    (1)分析需求、收集信息

    (2)标识对象,即数据库表

    (3)标识对象的属性,即数据库表字段(列)

    (4)标识对象之间的关系(主、外键关系)

    5.一般优化技巧

    (1)建议不用“*”代替所有列名

    (2)删除所有数据用TRUNCATE代替DELETE

    (3)用NOT EXISTS 代替NOT IN

    (4)用EXISTS代替IN

    (5)用EXISTS代替DISTINCT

    例如:

    --用 EXISTS 代替 distinct 优化 查询有多少不同的部门

    select DISTINCT d.deptno ,d.dname from teacher t

    INNER JOIN dept d ON t.deptno=d.deptno;

    SELECT d.deptno ,d.dname FROM dept d

    WHERE EXISTS (SELECT 'X' FROM teacher t WHERE t.deptno=d.deptno);

    --exists代替in 查询 部门编号等于30的老师有几人

    SELECT count(t.deptno)

    FROM teacher t

    WHERE t.deptno IN (SELECT d.deptno FROM dept d WHERE d.deptno = 30);

    SELECT count(t.deptno)

    FROM teacher t

    WHERE EXISTS (SELECT 'X'

    FROM dept d

    WHERE d.deptno = t.deptno

    AND d.deptno = 30);

    6.关于驱动表

    示例:

    --先根据名称查询

    select * from TEACHER t WHERE trim(T.TNAME)='李寻欢'

    --后创建索引

    create index IDX_TEACHER_NAME on TEACHER (tname);

    --在查询进行对比

    SELECT * FROM TEACHER T WHERE T.TNAME = '李寻欢'

    解释计划窗口查看驱动表

    选择驱动表有如下3个规则:

    -- A\B两张表都没有索引的情况下,from 后面靠后的那个表就是驱动表

    -- A\B两张表中,一张有索引,一张没索引的情况下,驱动表是没索引的那张

    -- 驱动表要选择小表(查询后,得到的结果集数据量小的那张表

    7.表连接优化规则

    (1)用于连接的子句的列应被索引、在Where子句中应尽量利用索引,而不是避开索引;

    (2)连接操作应从返回较少行上驱动;

    (3)如果所连接的表A和B,A表长度远远大于B表,建议从较大的A表上驱动 ;

    (4)如果Where子句中含有选择性条件,Where No=20,将最具有选择性部分放在表达式最后;

    (5)如果只有一个表有索引,另一表无索引,无索引的表通常作为驱动表;

    如A表的No列以被索引,而B表的No列没被索引,则应当B表作为驱动表,A表作为被驱动表;

    8.索引的分类及原则

    分类:唯一索引、非唯一索引、反向键索引、位图索引、组合索引、函数索引

    创建索引原则:

    频繁搜索的列

    经常排序、分组的列

    经常连接的列

    指定单独的表空间

    不适合建立索引原则

    数据量小

    仅包含几个不同值的列

    数据表操作特别频繁、业务性能要求高

    9.索引的注意事项

    索引使用原则:

    表中导入数据后再创建索引。否则每次表中插入数据时都必须更新索引

    在适当的表和字段上创建索引。如果经常检索的数据少于表中的15%则需要创建索引

    限制表中索引的数目。索引越多,在修改表时对索引做出修改的工作量越大

    索引常见错误用法:

    LIKE、函数、运算

    10.表分区

    表分区:把表中数据划分成若干部分,并存储在不同的位置

    优点: 改善查询性能

    表更容易管理

    便于备份和恢复

    提高数据安全性

    11.数据库对象

    Oracle 数据库对象又称模式对象

    数据库对象是逻辑结构的集合,最基本的数据库对象是表

    12.视图

    用途:

    限制对表中的一组行为访问

    隐藏数据的复杂性

    简化了用户的SQL

    基表定义修改隔离

    通过重命名列,从另一个角度提供了数据

    DML操作的限制

    只能对基表进行操作

    注意权限问题

    展开全文
  • 本篇 Chat 以 Oracle 数据库为例,从以下8个方面对Java程序员常用数据库知识点进行阐述: 什么是数据库的 DDL 和 DML? 创建数据库的用户并授权。 如何优雅地建立一张数据库的表? 数据库表的...
  • Java上传文件到数据库

    2016-03-29 22:54:58
    Java上传文件到数据库  首先在开始本文之前推荐一篇我非常喜欢的博主——孤傲苍狼的一篇相关博文。  JavaWeb学习总结(五十)——文件上传和下载   http://www.cnblogs.com/xdp-gacl/p/4200090.html  本文主要...
  • 一、应用程序直接获取数据库连接的缺点 用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的...
  • 这篇文章主要介绍了Java插入修改删除数据库数据的基本方法,是Java入门学习中的基础知识,需要的朋友可以参考下 Java数据库之插入记录 插入数据表记录有3种方案 一.使用Statement对象 实现插入数据表记录的SQL...
  •  数据库访问几乎每一个稍微成型的程序都要用到的知识,怎么高效的访问数据库也是我们学习的一个重点,今天的任务就是总结java访问数据库的方法和有关API,java访问数据库主要用的方法是JDBC,它是java语言中用来规范...
  • JAVA数据库JDBC学习心得
  • Java连接MySQL数据库步骤 声明,只推荐你看代码学会我的步骤,逻辑,还有用的所有方法 第一, ​ 安装mysql数据库配置(https://www.jianshu.com/p/ea4accd7afb4),安装还有配置教程,按照步骤来肯定没错,里面是...
  • Java应用程序连接数据库–JDBC基础Java应用程序连接数据库JDBC基础 概述 JDBC模式 JDBC定义 第一个JDBC程序 JDBC核心API Connection接口使用 改进 执行数据查询操作 preparedStatement接口使用 CallableStatement...
  • JDK内置纯JAVA数据库Derby从学习JAVA到现在好多年了,不过中间有很长一段时间没怎么用JAVA和相关技术了,都不清楚原来JDK本身内置了Derby数据库。Derby数据库特点1.纯JAVA编写2.极其小巧,核心只有2M左右3.JDK内置...
  • java端向数据库插入字段写法 原文链接:java端向数据库插入字段写法 http://licocom.com/archives/717 面向开发需求,记录学习之路,详情看原文链接。♪(^∀^●)ノ 从java端向数据库端插入数据写法,下面记录下面一...
  • Java系列的技术体系中,数据库是必不可少的核心知识,任何稍稍复杂一点的应用系统,都不可能少的了数据库的支持,将MySQL数据库的学习作为学习各种数据库产品的第一个,将会使学习数据库的知识更加容易!
  • 背景:这两天在学习Oracle数据库,这里就总结下自己上课所学的知识,同时记录下来,方便整理当天所学下的知识,也同时方便日后自己查询。SQL语句的话,这里我就不多讲了,感觉和其他的数据库(MySQL、SQL Server)都...
  • 我想问的是,客户端软件一般用什么数据库,java的derby? 我的jdk是1.8我看里面有一个db文件夹,是不是直接用这个db就行 请大神指点~~~ ------------------------分割线----------------------------- 可能我的...
  • 数据库有很多,嵌入式里面用my-sql多一点,是开源软件。最近看一本书用的sqlserver,就暂且拿sqlserver学习一下,其他的都大致一样。  1、运行sqlserver  用于学习,构建小型的数据库,在网上找了一个绿色版的...
1 2 3 4 5 ... 20
收藏数 349,491
精华内容 139,796