java基础知识-数据库

// 数据库英文名Database,严格地说,数据库是按照数据结构来组织、存储和管理数据的仓库。
// 数据库的特点:
// 尽可能不重复
// 以最优方式为某个特定组织的多种应用服务
// 其数据结构独立于使用它的应用程序
// 对数据的增、删、改、查由统一软件进行管理和控制



// 企业应用通常都会使用数据库来保存和管理数据信息
// 数据库的主要职能
// 保存大量数据
// 检索数据
// 数据维护(备份、压缩等)
// 根据实际项目的规模与需求
// 选择合适的数据存储技术
// 选择合适的数据库产品



// 数据库系统:包括数据库、数据库管理系统、数据库管理员、数据库应用系统
// 数据库管理系统:是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS
// 数据库:长期存储在计算机内的有组织、可共享的大量的数据集合


// 网状DBMS
// 层次DBMS
// 关系型DBMS
// SYBASE, DB2, ORACLE, MySQL, ACCESS, MS SQL Server, 
// Informix, PostgreSQL
// 今天,非关系型,“云”或者“NoSQL”数据库正以数据库管理系统的替代模型而获得认知。
// MemcacheDB, Apache CASSANRA, membase, REDIS, 
// Apache COUCHDB



// 存储模式(内模式)称为“存储文件”(stored file)
// 关系模式(模式)称为“基本表”(base table)
// 子模式(外模式)称为“视图”(view)
// 元组称为“行”(row)和记录record
// 属性称为“列”(column)和字段field



// MySQL是目前在Internet上使用最广泛的关系型数据库管理系统之一
// MySQL支持多种操作系统平台
// MySQL根据收费与否,分为
// MySQL Community Server(即社区版)
// 和MySQL Enterprise Edition(即商业版)。
// 其中商业版包括MySQL标准版、MySQL企业版、MySQL集群版三个版本。
// 该系列版本是收费版本,可以试用30天



// Community Server可以从mysql 的官网直接下载,但是MySQL不提供技术支持,
// 在5.5 版本里多了如下功能:
// 1. 默认存储引擎更改为InnoDB,2. 多核性能提升;
// 3. 复制功能(Replication)加强;4. 增强表分区功能:
// 1) 非整数列分区,2) 多列分区:3) 可用性增强:4) 更多微调功能:
// 5. Insert Buffering;6. Support for Native AIO on Linux.


// 运行services.msc
// 服务的快速启动
// net start mysql
// 服务的快速终止
// net stop mysql
// 服务的删除
// sc delete mysql
// 服务的安装
// 进入目录:%MY_HOME%\bin
// 执行:mysqld.exe –install MySQL --defaults-file=
// "C:\Program Files\MySQL\MySQL Server 5.5\my.ini"



// SQL全名是结构化查询语言(Structured Query Language).
// SQL语言共分为四大类:
// 1.数据查询语言DQL,主要功能是查询数据,核心指令为SELECT
// (辅助指令包括FROM 、WHERE 、GROUP BY、HAVING 、 ORDER BY)
// 2.数据操纵语言DML,负责对数据库对象运行数据访问工作的指令集,
// 以INSERT、UPDATE、DELETE三种指令为核心.
// 3.数据定义语言DDL,负责数据结构定义与数据库对象定义的语言,
// 由CREATE 、ALTER 、DROP三个指令组成.
// 4.数据控制语言DCL。是一种可对数据访问权进行控制的指令,它可以控制特定用户帐户对数据表、
// 查看表、预存程序、用户自定义函数等数据库对象的控制权。由GRANT和REVOKE两个指令组成。



// USE studentDB;
// SET NAMES gbk;
// CREATE TABLE IF NOT EXISTS course(
//    id int NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 
// '课程号',
//    name varchar(30) NOT NULL COMMENT '课程名'
// )COMMENT = '课程表';


// DESC course;
// SHOW COLUMNS FROM course;
// SHOW FULL COLUMNS FROM course;
// SHOW CREATE TABLE course;

