1.Mysql数据库学习笔记
.frm是指表文件
.MYD是指数据文件
两个文件组合形成二维表
SQL语句可以多行或者单行书写,以分号结尾。
单行注释:-- 需要加空格 否则会报错 #号注释(mysql特有)
1.1SQL分类
- DDL:数据定义语言,用来定义数据库对象:数据库,表,列等
- DML:数据库操作语言,用来对数据库中表的数据进行增删改
- DQL:数据库查询语言,用来查询数据库中表的记录(数据)
- DCL:数据库控制语言,用来定义数据库中的访问权限和安全级别及创建用户
查看当前使用数据库:select database()。
查询书数据库中有无表:show tables
查看表的结构:desc func
SQL数据类型图
实例:score double(总长度,小数点后保留的位数)0-100.2 score double(5.2)最大三位数加小数两位等于5
-
1.2修改表
- 修改表名ALTER table 表名 rename to 新的表名
- 添加一列 ALTER table 表名ADD 列名 数据类型
- 修改数据类型 ALTER table 表名 modify 列名 新数据类型
- 修改列名和数据类型ALTER table 表名 change 列名 新列名 新数据类型
- 删除列 ALTER table 表名 drop 列名
- 聚合函数中null的值不参与运算
1.3分组查询
- 查询男女同学各自的平均分
select sex,avg(math) from stu group by sex;//性别分组
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
2.where和having 区别:
执行时机不一样: where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。。可判断的条件不一样: where不能对聚合函数进行判断,having可以。
执行顺序: where >聚合函数> having
1.4分页查询
分页查询语法
select 字段列表 from 表名 limit 起始索引 ,查询条目数 ;
起始索引:从0开始
计算公式:起始索引=(当前页码-1)*每页显示的条数
tips:
- 分页查询limit是MySQL数据库的方言
- Oracle分页查询使用rownumber
- SQL Server分页查询使用top
2.1事务
数据库的事务:是一种机制,一个操作序列,包含了一组数据库操作命令。
事物把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。
事物是一个不可分割的工作逻辑单元。
事务的四大特征
- 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
- 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
-
隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
-
持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
3.JDBC
jdbc:Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。
3.1JDBCAPI
1.DriverManger(驱动管理类)作用:1.注册驱动 2.获取数据库连接
是一个工具类,里面全是静态方法,类型加点调用方法。
url:固定句式(jbdc:mysql//ip地址(域名):端口号)/数据库名称&参数键值对1&参数键值对2....
细节
2.Connection(数据库连接对象)作用:1.获取执行SQL对象 2.管理事务
3.Statement作用:执行SQL语句
4.ResultSet(结果集对象)作用:1.封装了DQL查询语句的结果(一张表加一个箭头(游标:会默认指在数据的上一行))
5.PrepareStatement(继承自Statement)作用:1.预编译SQL语句并执行:预防SQL注入问题。
SQL注入:SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
使用方法:
图中sql查询语句中?是占位符,需要设置对应的值。
6.PrepareStatement原理
预编译默认关闭,需要输入上方绿色代码进行开启!
7.数据库连接池
快捷键:alt+鼠标左键;整列编辑
在实体类中,基本数据类型建议使用其对应的包装类型