【】数据库:product
【】人员表(users)
id int 主键(自增)
uname varchar(20) 人员名称
pwd varchar(20) 密码
sex varchar(2) 性别
age int 年龄
【】类型表(type)
tid int 主键(自增)
tname varchar(20) 类型名称
【】产品表(product)
pid int 主键(自增)
pname varchar(20) 产品名称
tid int 类型
address varchar(50) 产地
price double 价格
desc varchar(100) 产品说明
【】订单表(orders)
oid int 自增(主键)
otime datetime 订单时间
uid int 下单人员
pid int 产品编号
count int 数量
【】新增
1、把表中所有字段列出来一一赋值
insert into users(uid,uname,pwd,sex,age) values (30,'高圆圆','123','女',18);
2、插入表中某些字段
insert into users(uname,pwd) values ('小贪心','123');
3、将字段省略不写,后面按表中字段顺序一一赋值
insert into users values (null,'小心','123','男',9);
4、用一条语句插入多条数据
insert into users values (null,'王小小','123','男',9),
(null,'张小小','1233','男',9),(null,'孙小小','123','男',9);
【】修改
update users set sex='女',age=8 where uid=31;
【】删除
1、删除表中所有数据
delete from 表名;
2、删除表中某一条数据
delete from users where uid=29;
3、删除表中多条数据
delete from users where uid=33 or uid=34;
【】查询
1、查询表中所有信息
select * from product;(* 通配符,代表表中所有字段)
2、查询表中某些字段
select pname 商品名称,price as 价格,address 地址 from product;
(as起别名,可写可不写)
3、带条件查询
select pname 商品名称,price as 价格,address 地址 from product where tid=7;
4、in(包含)
select pname 商品名称,price as 价格,address 地址 from product
where pid in (1,2,3,4);
5、between……and(在什么到什么之间)
select pname 商品名称,price as 价格,address 地址 from product
where price between 588 and 699;
6、not
select pname 商品名称,price as 价格,address 地址 from product
where address is not null;
7、like(模糊查询)
select pname 商品名称,price as 价格,address 地址 from product
where address like '%北京%';(%任意字符,_代表单个字符)
8、聚合函数
select max(price) from product; (max 最大值)
select min(price) from product; (min 最小值)
select sum(price) from product; (sum 总和)
select avg(price) from product; (avg 平均值)
select count(pwd) from users; (count总行数)
9、分组
select max(price) from product group by tid;
10、having(分组之后再筛选,后面一般接聚合函数)
select max(price) from product group by tid having max(price)>500;
11、order by(排序)
select * from product order by price asc;//升序 asc可以省略
select * from product order by price desc;//降序
12、多表连接查询
【】left join 左连接
左边表中数据全部显示,右边表中与左边表中对应的数据显示,右边多的不显示,左边 有右边没有,右边显示空
【】right join右连接
select * from product right join type on product.tid=type.tid;
右边表中数据全部显示,左边表中与右边表中对应的数据显示,左边多的不显示,右边 有左边没有,左边显示空
【】inner join内连接
select * from product inner join type on product.tid=type.tid;
查询两个表中全部对应的数据
13、去重复
select distinct sex from users;
14、分页
select pname,tname,address,price,`desc` from product inner join type on product.tid=type.tid limit 5(前5条)
select pname,tname,address,price,`desc` from product inner join type on product.tid=type.tid limit 2,5(从第三条开始查5条)
limit(页码-1)*每页显示条数,每页显示条数
【】where与having:
having:分组后再次筛选,通常与group by一起使用,后一般接聚合函数。如果having 后接表中存在的字段,则该字段必须在前面查询字段中。
where:筛选,只能接表中存在的字段。
【】分类:
事务控制语言(TCL):控制事务的提交和回滚
数据库控制语言(DCL):创建用户角色、为角色分配权限等相关操作
数据定义语言(DDL):定义数据库、定义表结构、修改结构等相关操作
数据操纵语言(DML):增加数据、删除数据等对记录相关操作
【】事务处理:TCL
原子性 操作要么都成功,要么都失败。
一致性 数据库保持一致性状态。
隔离性 一个事务进行时另一个事务不能干扰。
永久性 事务一旦提交,对数据库的改变就是永久性的。
【】关闭自动提交:conn.setAutoCommit(false);
【】提交:conn.commit();
【】回滚:conn.rollback();
【】JDBC:(Java Data Base Connectivity)Java数据库连接是一种用于执行SQL语 句的Java API,为多种关系数据库提供统一访问。
可以做三件事:与数据库建立接连、发送操纵数据库的语句、处理执行结果。
【】写JDBC过程
1)静态加载驱动类。
2)获得连接。
3)获得语句对象(Statement、PreparedStatement)。
4)执行操作(sql语句)。
5)关闭语句对象、连接(查询操作关结果集),调close()方法。
【】Statement与PreparedStatement的区别
Statement:语句对象:采用字符串拼接方式,容易引起sql注入,不安全,
在多次执行时反复编译sql语句,效率低。
PreparedStatement:预编译语句对象:采用?占位,不会引起sql注入,安全,
在多次执行时只编译一次sql语句,效率高。