java操作数据库-jdbc技术

来源:互联网 发布:fcn caffe windows 编辑:程序博客网 时间:2024/05/16 06:33

java主要专注于mysql,oracle。

打开windows“服务”,查看mysql是否启动。

win+r,运行->services.msc。

命令行启动关闭mysql:   net start mysql/net stop mysql。

命令行连接数据库 mysql -u root -p

什么是SQL语句?结构化查询语言,关系数据库语言的国际标准。

sql分类:

数据库定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库database,表table,列column等。关键字:创建create、修改alter、删除drop等。

数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:插入insert,删除delete,更新update等。

数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select、from、where等。

数据控制语言:简称DCL(Data Control Language),用于定义数据库的访问权限和安全级别,及创建用户:关键字:grant等。

创建数据库语法:

create. database. 数据库名;

create  database  数据库名   character  set  字符集

查看数据库

查看数据库服务器中的所有数据库:show  databases;

查看某个数据库的定义的信息:show  create  database  数据库名;

删除数据库

drop  database  数据库名称;

其他的数据库操作命令

切换数据库:use  数据库名;

查看正在使用的数据库:select  database();

表操作:table

创建表

craate  table  表名(

字段名  类型(长度)[约束],

字段名  类型(长度)[约束]

 );

字符类型 : varchar(n)

单表约束:

主键约束:primary key , 要求被修饰的字段:唯一和非空

唯一约束:unique , 要求被修饰的字段:唯一

非空约束:not  null , 要求被修饰的字段:非空

查看表

查看数据库中的所有表:show tables;

查看表结构:desc  表名;

删除表

drop  table  表名;

修改表

alter  table  表名  add 列名  类型(长度)  [约束];   --添加列

alter  table  表名  modify  列名  类型(长度)  [约束];  --修改列的类型长度及约束

alter  table  表名  change  旧列名  新列名  类型(长度)  [约束];  --修改列名

alter  table  表名  drop  列名;  --删除列

rename  table  表名  to  新表名; --修改表名

alter  table  表名  character  set  字符集;  --修改表的字符集

插入记录:insert

语法:

insert  into  表 (列名1,列名2,列名3)  values (值1,值2,值3);   --向表中插入某些列

insert  into  表  values  (值1,值2,值3...);  --向表中插入所有列


注意:

1、列名数与values后面的值的个数相等。

2、列的顺序与插入的值的顺序一致。

3、列名的类型与插入的值要一致。

4、插入值的时候不能超过最大长度。

5、值如果是字符串或者日期需要加引号。(一般都是单引号)

更新记录:update

语法:

update  表名  set  字段名=值,字段名=值...;

update  表名  set. 字段名=值,字段名=值...  where  条件;

注意:

1、列名的类型与修改的值要一致。

2、修改值的时候不能超过最大长度。

3、值如果是字符串或者日期需要加' '。 

删除记录: delete

语法:

delete  from. 表名  [where  条件]; 

说说delete与truncate的区别?

删除表中所有记录使用delete  from  表名;还是用 truncate  table  表名;

删除方式:delete  一条一条删除,不清空auto_increment 记录数。

truncate 直接将表删除,重新建表,auto_increment将置为0,从新开始。

事物方面:delete 删除的数据,如果在一个事务中可以找回。

truncate 删除的数据找不回来。

查询操作:

语法:

select  [distinct] *| 列名,列名  from  表名  [where  条件];

条件查询

1.查询商品名称为“左慈”的商品所有信息

select * from  product  where pname='左慈';

2.查询商品价格>60元的所有的商品信息:

select  *  from  product  where  price  > 60;

where 后的条件写法:

>,<,=,>=,<=,<>

like使用占位符_和%    _代表一个字符    %  代表任意个字符。

select  *  from  product  where  pname  like  '%新%';

in在某个范围中获得值

select  *  from  product  where  pid  in  (2,5,8);

select  *  from  product. where  pid=1  or  pid=2  or  pid=5;

排序:

格式:select  ...  order  by  字段1  asc|desc  ,  字段2  asc|desc ...

聚合:

常用的聚合函数:sum()求和,avg()平均,max()最大值,min()最小值,count()计数;  注意:聚合函数不统计null值。

分组

group  by  分组字段  having  分组条件

1.添加分类id (alter  table  product  add  cid  varchar(32);)

2.初始化数据

update  product  set  cid='1';

update  product  set  cid='2'  where  pid  in (5,6);

根据cid字段分组,分组后统计商品的个数。 select  cid, count(*)  from  product  group  by  cid;

select  avg(price)  from  product  group  by  cid  having  avg(price) > 2000;

查询总结:

select  from  where  group by  having  order  by

JDBC回顾

JDBC,Java Database Connectivity:Java数据库连接,SUN公司推出的Java访问数据库的标准规范(接口)。

1.JDBC是一种用于执行SQL语句的Java API。

2.JDBC可以为多种关系数据库提供统一访问入口。

3.JDBC由一组Java工具类和接口组成。

要开发有jdbc的程序首先得导包。建一个fold,名称lib。

单元测试 即可以单独运行main以外的方法。在方法上面输入@Before,@Test,@After 。即可根据提示导入3个包。

JDBC开发步骤:

1.注册驱动

2.获得连接

3.获得语句执行者

4.执行sql语句

5.处理结果

6.释放资源

注册驱动    代码:class.forName("com.mysql.jdbc.Driver");

获得连接    代码:  Connection  con=DriverManager.getConnection("jdbc"mysql://localhost:3306/mysql","root","123");

API详解:获得语句执行

String sql="insert  into  category(cid,cname) values ('c007','分类')";

Statement  语句执行者代码:Statement  stmt=con.createStatement();

执行SQL语句:

int  executeUpdate(String  sql);执行insert  update  delete  语句。

ResultSet  executeQuery(String  sql);执行select 语句。

执行批处理:(可选)

addBatch(String  sql);

clearBatch();

executeBatch();

ResultSet实际上就是一张二维的表格,它内部有一个“行光标”,光标默认的位置在“第一行上方”,可以调用该对象的next()方法把“行光标”向下移动一行,当第一次调用next()方法时,“行光标”就到了第一行记录的位置,这是就可以使用ResultSet提供的getXXX(int col)方法来获取指定列的数据了。

ResultSet对象.next(); //光标移动到第一行

ResultSet对象.getInt(1);//获取第一行第一列的数据。

释放资源:

与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。

rs.close();

stmt.close();

con.close();