java基础-mysql

关系型数据库

2016519

13:25

关系模型把世界看作是由实体和联系组成的。而关系型数据库是将数据库表做为实体, 以数据库表的主键和外键的关联关系描述的一种数据库结构。

一对一:一条主表记录对应一条从表记录,同时一条从表记录也对一条主表记录。

一对多:一条主表记录对应一条到多条从表记录,同时一条从表记录只对应一条主表记录

多对多:一条主表记录对应多条从表记录,同时一条从表记录对应多条主表记录

关心型数据库知识一个保存数据的容器,大多数数据库依靠一个称为数据库管理系统(Database ManagementSystem,简称DBMS)的软件来管理数据库中的数据。

SQLStructured Query Language

结构化查询语言,是一种用于管理关系型数据库,并与数据库中的数据进行通讯的计算机语言。

数据定义语言(DDL)创建、修改、删除数据的内部数据结构

数据查询语言(DQL)用于数据库中的查询

数据操作语言(DML)用于数据库中数据的修改,包括添加、删除、修改等

数据控制语言(DCL)控制数据访问权限。

PRIMARY KEY 定义当前列为主键。主键有两个特点,非空,不能重复。

AUTO_INCERMENT 设置当前列为自动增长列,由DBMS为该列分配值,确保该列的值不重复。

 

条件判断Caseshen

-- 条件判断

SELECT e.*,(CASE WHEN s_grade >= 90 THEN '大帅'

WHEN s_grade >=80 AND s_grade <90THEN '良帅'

WHEN s_grade >=60 AND s_grade <80THEN '中帅'

WHEN s_grade IS NULL THEN '缺考'

ELSE '母国平'

END

)'评价'FROM t_student1 e;

-- J122每个学生加2 T1205

UPDATE t_student1SET s_grade = (CASE

WHENs_class = 'J122' THEN s_grade+1

WHENs_class = 'T120' THEN s_grade+5

ELSEs_grade

END

);

 

使用聚合函数进行统计汇总

COUNT

统计行数量

SUM

获取单个列合计值

AVG

计算某个列的平均值

MAX

计算列的最大值

MIN

计算列的最小值

count(*)统计所有行,count(s_grade)统计某列所有非空的

 

HAVING WHERE区别

二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数。

HAVING是运行在分组后,只能用做聚合函数的过滤。

 

SQL执行顺序

分组后的SQL执行顺序

第一步:执行FROM

第二部:WHERE条件过滤

第三步:GROUP BY分组

第四步:执行select投影列

第五步:HAVING条件过滤

第六步:执行ORDER BY排序

在分组查询中,能够查询的字段,只能是分组字段和聚合函数。

添加外键约束

-- 给学生表所在班级增加外键约束

ALTER TABLEt_student ADD CONSTRAINT ys1 FOREIGN KEY(st_class)

REFERENCESt_class(cl_id );

可靠性+完整性=数据完整

1.实体完整性

保证一行数据是有效的,能够完全代表它的实体。保证每行所爱表的实体能互相区别,不能存在两条一模一样的记录

主键约束,主键是列表中的一到多个列,主键列不能为空,也不能重复。一个表中只能有一个主键

唯一约束,是指给定列的所有值必须唯一,该列表在表中每一行的值必须唯一。它和主键约束的区别在于该列可以为空,

并且可以在一张表中给多个列设置唯一约束。

1.建表时加上唯一性约束

`username`varchar(18) NOT NULL unique,

2.给已经建好的表加上唯一性约束

ALTER TABLE `t_user`ADD unique(`username`);

 

2域完整性

保证一列数据是有效的

实现方法 非空约束:Not Null  默认约束:Default 检查约束:checkmysql不支持)

sex varchar(10) default ''  -- DEFAULT表示如果该列不插入值,则值为‘男’如果插入值则以插入为值

3引用完整性 保证引用的编号是有效的

两个表之间如果存在外键约束,那么删除主表记录时,由于外键约束存在,无法删除有从表记录引用的主表记录

1)级联删除,将主表记录对应的从表记录先做删除,再删除主表记录

DELETE FROM t_roomWHERE manId=1;

DELETE FROM t_manWHERE id = 1;

 

2)外键设空, 将主表记录对应的从表记录外键设置为null,再删除主表记录

UPDATE t_room SETmanId=NULL WHERE manId=2;

DELETE FROM t_manWHERE id=2;

外键是指从表的某列与主表的某列存在依附关系

外键越是是指在外键关联主键上强制加上一个约束,如果违反约束,则不允许该条数据的修改

没有外键约束不等于没有外键

 

4.用户自定义完整性 保证自定义规则

 

子查询

内联接 是指使用比较运算符根据每个表共有的列的值匹配两个表中的行。

外联接是指不管有没有匹配,被定义了外部联接的表数据都要出现在结果中。

 

什么是JDBC  

Java DataBase Connectivity

是一种用于执行SQL语句的Java API,它是由Java语言编写的类和接口组成。是java连接数据库的一套规范,该规范中

定义了一系列的接口,由数据库厂商提供接口实现类,由开发者根据接口,调用实现类的方法。这样开发者就可以屏蔽

不同数据的差异,无论连接什么数据库,对数据做什么样的操作,都是一套API.

 

jdbc操作流程

1.加载驱动,建立连接  2.执行SQL语句   3关闭连接

dao模式: 建立实体类和数据库表做映射,也就是哪个表对应哪个类,哪个属性对应哪个列。

jdbc操作的目的就是完成对象数据和关系数据的转换。

 

StatementPreparedStatement的区别

1.Statement  PreparedStatement 的父接口

2.Statement在执行SQL语句只能拼接字符串,由于每次值不一样在执行SQL语句时都会将SQL语句重新编译,效率较低。

PreparedStatement 提供占位符方式设置值,SQL语句不用每次执行都进行编译,执行效率较高。

3.Statement在执行SQL语句时,由于采用拼接字符串方式设置值,所以容易造成SQL注入。而PreparedStatement使用

占位符方式,不论什么值都当字符串处理。不会造成SQL注入。

 

SQL注入:在执行SQL语句时,如果以拼接字符串方式设置值,那么如果在值中有SQL语句关键字或非法字符,

可能会造成执行结果不正确或执行失败的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值