zoukankan      html  css  js  c++  java
  • 2018/1/3 mysql+jdbc

    1、mysql基础
    1)mysql存储结构: 数据库 -> 表 -> 数据 sql语句
    2)管理数据库:
    增加: create database 数据库 default character utf8;
    删除: drop database 数据库;
    修改: alter database 数据库 default character gbk;
    查询: show databases / show create database 数据库;
    3) 管理表:
    选择数据库:use 数据库;
    增加: create table 表(字段名1 字段类型,字段名2 字段类型......);
    删除: drop table 表;
    修改:
    添加字段: alter table 表 add [column] 字段名 字段类型;
    删除字段: alter table 表 drop [column] 字段名;
    修改字段类型: alter table 表 modify 字段名 新的字段类型;
    修改字段名称 : alter table 表 change 旧字段名 新字段名 字段类型;
    修改表名称: alter table 表 rename [to] 新表名;
    查询:
    show tables / desc student;
    4) 管理数据:
    增加: insert into 表(字段1,字段2,。。。) values(值1,值2.。。。。);
    删除: delete from 表 where 条件;
    修改: update 表 set 字段1=值1,字段2=值2...... where 条件;
    查询:
    4.1)所有字段: select * from 表;
    4.2)指定字段: select 字段1,字段2.... from 表;
    4.3)指定别名: select 字段1 as 别名 from 表;
    4.4 )合并列: select (字段1+字段2) from 表;
    4.5)去重: select distinct 字段 from 表;
    4.6)条件查询:
    a)逻辑条件 :and(与) or(或)
    select * from 表 where 条件1 and/or 条件2
    b)比较条件: > < >= <= = <> between and(在。。。之间)
    select * from 表 where servlet>=90;
    c)判空条件:
    判断null: is null / is not null
    判断空字符串: ='' / <>''
    d)模糊条件: like
    %: 替换任意个字符
    _: 替换一个字符
    4.7 分页查询:limit 起始行,查询行数
    起始行从0开始
    4.8 排序: order by 字段 asc/desc
    asc: 正序,顺序
    desc:反序,倒序
    4.9 分组查询:group by 字段
    4.10: 分组后筛选: having 条件

    SQL语句的分类:
    DDL: 数据定义语言
    create / drop / alter
    DML:数据操作语句
    insert / delete /update / truncate
    DQL: 数据查询语言:
    select / show
    2、mysql加强
    1)数据约束(表约束)
    默认值: default 默认值
    非空: not null
    唯一: unique
    主键: primary key (非空+唯一)
    自增长: auto_increment
    外键: foreign key 约束两种表
    2)关联查询(多表查询)
    2.1 交叉连接(产生笛卡尔积:原因:连接条件不足够) 表数量-1
    2.2 内连接查询: inner join
    只有满足连接条件的数据才会显示!!!
    2.3 左【外】连接查询:left [outer] join
    左表的数据必须全部显示,用左表去匹配右表的数据,如果右表有符号条件的数据则显示符 合条件的数据;如果不符合条件,则显示null。
    2.4 右【外】连接查询: right [outer] join
    右表的数据必须全部显示,用右表去匹配左表的数据,如果左表有符号条件的数据则显示符 合条件的数据;如果不符合条件,则显示null。
    2.5 自连接查询
    3)存储过程
    -- 创建存储过程语法
    delimeter 结束符号
    create procedure 名称(IN/OUT/INOUT 参数名称 参数类型)
    begin
    带逻辑的sql语句
    end 结束符号

    --调用存储过程
    CALL 存储过程名称(实际参数);

    3、 JDBC接口核心的API
    java.sql.* 和 javax.sql.*

    |- Driver接口: 表示java驱动程序接口。所有的具体的数据库厂商要来实现此接口。
    |- connect(url, properties): 连接数据库的方法。
    url: 连接数据库的URL
    URL语法: jdbc协议:数据库子协议://主机:端口/数据库
    user: 数据库的用户名
    password: 数据库用户密码
    |- DriverManager类: 驱动管理器类,用于管理所有注册的驱动程序
    |-registerDriver(driver) : 注册驱动类对象
    |-Connection getConnection(url,user,password); 获取连接对象

    |- Connection接口: 表示java程序和数据库的连接对象。
    |- Statement createStatement() : 创建Statement对象
    |- PreparedStatement prepareStatement(String sql) 创建PreparedStatement对象
    |- CallableStatement prepareCall(String sql) 创建CallableStatement对象

    |- Statement接口: 用于执行静态的sql语句
    |- int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
    |- ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)

    |-PreparedStatement接口:用于执行预编译sql语句
    |- int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)
    |-ResultSet executeQuery() : 执行预编译的查询sql语句(DQL)

    |-CallableStatement接口:用于执行存储过程的sql语句(call xxx)
    |-ResultSet executeQuery() : 调用存储过程的方法


    |- ResultSet接口:用于封装查询出来的数据
    |- boolean next() : 将光标移动到下一行
    |-getXX() : 获取列的值/
    4、|-- DbUtils 关闭资源、加载驱动
    |-- QueryRunner 组件的核心工具类:定义了所有的与数据库操作的方法(查询、更新)
    Int update(Connection conn, String sql, Object param); 执行更新带一个占位符的sql
    Int update(Connection conn, String sql, Object… param); 执行更新带多个占位符的sql
    Int[] batch(Connection conn, String sql, Object[][] params) 批处理
    T query(Connection conn ,String sql, ResultSetHandler<T> rsh, Object... params) 查询方法


    Int update( String sql, Object param);
    Int update( String sql, Object… param);
    Int[] batch( String sql, Object[][] params)
    注意: 如果调用DbUtils组件的操作数据库方法,没有传入连接对象,那么在实例化QueryRunner对象的时候需要传入数据源对象: QueryRunner qr = new QueryRunner(ds);

    DbUtils提供的封装结果的一些对象:
    1) BeanHandler: 查询返回单个对象
    2) BeanListHandler: 查询返回list集合,集合元素是指定的对象
    3) ArrayHandler, 查询返回结果记录的第一行,封装对对象数组, 即返回:Object[]
    4) ArrayListHandler, 把查询的每一行都封装为对象数组,再添加到list集合中
    5) ScalarHandler 查询返回结果记录的第一行的第一列 (在聚合函数统计的时候用)
    6) MapHandler 查询返回结果的第一条记录封装为map

  • 相关阅读:
    Atitit.兼具兼容性和扩展性的配置方案attilax总结
    Atitit.异步编程技术原理与实践attilax总结
    Atitit.异步编程技术原理与实践attilax总结
    Atitit. 获取cpu占有率的 java c# .net php node.js的实现
    Atitit. 获取cpu占有率的 java c# .net php node.js的实现
    Atitit.研发团队的管理原则---立长不立贤与按资排辈原则
    Atitit.研发团队的管理原则---立长不立贤与按资排辈原则
    Atitit.研发团队与公司绩效管理的原理概论的attilax总结
    Atitit.研发团队与公司绩效管理的原理概论的attilax总结
    Atitit selenium3 新特性
  • 原文地址:https://www.cnblogs.com/loong996/p/8185660.html
Copyright © 2011-2022 走看看