java基础笔记

来源:互联网 发布:网络选修课网址 编辑:程序博客网 时间:2024/06/03 14:24
第一部分:DB2基础知识一、复习jrejdkjvmpathclasspath二、数据库基础-DB21.访问172.18.60.14/temp1232.安装检查db2cmddb2start3.正式安装安装路径:D:\IBM\SQLLIB用户名:db2admin密码:123设置为Administrator为登录用户:lusrmgr.msc如果不能安装,则使用解压工具把4.安装后检查4.1路径检查D:\DB2,如果安装了示例数据库db2exc_974_WIN_x86.exe,解压出来后,使用:db2exc_974_WIN_x86.exe\db2\Windows\DB2 Express-C.msiD:\IBM\SQLLIB右下角的启动小图标,设置不自动启动4.2服务组件services.msccontrol->4.3服务设置为手动启动登录为本地账户4.4实例的相关操作cmddb2cmddb2start 启动当前实例db2stop 停止 当前实例服务开发以后,其他db2客户端可以被访问机器。db2admin start db2admin stop三、相关windows命令操作cmdcdcd ..cd \盘:切换盘符rdmkdirdeldirrenamecopytreelusrmgr.mscnotepadclsmspaintservices.mscregeditpathcontroltypeexithelp四、数据库db2使用system->instacne->database->tablspace->tables,index,views,trrigers,schema(一)实例创建1.查看实例dbilist2.创建实例db2icrt instacne_namedb2icrt erp3.设置当前使用实例set DB2INSTANCE=erp4.删除实例db2idrop instacne_namedb2idrop erp(二)、创建示例数据库db2fs启动菜单找到"第一步"db2sampl.exe(三)、如何连接数据库先查看有哪些数据库:db2 list db directory连接数据库:db2 connect to sample user db2admin using 123或db2 connect to sample,默认以登录的用户名与密码(四)、查看数据库某模式下的数据表db2 list tables for schema administrator(五)、断开数据库连接db2 terminate 不存在连接时,不会报错db2 connect reset 不存在连接时,会报错(六)、创建自己新的数据库db2 create database njdvlp或db2 create database njdvlp on d:创建后面练习使用数据库:db2 create database mydb连接数据库:db2 connect to mydb user db2admin using 123其他图形化的方式创建,访问数据库db2ca:配置助手推荐第三方连接工具:QuestCentral(七)、使用db2ca配置连接远程数据库主机名:172.18.60.69服务名称:空端口号:50000数据库名称:idbnj数据库别名:erptest操作系统:AIX服务器认证测试连接的用户标识和密码:javauser(八)、连接远程数据库db2 connect to erptest user db2admin using 123五、模式的相关操作schema:1.查看模式db2 connect to mydbdb2 select schemaname,owner from syscat.schemata2.创建模式schema:显示创建:db2 create schema schema_name隐式创建:db2 create talbe dbnew.tblUser(intId int)删除模式:db2 drop schema dbnew restrictE:\2013>db2 drop schema dbnew restrictDB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在SQL 处理期间,它返回:SQL0478N  不能对对象类型 "SCHEMA" 执行 DROP、ALTER、TRANSFER OWNERSHIP 或REVOKE,因为它有一个类型为 "TABLE" 的从属对象 "DBNEW.TBLUSER"。  SQLSTATE=42893db2 drop table dbnew.tbluser六、数据库语句操作1.操作的步骤db2start启动实例db2 connect to mydb user dbadmin using 123 连接操作数据库db2 create table_name创建表db2 select * from table_name 查询语句db2 insert into table_name values() 插入记录db2 update table_name set xxfield=valuesss 更新记录db2 delete from table_name 删除记录2.如何使用帮助db2 ? 列出所有命名db2 ? listdb2 ? options3.创建数据表create table db.tblUser(intId int not null primary key,strSn varchar(10) not null,strName varchar(50) not null,intAge int default 18)设置其他语句终止符:db2 -td@作业:1.复习数据库安装及相关操作实例数据库连接本地,远程模式相关操作命令帮助2.预习select ,insert ,upate ,delete等语句3.预习jdbc编程,尝试访问连接db22013-08-26四、数据表相关操作4.1创建表年级表:intId 主键 strSn 编号strName 名称create table db.tblGrade(intId int generated by default as identity primary key,strSn varchar(20) not null,strName varchar(50) not null)@insert into db.tblGrade(strSn,strName) values('001','一年级')@insert into db.tblGrade(strSn,strName) values('002','二年级')@insert into db.tblGrade(strSn,strName) values('003','三年级')@insert into db.tblGrade(strSn,strName) values('004','四年级')@insert into db.tblGrade(strSn,strName) values('005','五年级')@学生表:db.tblStudentintId 主键strSn 编号strName 姓名intAge  年龄strSex  性别(T:男,F:女)gradeId 所属年级create table db.tblStudent(intId int generated by default as identity primary key,strSn varchar(20) not null,strName varchar(50) not null,intAge int default 18,strSex char(1),gradeId int)@insert into db.tblStudent(strSn,strName,intAge,strSex,gradeId) values('101','张三',10,'T',4)@insert into db.tblStudent(strSn,strName,intAge,strSex,gradeId) values('102','李四',11,'F',5)@insert into db.tblStudent(strSn,strName,intAge,strSex,gradeId) values('103','王五',12,'T',3)@insert into db.tblStudent(strSn,strName,intAge,strSex,gradeId) values('104','冯六',13,'F',2)@课程表:db.tblClassintId   主键strSn编号strName  课程名称bookName 教材名称create table db.tblClass(intId int generated by default as identity primary key,strSn varchar(20) not null,strName varchar(50) not null,bookName varchar(50))@insert into db.tblClass(strSn,strName,bookName) values('201','Java基础','Java大学简明教程')@insert into db.tblClass(strSn,strName,bookName) values('301','数据库基础','DB2教程')@insert into db.tblClass(strSn,strName,bookName) values('401','Java Web 基础','Tomcat&JSP深入浅出')@成绩表:db.tblScoreintId 主键studentId 学生idcourseId 课程idbdNum 分数create table db.tblScore(intId int generated by default as identity primary key,studentId int not null,courseId int not null,bdNum float)@insert into db.tblScore(studentId,courseId,bdNum) values(1,1,80)@insert into db.tblScore(studentId,courseId,bdNum) values(1,2,90)@insert into db.tblScore(studentId,courseId,bdNum) values(1,3,85)@insert into db.tblScore(studentId,courseId,bdNum) values(2,1,88)@insert into db.tblScore(studentId,courseId,bdNum) values(2,2,92)@insert into db.tblScore(studentId,courseId,bdNum) values(2,3,86)@insert into db.tblScore(studentId,courseId,bdNum) values(3,1,70)@insert into db.tblScore(studentId,courseId,bdNum) values(3,2,50)@insert into db.tblScore(studentId,courseId,bdNum) values(3,3,65)@4.2更改授权如何更改授权:db2 connect to mydbdb2 grant dbadm on database to user db2admin4.3 查看表结构describe table db.tblStudent@describe table db.tblStudent show detail@4.4删除表create table db.tblDemo(intId int)@drop table db.tblDemo@4.5插入数据insert into table_Name values(value1,value2)insert into table_Name(col1,col2) values(value1,value2)4.6修改记录update table_name set col1=value1 where col2=value把所有学生的分数减去2:update db.tblScore set bdNum=bdNum-24.7删除记录删除针对整行记录,不能删除某个列insert into db.tblGrade(strSn,strName)  values('108','八年级')@select * from db.tblGrade@delete from db.tblGrade where strSn='108'@修改数据,删除数据都要小心,删除之前,先select 查看一下,你的条件作用的范围, 是否是你要修改或删除的范围。4.8查询记录4.8.1:select * from db.tblGrade@ 查询所有列,所有 数据4.8.2:select strName from db.tblGrade@   查询部分列或特定列,所有数据4.8.3:select strName from db.tblGrade where strSn='001'@   查询部分列,部分数据4.8.4:where 后面条件可以有:>,<,=,<>,in,not in ,between and ,and ,or,likelike包括'%XX%'或'?XX',?号代表一个字符,%代表任意多个字符4.8.5:排序asc:升序,desc:降序,select * from db.tblGrade order by strSn desc@4.8.6:聚合函数sum,max,min,count,avgselect max(intAge) from db.tblStudent @需要查出年龄最大的学生记录。select * from db.tblStudent where intAge  in(select max(intage) from db.tblStudent)@4.8.7:子查询条件里面还有一个查询4.8.8:数字函数abs,ceil(),floor,rand(),4.8.9:联合查询,union查询出性别为'T'的学生select strSn,strName from db.tblStudent where strSex='T'@查询出性别为'F'的学生select strSn,strName from db.tblStudent where strSex='F'@使用union进行联合出一个结果集:select strSn,strName from db.tblStudent where strSex='T'unionselect strSn,strName from db.tblStudent where strSex='F'@分类汇总,可以采用此种把不同类汇总进行联合输出。把年级编号,年级名称中的记录与学生中的编号,与姓名进行联合输出.select strSn,strName from db.tblGradeunion select strSex,strName from db.tblStudent符合联合的三个要求:1.列的个数要相等2.列的类型要一致3.列的名称要一致,如果不一致,可以采用as进行转换4.8.10分组group by 把相同类型进行分组汇总:按性别进行统计学生个数,select strSex,count(*) from db.tblStudent group by strSex@出现在查询中的列,必须为group by后面的列或聚合倒数列,但是出现在group by 后面的列,可以不出现在查询结果列中。select count(*) from db.tblStudent group by strSex@4.8.11:having是指在分组group by 以后相关进行过滤。在学生表中插入一条记录,为了性别不同的个数不一样:insert into db.tblStudent(strSn,strName,intAge,strSex,gradeId) values('106','吴七',13,'F',2)@select strSex,count(*) from db.tblStudent group by strSexhaving count(*) >2 @4.8.12:where,group by ,having,order by 等几种关系where >group by >having >order by select strSex,count(*) from db.tblStudent where intId>1group by strSexhaving count(*)=3order by strSex4.9多表查询查询出学生记录中所在年级的中文名称.select strName,gradeId from db.tblStudent@select db.tblstudent.strName studentname,db.tblGrade.strname gradename from db.tblstudent,db.tblgrade where db.tblstudent.gradeid=db.tblgrade.intid@ 表的别名:select s.strName,g.strName from db.tblStudent s,db.tblGrade gwhere s.gradeId=g.intId列的别名:select s.strName as 学生姓名,g.strName as 年级名称from db.tblStudent s,db.tblGrade gwhere s.gradeId=g.intId4.9.1内连接,inner joinselect s.strName,g.strName from db.tblStudent sinner join db.tblGrade g on s.gradeId=g.intId外连接:左连接,右连接,全连接4.9.2左连接 left join on查询年级表没有没有学生的记录。select g.strName,s.strName from db.tblGrade gleft join db.tblStudent s on g.intId=s.gradeId4.9.3右连接:right join on 查询年级表没有没有学生的记录。select g.strName,s.strName from db.tblGrade gright join db.tblStudent s on g.intId=s.gradeId下面的SQL语句实现功能与上述4.9.2左连接一致。select g.strName,s.strName from db.tblStudent sright join db.tblGrade g on g.intId=s.gradeId4.9.4全连接:full outer join on 在学生表插入一个没有对应年级的学生记录insert into db.tblStudent(strSn,strName,intAge,strSex,gradeId) values('109','蔡八',11,'F',20)@select g.strName,s.strName from db.tblStudent sfull outer join db.tblGrade g on g.intId=s.gradeId六、数据库备份与恢复(一)、单表:e:mkdir tmpcd tmpdb2cmd导出:export 1.命令行方式导出db2 export to student.xls of del messages msg.txt select * from db.tblStudnet2.采用gui方式导出db2cc导入:import db2 import from student.xls of del messages msgImport.txt insert into db.tblstudent采用gui方式导入db2cc(二)、整库的导入与导出db2move:e:cd 2013mkdir mydbcd mydbdb2move export导出:db2move mydb export -u db2admin -p 123 -sn dbsn:选项后面为模式名:dbdb2move mydb export -u db2admin -p 123 -sn db -awaw:如果没有指定aw,那么产生的警告的表将不会出现在db2move.lstdb2move import 导入:create database mydbnew db2move mydbnew import -u db2admin -p 123作业:1.完成课堂上讲课练习2.完成如下查询:2.1求每一个班有多少个学生?显示如下列名及字段:年级名称,人数 select g.strName,count(s.intId) from  db.tblGrade g left join  db.tblStudent s on s.gradeId=g.intId group by g.strName2.2课程平均分大于86的记录?显示如下列名与字段:课程名称,教材名称,平均分select c.strname,c.bookname,avg(s.dbnum) from db.tblClass c inner join db.tblScore s on c.intid=s.courseid group by c.strname,c.bookname having avg(s.dbnum)>862.3显示学生表中所有字段,字段列名为中文名称。2.4显示学生表与年级表中如下字段:学生姓名,学生编号,年级名称2.5显示学生表中如下字段:性别,人数3.复习java基础中面向对象开发的概念:class,interfacel,extends,implements,override,overload4.预习jdbc编程部分,包括:4.1jdbc连接的几种类型4.2jdbc常用接口所在包名4.3尝试使用jdbc技术把今天学生表中db.tblStudent中的记录显示出来。一般不建议使用多个表查询时,使用where 一般使用连接:比如inner join select a.intId,a.strName,b.strNamefrom db.tblA ainner join db.tblB b on a.intId=b.intIdinner join db.tblC c on b.intId=c.intIdinner join db.tblD d on a.gradeId=d.intIdwhere a.intId>1002013-08-27复习:cmddb2cmde:cd 2013db2 start 启动数据库实例db2 list db directory 查看此实例下面的数据库db2 connect to mydb user db2admin using 123 连接到要访问操作的数据库db2 list tables schema for db 查看模式db下面的所有表db2 -td@ 进入交互式db2操作控制台--说明自增可分为:always和default,如果always,则不能手工指定值,如果是default可以手工指定值。create table db.tblDemo(intId int generated by default as identity primary key,strName varchar(50) not null,strAddress varchar(100),intAge int default 18)@create table db.tblDemoNew(intId int generated always as identity primary key,strName varchar(50) not null,strAddress varchar(100),intAge int default 18)@insert into db.tblDemo values(100,'张三','南京大厂',20)@insert into db.tblDemo(strName,strAddress,intAge) values('李四','南京江宁',28)@insert into db.tblDemo(strName,strAddress) values('王五','北京长城')@显示一下当前所有的记录select * from db.tblDemo 更新把李四的年龄减少一岁update db.tblDemo set intAge=intAge-1 where strName='李四'@显示一下当前所有的记录,查看是否已更新select * from db.tblDemo 删除年龄大于30的记录delete from db.tblDemo where intAge>30 @显示一下当前所有的记录,查看是否已删除select * from db.tblDemo 退出交互式db2操作控制台quit@ 第二部分:Jdbc编程技术 数据持久层技术:1.jdbc 2.jdbcTemplate,DBUtils3.mybatis(ibatis) orm半自动化技术,把sql语句写入一个xml配置文件中进行统一管理,也是对数据库访问封装。4.hibernate orm5.jpa6.spring data jpaTWP:mybatis+spring data jpa一、准备环境准备目录 e:cd 2013mkdir javaTestcd javaTest检查java环境:javajavacJAVA_HOME(使用set命令检查是否有JAVA_HOME 目录)检查是否可正常执行java程序set JAVA_HOME=path里面是否有%JAVA_HOME%\bin这个目录 二、测试连接 DB21.建立一个Java类,JdbcTest.java:notepad++  JdctTest.javapublic class JdbcTest{public static void main(String[] args){System.out.println("JdbcTest in here!");}}javac  JdbcTest.javajava JdbcTest2.连接数据库的步骤:2.1.加载驱动Class.forName("");2.2.得到连接 conDriverManager.getConnection("","","");2.3.生成Statement stmtcon.creasteStatement();2.3.1此处也可以使用预处理sql, PreparedStatement2.4.得到结果集ResultSet rststmt.executeQuery(strSQL);2.5.执行insert ,update, delete等数据更新操作采用stmt.executeUpdate(strSQL);2.6.返回结果集的处理使用while(rst.next()){rst.getString(1)或rst.getString("列名");}2.7.关闭结果集,关闭statment,关闭连接conrst.close()stmt.close();con.close();3.实现数据库连接Class.forName("");DriverManager.getConnection("jdbc:db2:mydb","db2admin","123");4.显示数据while(rst.next()){rst.getString(1)或rst.getString("strSn");}5.插入数据,两种使用5.1使用Statmentcon.createStatement();stmt.executeUpdate(strSQL);5.2使用PreparedStatmentcon.prepareStatement(strSQL);pstmt.setString(1,"ddd");...pstmt.executeUpdate()6.修改数据7.删除数据三、事务控制con.setAutoCommit(false);//默认为truecon.commit();//提交事务con.rollback();//回滚事务try{con.setAutoCommmit(false);insert into db.tblOrder//插入主档insert into db.tblOrderItem//插入明细档con.commit();}catch(SQLException sqle){con.rollback();}第三部分:综合练习采用面向对象思想,使用jdbc技术,实现用户资料管理的(实体类名:UserVO,数据表:db.tblUser,字段列表如下:intId int generated  by default as identity , //主键strSn varchar(10) not null //用户编号strName varchar(50) not null //用户姓名strAddress varchar(100) //家庭地址strSex char(1) //性别:T:男,F:女intAge int default 18 //年龄,默认18bdSalary decimal(7,2) default 1800 //工资)实现用户资料的添加,更新,删除(按用户id),查询(按用户编号或姓名查询)的模块开发,用户数据存储至数据库或文件中,可通过配置选项进行设置;CRUD:1.MVC模式Model:模型层,一般为javabean,符合一定规范的java class,一个是必须默认构造函数,set,get方法符合要求实现属性的封装与访问。UserVO.javaView:显示层可以使用jsp,html等来显示,此处使用console,控制台Control:控制层,在java web传统采用servlet,一般不是webwork2,springmvc,struct2等基本都是对servlet进行了封装,便于实现 控制层,我们这里采用普通的java class.2.DAO模式Data Acess Object(DAO)访问接口:add()update()delete()query()比如:UserDao那实现为:UserDaoImpl3.分析需要做什么?实现crud添加:根据用户输入的资料添加用户信息更新:根据输入的资料更新用户信息,如果没有输入信息,则以原数据为准。删除:先列出所有记录,根据记录中Id来输入,并删除输入的id的数据.查询:输入用户工号或用户姓名查询符合条件的所有用户资料。4.如何去设计呢?采用MVC和DAO模式相结合,三层架构模式Model:UserVOView:控制台输出Control:普通的java class5.如何实现相关功能5.1先规划项目的目录 存储结构规划一个项目物理目录结构:建立一个项目文件夹,叫:MyUserPrjdocbinmainsrcmodelviewcontroldaoserviceconfiglib规划逻辑上面的结构:包括如何命名包?com.nisco.user.modelcom.nisco.user.viewcom.nisco.user.controlcom.nisco.user.daocom.nisco.user.service准备各个目录下初始文件:lib,增加db2的java jar包复制:D:\IBM\SQLLIB\java\db2java.zip并把db2java.zip改名为:db2java.jar6.把需要的数据库表结构创建出来db2startdb2cmddb2 -td@connect to mydb user db2admin using 123@drop table db.tblUser@create table db.tblUser(intId int generated  by default as identity , strSn varchar(10) not null ,strName varchar(50) not null ,strAddress varchar(100) ,strSex char(1) ,intAge int default 18 ,bdSalary decimal(7,2) default 1800)@insert into db.tblUser(strSn,strName,strAddress,strSex,intAge,bdSalary) values('012169','孙安俊','南京大厂','T',18,2900)@insert into db.tblUser(strSn,strName,strAddress,strSex,intAge,bdSalary) values('011101','祥祥','南京大厂','T',24,5200)@select * from db.tblUser@7.开发创建一个DBUtil类,用于创建Connection8.开发一个UserClientUserClient.java9.目录.:代表当前目录..:代表上一级目录../../:代表上上级目录。10.实现界面交互UserMenu.java使用System.out.prinltn("");11.实现用户输入数据:作业完成今天上课的练习完成综合练习中的用户资料管理中的其他功能包括更新 删除 查询 中实现用户输入工号或姓名,按输入的条件查询结果出来完善在新增资料室的数据其他检查项比如:薪水必须大于1200实现用户编号(工号strSn)以6位流水号,增加的功能比如:数据库现在最大的工号为:012186下一个编号:012189在下一个编号为:012190 思路找出数据库中tblUser表中字段strSn当前最大值把最大值加1,则进行格式化成6为数字,前面不足6为,增加0,表示把得到的编号进行显示并赋值。

 

0 0
原创粉丝点击