学习日记-mysql数据库以及jdbc编程
2013-04-08 20:36
148 查看
------- android培训、java培训、期待与您交流!
----------
mysql数据库以及jdbc编程
java语言的各种跨平台特性,都采用了相似的结构,因为它们都需要让相同的程序在不同的平台上运行,所以都需要中间的转换程序,同样为了jdbc程序可以在不同的平台上运行,就需要不同数据库厂商提供相应的驱动程序。
sql的基础语法无非是增删改查,下边列出一些最基本的语法:
1. 查询
select * from table
2. 更新
update table set field=value
3. 插入
insert [into] table (field) values(value)
4. 删除
delete [from] table
经过查资料找到select语句的执行顺序与大家分享:
第一步:from
首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表vt1 .
第二步:on
接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2 .
第三步:join
如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt3.
第四步:多表
如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3.
第五步:where
应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表vt4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outer join中还可以把移除的行再次添加回来,而where的移除的最终的。
第六步:group by
分组,生成虚拟表 vt4
第七步:having
对vt4应用having筛选器,生成虚拟表 vt5
第八步:select
处理select 列表,生成虚拟表vt6
第九步:distinct
将vt6 中重复的行去掉,生成虚拟表vt7
第十步:order by
将vt7中的行按order by 子句中的列列表排序,生成一个游标vc8
第十一步: top
从vc8的开始处选择指定数量或比例的行,生成虚拟表vt9,并返回给调用者
select语句扩展:Insert into table1 (field1 ) Select field2 from table2
要求table1必须存在。
select field1 into table1 from table2
要求table1不存在,在运行时会自动创建表名为table1,字段名为field1的一个表。
数据库的约束:
在学习之前我建议应该记住以下的几个单词:
Alter:改变;Primary:主要;Constraint:约束;Unique:唯一的、独特的;Foreign::外国的,外交的;Reference:参考,引用,提及;Cascade: 层叠,串联的
主要的约束有主键约束(PK) Primary key constraint、唯一约束(UQ) Unique constraint、默认约束(DF) Default constraint、检查约束(CK) Check constraint、外键约束(FK) Foreign key constraint。
jdbc的最重要的接口是:
java.sql.DriverManager 处理驱动的调入并且对产生新的数据库连接提供支 持。
java.sql.Connection 代表对特定数据库的连接。
java.sql.Statement 代表一个特定的容器,来对一个特定的数据库执行SQL 语句。
java.sql.ResultSet 控制对一个特定语句的行数据的存取。其中 java.sql.Statement 又有两个子类型:
1. java.sql.PreparedStatement 用于执行预编译的SQL语句。
2. java.sql.CallableStatement 用于执行对一个数据库内嵌过程的调用。
jdbc编程时基本步骤总结:
(1)加载类的驱动:Class.forName(driverClass);
(2)通过driverManager获取数据库连接:DriverManager.getConnection(String url,String user,String password);
(3)通过Connection创建Statement对象方法有三种1、createStatement()创建基本的Statement 2、prepareStatement(String sql)根据传进来的sql 来创建预编译的Statement对象 3、prepareCall(String sql)根据传入的Sql来创建CallableStatement对象;
(4)根据statement执行sql语句:1、execute() 2、executeUpdate() 3、executeQuery()只能执行查询语句。
(5)操作结果集:next(),previous()等移动记录指针的方法。
(6)回收数据库资源。
下边给出一个小例子:
public class ConnMySql
{
public static void main(String[] args) throws Exception
{
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
try(
// 2.使用DriverManager获取数据库连接,
// 其中返回的Connection就代表了Java程序和数据库的连接
// 不同数据库的URL写法需要查驱动文档知道,用户名、密码由DBA分配
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/select_test"
, "root" , "32147");
// 3.使用Connection来创建一个Statment对象
Statement stmt = conn.createStatement();
// 4.执行SQL语句
/*
Statement有三种执行sql语句的方法:
1 execute 可执行任何SQL语句。- 返回一个boolean值,
如果执行后第一个结果是ResultSet,则返回true,否则返回false
2 executeQuery 执行Select语句 - 返回查询到的结果集
3 executeUpdate 用于执行DML语句。- 返回一个整数,
代表被SQL语句影响的记录条数
*/
ResultSet rs = stmt.executeQuery("select s.* , teacher_name"
+ " from student_table s , teacher_table t"
+ " where t.teacher_id = s.java_teacher"))
{
// ResultSet有系列的getXxx(列索引 | 列名),用于获取记录指针
// 指向行、特定列的值,不断地使用next()将记录指针下移一行,
// 如果移动之后记录指针依然指向有效行,则next()方法返回true。
while(rs.next())
{
System.out.println(rs.getInt(1) + "\t"
+ rs.getString(2) + "\t"
+ rs.getString(3) + "\t"
+ rs.getString(4));
}
}
}
}
------- android培训、java培训、期待与您交流!
----------
----------
mysql数据库以及jdbc编程
java语言的各种跨平台特性,都采用了相似的结构,因为它们都需要让相同的程序在不同的平台上运行,所以都需要中间的转换程序,同样为了jdbc程序可以在不同的平台上运行,就需要不同数据库厂商提供相应的驱动程序。
sql的基础语法无非是增删改查,下边列出一些最基本的语法:
1. 查询
select * from table
2. 更新
update table set field=value
3. 插入
insert [into] table (field) values(value)
4. 删除
delete [from] table
经过查资料找到select语句的执行顺序与大家分享:
第一步:from
首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表vt1 .
第二步:on
接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2 .
第三步:join
如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt3.
第四步:多表
如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3.
第五步:where
应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表vt4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outer join中还可以把移除的行再次添加回来,而where的移除的最终的。
第六步:group by
分组,生成虚拟表 vt4
第七步:having
对vt4应用having筛选器,生成虚拟表 vt5
第八步:select
处理select 列表,生成虚拟表vt6
第九步:distinct
将vt6 中重复的行去掉,生成虚拟表vt7
第十步:order by
将vt7中的行按order by 子句中的列列表排序,生成一个游标vc8
第十一步: top
从vc8的开始处选择指定数量或比例的行,生成虚拟表vt9,并返回给调用者
select语句扩展:Insert into table1 (field1 ) Select field2 from table2
要求table1必须存在。
select field1 into table1 from table2
要求table1不存在,在运行时会自动创建表名为table1,字段名为field1的一个表。
数据库的约束:
在学习之前我建议应该记住以下的几个单词:
Alter:改变;Primary:主要;Constraint:约束;Unique:唯一的、独特的;Foreign::外国的,外交的;Reference:参考,引用,提及;Cascade: 层叠,串联的
主要的约束有主键约束(PK) Primary key constraint、唯一约束(UQ) Unique constraint、默认约束(DF) Default constraint、检查约束(CK) Check constraint、外键约束(FK) Foreign key constraint。
jdbc的最重要的接口是:
java.sql.DriverManager 处理驱动的调入并且对产生新的数据库连接提供支 持。
java.sql.Connection 代表对特定数据库的连接。
java.sql.Statement 代表一个特定的容器,来对一个特定的数据库执行SQL 语句。
java.sql.ResultSet 控制对一个特定语句的行数据的存取。其中 java.sql.Statement 又有两个子类型:
1. java.sql.PreparedStatement 用于执行预编译的SQL语句。
2. java.sql.CallableStatement 用于执行对一个数据库内嵌过程的调用。
jdbc编程时基本步骤总结:
(1)加载类的驱动:Class.forName(driverClass);
(2)通过driverManager获取数据库连接:DriverManager.getConnection(String url,String user,String password);
(3)通过Connection创建Statement对象方法有三种1、createStatement()创建基本的Statement 2、prepareStatement(String sql)根据传进来的sql 来创建预编译的Statement对象 3、prepareCall(String sql)根据传入的Sql来创建CallableStatement对象;
(4)根据statement执行sql语句:1、execute() 2、executeUpdate() 3、executeQuery()只能执行查询语句。
(5)操作结果集:next(),previous()等移动记录指针的方法。
(6)回收数据库资源。
下边给出一个小例子:
public class ConnMySql
{
public static void main(String[] args) throws Exception
{
// 1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
try(
// 2.使用DriverManager获取数据库连接,
// 其中返回的Connection就代表了Java程序和数据库的连接
// 不同数据库的URL写法需要查驱动文档知道,用户名、密码由DBA分配
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/select_test"
, "root" , "32147");
// 3.使用Connection来创建一个Statment对象
Statement stmt = conn.createStatement();
// 4.执行SQL语句
/*
Statement有三种执行sql语句的方法:
1 execute 可执行任何SQL语句。- 返回一个boolean值,
如果执行后第一个结果是ResultSet,则返回true,否则返回false
2 executeQuery 执行Select语句 - 返回查询到的结果集
3 executeUpdate 用于执行DML语句。- 返回一个整数,
代表被SQL语句影响的记录条数
*/
ResultSet rs = stmt.executeQuery("select s.* , teacher_name"
+ " from student_table s , teacher_table t"
+ " where t.teacher_id = s.java_teacher"))
{
// ResultSet有系列的getXxx(列索引 | 列名),用于获取记录指针
// 指向行、特定列的值,不断地使用next()将记录指针下移一行,
// 如果移动之后记录指针依然指向有效行,则next()方法返回true。
while(rs.next())
{
System.out.println(rs.getInt(1) + "\t"
+ rs.getString(2) + "\t"
+ rs.getString(3) + "\t"
+ rs.getString(4));
}
}
}
}
------- android培训、java培训、期待与您交流!
----------
相关文章推荐
- Java学习日记-5 关键字static和final 以及接口
- java学习日记_39:多态的引入、特点和弊端以及弊端解决方案
- java学习日记_40:多态的内存图示以及常见错误
- 黑马程序员-Map集合的特点以及map集合的三个小弟学习日记
- java学习日记_9:面向对象的概念以及思想
- 慕客网学习总结:mysql数据库的数据表操作以及约束的概念
- JAVA 利用JDBC连接MYSQL数据库以及增删改查的实现【学习笔记】
- 过程改进日记之学习Scrum2010-8-24:看板第二天以及过程改进工作规划
- [传智播客学习日记]DOM中取页面元素以及正则表达式
- 黑马程序员--Java学习日记之复习总结(递归以及IO流概述)
- Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用)
- Java学习日记9:登录时验证码的功能以及实现
- 【Python学习日记】递归和尾递归 以及Python
- [Linux学习日记]Ubuntu推荐软件以及简单脚本编写
- linux学习第五十篇:MySQL创建用户以及授权,常用sql语句,MySQL数据库备份恢复
- Android Gradle编译学习日记之一(搭建 Gradle 环境以及编译 Android 应用)
- 【Python学习日记】dic和set 以及什么是 不可变对象
- mysql数据库 sql语句学习笔记1 建库,建表,改表
- 【OC学习-27】对象的归档以及解归档——标准数据和自定义数据的例子
- maven学习日记一 环境搭建配合eclipse使用