// USE studentDB;
// ALTER TABLE course RENAME TO courses;
// ALTER TABLE course ADD COLUMN remark text comment '备注';
// ALTER TABLE course CHANGE remark remarks text;
// ALTER TABLE course CHANGE remarks remarks VARCHAR(30);
// ALTER TABLE course DROP COLUMN remark;


// USE studentDB;
// SET names gbk;
// INSERT INTO course(name) VALUES('C语言');
// INSERT INTO course(name) VALUES('MYSQL');


// DROP TABLE course;


// JDBC是Java Database Connectivity的简称
// 是由一组Java语言编写的类和接口组成,是一种用于执行SQL语句的规范
// JDBC API 提供两类主要接口:
// 一是面向开发人员的java.sql程序包,使得Java程序员能够进行数据库连接,
// 执行SQL查询,并得到结果集合。
// 一是面向底层数据库厂商的JDBC Drivers。


// JDBC主要类和接口
// java.sql.DriverManager
// java.sql.Connection
// java.sql.Statement
// java.sql.ResultSet



// Class.forName("com.mysql.jdbc.Driver");
// String url = "jdbc:mysql://127.0.0.1:3306/em?useUnicode="
// + "true&characterEncoding=UTF-8";
// Connection conn = DriverManager.getConnection(url, 
// "root", "");
// Statement stmt = conn.createStatement();
// ResultSet rs = stmt.executeQuery("select * from "
// + "employees");
// while (rs.next()) {   
// System.out.println(rs.getString(“name”));
// }
// conn.close();


// DriverManager是 JDBC 的管理层,管理一组JDBC驱动程序的基本服务。
// DriverManager类的主要作用是跟踪可用的驱动程序,并在数据库和相应驱动程序之间
// 建立连接。
// 调用Class.forName()方法将显式地加载驱动程序类。
// 调用DriverManager.getConnection()方法将建立与数据库的连接,
// 得到与数据库连接的Connection对象。



// Connection类是JDBC规范中的最核心的类。
// Statement对象和ResultSet对象等都直接或者间接的来源于它
// Connection对象表示与特定数据库的连接(会话)。
// 得到Statement对象
// createStatement()
// prepareStatement(String sql)
// prepareCall(String sql)
// 为了保证数据库事务的原子性,Connection可以设置手动提交事务



// Statement是向数据库提交SQL语句并返回相应结果的工具。语句可以是SQL查询、修改、
// 插入或者删除
// PreparedStatement接口
// 防止SQL注入攻击(使用占位符“?”)
// 提高SQL的执行性能(在执行之前有预处理)
// 避免使用SQL方言
// 提高JDBC中有关SQL代码的可读性
// CallableStatement接口用于执行 SQL 存储过程的接口



// ResultSet表示数据库结果集的数据表,通常通过执行查询数据库的语句生成
// ResultSet对象具有指向其当前数据行的光标
// ResultSet类型和特性



// 数据库连接池的作用
// 1.通过JDBC访问数据库,每次访问都要经历与数据库建立连接,打开连接,访问数据库,
// 关闭连接几个步骤,与数据库建立并打开连接是一件既费力又费时的工作,
// 频繁的发生这种操作会严重耗费系统资源,导致系统性能下降,严重的会导致系统崩溃。
// 2.数据库连接池就是为了解决上面的问题而出现的。数据库连接池负责动态的分配、
// 管理和释放数据库连接。



// DataSource属于javax.sql包,是对java.sql包的扩展部分。

// DataSource用于提供到此 DataSource对象所表示的物理数据源的连接


// DataSource 接口由驱动程序供应商实现。共有三种类型的实现:
// 基本实现
// 连接池实现
// 分布式事务实现

// 使用数据库厂商驱动中提供的DataSource实现
// 使用Oracle驱动自带的DataSource实现
// oracle.jdbc.pool.OracleConnectionPoolDataSource
// 使用第三方提供的DataSource实现
// Apache DBCP、C3P0

// Apache DHCP
// DHCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.
// DBCP可以直接的在应用程序用使用。
// C3P0
// C3P0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,
// 包括了实现jdbc3和jdbc2扩展规范说明的Connection和Statement池的
// DataSources对象。
// Proxool
// 快速,成熟,健壮。可以透明地为你现存的JDBC驱动程序增加连接池功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值