黑马程序员技术交流社区

标题: [石家庄校区]]avaWEB08-MySQL表操作 [打印本页]

作者: 赵小光    时间: 2017-11-26 23:06
标题: [石家庄校区]]avaWEB08-MySQL表操作
扩展
框架扩展
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...







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2