扩展
框架扩展
struts2 + hibernate + Spring
springMVC + mybatis(ibatis)
spring
spring - cloud
多表查询中外键维护,一对多由多的维护
services.msc启动服务界面
对表中记录的CRUD操作
插入记录
语法 insert into 表名 (列名,列名) values (值1,值2); 插入指定列的值
insert into 表名 values (值1,值2); 插入所有列的值
注意:列名个数与值个数对应
列的类型与值的类型对应,位置也要对应
列的类型是字符串或日期,写值的时候单引号引起来
插入值的最大长度不能超过列的最大长度
表记录的修改
语法
update 表名 set 列名=值 ,列名=值 where 条件 ;不加条件就是对所有数据进行修改
注意
列名与值类型一致
值不能超过列的最大长度
值是字符串或日期,用单引号
删除记录
语法 切记delete后面不加*
delete from 表 where 条件; 不加条件就是删除所有记录;
注意
删除的是一行记录,不能删除某列
没有条件删除表中的所有行
删除表中的所有记录 truncate table 表名 和delete from 表 区别?
区别:
truncate table 删除表的记录;将整个表删除,重新创建一个新的表
delete from 一条一条删除,
事务管理,只能作用在DML语句上,如果在一个事务中使用delete删除所有记录,可以找回
查询记录
语法 distinct去重
select [distinct] *|列名 from 表 [where 条件];
查询所有记录
select * from exam;
查询这个班级人的姓名和英语成绩
select name,english from exam;
查询英语成绩,将英语成绩重复的去掉
select distinct english from exam;
查询李四的成绩
select * from exam where name = '李四';
查询李四英语成绩大一90的
select * from exam where name = '李四' and english >90;
将成绩+10 分进行显示
select name , english+10,chinese+10,math+10 from exam;
显示这个人名和总成绩
select ,name,english+ chinese+math from exam;
as起别名,as 可以省略
select name,english+chinese+math as sum from exam;
条件查询
where后可以加的条件的关键字
= , > , >= , < , <= , <>
模糊查询 like可以使用占位符: _匹配一个字符 %可以匹配任意个字符
in 后跟着一组值. 查询结果不确实时候用in id in (1,2,3) id=1 or id=2 or id=3
id in (select id from table where name='zhao')
and or not
排序查询 asc(升序)默认升序 desc(降序)
order by 对数据进行排序,默认升序
聚合函数 sum计算是列的和 sum() avg() count() max() min()
统计所有学生总分 null加任何值都为null
select sum(english+chinese+math) from exam; 横着统计
ifnull('english',0)如某一列的值为空, 用0计算
select sum(english)+sum(chinese)+sum(math) from exam;竖着统计
多表设计 数据库都是关系型数据库,存的是实体之间的关系
一对多:客户和订单 , 部门和员工
多对多:学生和课程 , 订单和商品
一对一:不常使用, 公司和地址
多表的设计
一对多的关系的建表的原则 关系由多的一方维护
在多的一方创建一个字段,这个字段作为外键指向一的一方的主键.
多对多的关系的建表的原则 关系由第三方维护
创建第三张表,中间表中至少需要两个字段分别作为外键指向多对多双方的各自的主键.
一对一关系的建表原则
唯一外键对应的方式:假设一对一的双方是一对多的关系,在多的一方创建外键指向一的一方的主键,需要在外键上添加一个unique约束
主键对应,将一对一双方的主键建立映射关系
约束:用来描述数据的完整性的 多表约束:外键约束
多表查询 优先使用left join , inner join
多表查询的SQL
多表查询的方式:
交叉连接:(基本不用)select * from A,B; -- 获得是两个表的笛卡尔积
内连接:inner join -- inner 可以省略
显式内连接 select * from A inner join B on 条件
隐式内连接 select * from A,B where 条件;
外内接:outer join -- outer 可以忽略
左外连接: left outer join -- select * from A left outer join B on 条件
右外连接: right outer join -- select * from right outer join B on 条件
子查询
一个SQL语句在查询的过程中需要依赖另一个语句
分组 group by having 对分组以后的数据进行过滤的 where是对分组以前的数据进行过滤的
SQL语句查询的顺序: s...f...w...g...h...o...
|
|