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();