• java基础笔记


    第一部分:DB2基础知识
    一、复习
    jre
    jdk
    jvm
    path
    classpath
    二、数据库基础-DB2
    1.访问172.18.60.14/
    temp
    123
    2.安装检查
    db2cmd
    db2start
    3.正式安装
    安装路径:
    D:IBMSQLLIB
    用户名:db2admin
    密码:123
    
    设置为Administrator为登录用户:
    lusrmgr.msc
    
    如果不能安装,则使用解压工具把
    
    4.安装后检查
    4.1路径检查
    D:DB2,如果安装了示例数据库db2exc_974_WIN_x86.exe,解压出来后,使用:db2exc_974_WIN_x86.exedb2WindowsDB2 Express-C.msi
    D:IBMSQLLIB
    右下角的启动小图标,设置不自动启动
    4.2服务组件
    services.msc
    control->
    4.3服务设置
    为手动启动
    登录为本地账户
    4.4实例的相关操作
    cmd
    db2cmd
    db2start 启动当前实例
    db2stop 停止 当前实例
    服务开发以后,其他db2客户端可以被访问机器。
    db2admin start 
    db2admin stop
    三、相关windows命令操作
    cmd
    cd
    cd ..
    cd 
    盘:切换盘符
    rd
    mkdir
    del
    dir
    rename
    copy
    tree
    lusrmgr.msc
    notepad
    cls
    mspaint
    services.msc
    regedit
    path
    control
    type
    exit
    help
    四、数据库db2使用
    system->instacne->database->tablspace->tables,index,views,trrigers,schema
    (一)实例创建
    1.查看实例
    dbilist
    2.创建实例
    db2icrt instacne_name
    db2icrt erp
    3.设置当前使用实例
    set DB2INSTANCE=erp
    4.删除实例
    db2idrop instacne_name
    db2idrop 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 mydb
    
    db2 select schemaname,owner from syscat.schemata
    
    2.创建模式schema:
    显示创建:
    db2 create schema schema_name
    隐式创建:
    db2 create talbe dbnew.tblUser(intId int)
    删除模式:
    db2 drop schema dbnew restrict
    E:2013>db2 drop schema dbnew restrict
    DB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
    SQL 处理期间,它返回:
    SQL0478N  不能对对象类型 "SCHEMA" 执行 DROP、ALTER、TRANSFER OWNERSHIP 或
    REVOKE,因为它有一个类型为 "TABLE" 的从属对象 "DBNEW.TBLUSER"。  SQLSTATE=42893
    db2 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 ? list
    db2 ? options
    3.创建数据表
    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编程,尝试访问连接db2
    
    2013-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.tblStudent
    intId 主键
    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.tblClass
    intId   主键
    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.tblScore
    intId 主键
    studentId 学生id
    courseId 课程id
    bdNum 分数
    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 mydb
    db2 grant dbadm on database to user db2admin
    
    4.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-2
    4.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,like
    like包括'%XX%'或'?XX',?号代表一个字符,%代表任意多个字符
    4.8.5:排序
    asc:升序,desc:降序,
    select * from db.tblGrade order by strSn desc@
    4.8.6:聚合函数
    sum,max,min,count,avg
    select 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'
    union
    select strSn,strName from db.tblStudent where strSex='F'@
    
    分类汇总,可以采用此种把不同类汇总进行联合输出。
    把年级编号,年级名称中的记录与学生中的编号,与姓名进行联合输出.
    select strSn,strName from db.tblGrade
    union 
    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 strSex
    having 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>1
    group by strSex
    having count(*)=3
    order by strSex
    4.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 g
    where s.gradeId=g.intId
    
    列的别名:
    select s.strName as 学生姓名,g.strName as 年级名称
    from db.tblStudent s,db.tblGrade g
    where s.gradeId=g.intId
    
    4.9.1内连接,inner join
    select s.strName,g.strName 
    from db.tblStudent s
    inner join db.tblGrade g on s.gradeId=g.intId
    
    外连接:左连接,右连接,全连接
    4.9.2左连接 left join on
    查询年级表没有没有学生的记录。
    select g.strName,s.strName 
    from db.tblGrade g
    left join db.tblStudent s on g.intId=s.gradeId
    
    4.9.3右连接:right join on 
    查询年级表没有没有学生的记录。
    select g.strName,s.strName 
    from db.tblGrade g
    right join db.tblStudent s on g.intId=s.gradeId
    
    下面的SQL语句实现功能与上述4.9.2左连接一致。
    select g.strName,s.strName 
    from db.tblStudent s
    right join db.tblGrade g on g.intId=s.gradeId
    
    4.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 s
    full outer join db.tblGrade g on g.intId=s.gradeId
    
    六、数据库备份与恢复
    (一)、单表:
    e:
    mkdir tmp
    cd tmp
    db2cmd
    
    导出:export 
    1.命令行方式导出
    db2 export to student.xls of del messages msg.txt select * from db.tblStudnet
    2.采用gui方式
    导出
    db2cc
    导入:import 
    db2 import from student.xls of del messages msgImport.txt insert into db.tblstudent
    采用gui方式
    导入
    db2cc
    (二)、整库的导入与导出
    db2move:
    e:
    cd 2013
    mkdir mydb
    cd mydb
    db2move export导出:
    db2move mydb export -u db2admin -p 123 -sn db
    sn:选项后面为模式名:db
    db2move mydb export -u db2admin -p 123 -sn db -aw
    aw:如果没有指定aw,那么产生的警告的表将不会出现在db2move.lst
    
    db2move 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.strName
    2.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)>86
    
    2.3显示学生表中所有字段,字段列名为中文名称。
    2.4显示学生表与年级表中如下字段:学生姓名,学生编号,年级名称
    2.5显示学生表中如下字段:性别,人数
    
    3.复习java基础中面向对象开发的概念:class,interfacel,extends,implements,override,overload
    4.预习jdbc编程部分,包括:
    4.1jdbc连接的几种类型
    4.2jdbc常用接口所在包名
    4.3尝试使用jdbc技术把今天学生表中db.tblStudent中的记录显示出来。
    
    一般不建议使用多个表查询时,使用where 
    一般使用连接:比如inner join 
    
    select a.intId,a.strName,b.strName
    from db.tblA a
    inner join db.tblB b on a.intId=b.intId
    inner join db.tblC c on b.intId=c.intId
    inner join db.tblD d on a.gradeId=d.intId
    where a.intId>100
    
    2013-08-27
    复习:
    cmd
    db2cmd
    e:
    cd 2013
    db2 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,DBUtils
    3.mybatis(ibatis) orm半自动化技术,把sql语句写入一个xml配置文件中进行统一管理,也是对数据库访问封装。
    4.hibernate orm
    5.jpa
    6.spring data jpa
    
    TWP:mybatis+spring data jpa
    一、准备环境
    准备目录 
    e:
    cd 2013
    mkdir javaTest
    cd javaTest
    检查java环境:
    java
    javac
    JAVA_HOME(使用set命令检查是否有JAVA_HOME 目录)
    检查是否可正常执行java程序
    set JAVA_HOME=
    path里面是否有%JAVA_HOME%in这个目录 
    二、测试连接 DB2
    1.建立一个Java类,JdbcTest.java:
    notepad++  JdctTest.java
    public class JdbcTest{
    	public static void main(String[] args){
    		System.out.println("JdbcTest in here!");
    	}
    }
    javac  JdbcTest.java
    java JdbcTest
    
    2.连接数据库的步骤:
    2.1.加载驱动
    Class.forName("");
    2.2.得到连接 con
    DriverManager.getConnection("","","");
    2.3.生成Statement stmt
    con.creasteStatement();
    2.3.1此处也可以使用预处理sql, PreparedStatement
    
    2.4.得到结果集ResultSet rst
    stmt.executeQuery(strSQL);
    2.5.执行insert ,update, delete等数据更新操作采用
    stmt.executeUpdate(strSQL);
    2.6.返回结果集的处理使用
    while(rst.next()){
    	rst.getString(1)或rst.getString("列名");
    }
    2.7.关闭结果集,关闭statment,关闭连接con
    rst.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使用Statment
    con.createStatement();
    stmt.executeUpdate(strSQL);
    5.2使用PreparedStatment
    con.prepareStatement(strSQL);
    pstmt.setString(1,"ddd");
    ...
    
    pstmt.executeUpdate()
    
    6.修改数据
    
    7.删除数据
    
    三、事务控制
    con.setAutoCommit(false);//默认为true
    con.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 //年龄,默认18
    bdSalary decimal(7,2) default 1800 //工资
    )
    实现用户资料的添加,更新,删除(按用户id),查询(按用户编号或姓名查询)的模块开发,用户数据存储至数据库或文件中,可通过配置选项进行设置;
    CRUD:
    1.MVC模式
    Model:模型层,一般为javabean,符合一定规范的java class,一个是必须默认构造函数,set,get方法符合要求实现属性的封装与访问。
    UserVO.java
    
    View:显示层可以使用jsp,html等来显示,此处使用console,控制台
    
    Control:控制层,在java web传统采用servlet,一般不是webwork2,springmvc,struct2等基本都是对servlet进行了封装,便于实现 控制层,我们这里采用普通的java class.
    
    2.DAO模式
    Data Acess Object(DAO)
    访问接口:
    add()
    update()
    delete()
    query()
    比如:UserDao
    那实现为:UserDaoImpl
    
    3.分析需要做什么?实现crud
    添加:根据用户输入的资料添加用户信息
    更新:根据输入的资料更新用户信息,如果没有输入信息,则以原数据为准。
    删除:先列出所有记录,根据记录中Id来输入,并删除输入的id的数据.
    查询:输入用户工号或用户姓名查询符合条件的所有用户资料。
    
    4.如何去设计呢?
    采用MVC和DAO模式相结合,三层架构模式
    Model:UserVO
    View:控制台输出
    Control:普通的java class
    
    5.如何实现相关功能
    5.1先规划项目的目录 存储结构
    规划一个项目物理目录结构:
    建立一个项目文件夹,叫:MyUserPrj
    doc
    bin
    main	
    	src	
    		model
    		view
    		control
    		dao
    		service
    	config
    lib
    
    规划逻辑上面的结构:包括如何命名包?
    com.nisco.user.model
    com.nisco.user.view
    com.nisco.user.control
    com.nisco.user.dao
    com.nisco.user.service
    
    准备各个目录下初始文件:
    lib,增加db2的java jar包
    复制:D:IBMSQLLIBjavadb2java.zip
    并把db2java.zip改名为:db2java.jar
    
    6.把需要的数据库表结构创建出来
    db2start
    db2cmd
    db2 -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类,用于创建Connection
    
    8.开发一个UserClient
    UserClient.java
    
    9.目录
    .:代表当前目录
    ..:代表上一级目录
    ../../:代表上上级目录。
    
    10.实现界面交互
    UserMenu.java
    使用System.out.prinltn("");
    
    11.实现用户输入数据:
    
    
    
    
    作业
    完成今天上课的练习
    完成综合练习中的用户资料管理中的其他功能
    包括更新 删除 查询 中实现用户输入工号或姓名,按输入的条件查询结果出来
    
    完善在新增资料室的数据其他检查项
    比如:薪水必须大于1200
    
    实现用户编号(工号strSn)以6位流水号,增加的功能
    比如:数据库现在最大的工号为:012186
    下一个编号:012189
    在下一个编号为:012190
     
    思路
    找出数据库中tblUser表中字段strSn当前最大值
    把最大值加1,则进行格式化成6为数字,前面不足6为,增加0,表示
    
    把得到的编号进行显示并赋值。
    
  • 相关阅读:
    Linux学习总结(18)——Linux使用init命令关机、重启、切换模式
    iOS autorelease使用详解
    iOS xib的使用详解
    iOS ASI--缓存
    iOS ASI--其他用法
    iOS ASI--管理多个请求
    iOS ASI--文件上传
    iOS ASI--文件下载
    iOS ASI--POST请求
    iOS ASI--GET请求
  • 原文地址:https://www.cnblogs.com/shoneworn/p/3288311.html
Copyright © 2020-2023  润新知