mysql数据库
-
show databases
展示数据库
-
数据类型
tinyint:一个字节
smallint:两个字节
mediumint:三个字节
int:四个字节
bigint:8个字节
decimal:字符串形式的浮点数,金融计算的时候·,一般使用decimal
varchar:可变的字符串,0~65535 常用的String
text:文本串,2的16次方-1
tinytext:微型文本,2的8次方-1
date:日期格式
time:时间格式
datetime:时间日期(最常用)
字段属性
unsigned:无符号的整数且不能为负数
zerofill:位数不够时使用0来进行填充
desc student :显示表的结构
修改
alter table 旧表名 rename as 新表名
alter table 表名 modify 字段 varchar(11)//改变表中字段的约束(不可重命名)
change:字段可重命名
INNODB和MYISAM的区别
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大约为2倍 |
常规使用操作:
MYISAM:节约空间,速度较快(继续从上一个自增量开始(存在文件中的,不会丢失)
INNODB:安全性高,事务的处理,多表多用户操作,自增会从1开始,因为(存在内存当中,断电即失去)
TRUNCATE:完全清空一个数据库表,表的结构和索引约束不会变。
truncate+表名
delete和truncate的相同点和不同点:
相同点:都能够删除数据,但不会删除表的结构和索引约束。
不同点:delete不会影响自增,truncate会归零,不会影响事务。
查询
select concat(‘姓名’:,studentName)As ’新名字‘
concat函数:字符串拼接
去重:distinct
select distinct …from…(去掉重复的)
select version:查询系统版本(函数)
select 100*3-1 as 计算结果 用来计算
select auto _increment :查询自增的变量
select … +1 as …使用把所有数据结果+1
逻辑运算符
运算符 | 语法 | |
---|---|---|
and && | a and b a&& b | |
or || | a or b a||b | |
not ! | not a !a |
where not studentName =‘李四’
模糊查询
运算符 | 语法 | 描述 |
---|---|---|
IS NULL | A IS NULL | 如果操作符为null,结果为真 |
IS NOT NULL | A IS NOT NULL | 如果操作符为not null,结果为真 |
between and | a between b | 结果都是布尔值 |
like | a like b | 结果都是布尔值 |
in(是具体的值) | a in(1,2,3) | 结果都是布尔值 |
%代表很多字符
_代表一个字符
刘%姓刘就行,刘_名字是以刘开头,且名字只有两个字
联表查询
select … from student as s
INNER JOIN result as r
where s.id=r.id
select … from student s
RIGHT/INNER/LEFT JOIN result r
ON s.id=r.id
RIGHT/INNER/LEFT JOIN subject sub
ON sub.id=s.id
where
group by
having(和where类似,位置不一样)
ORDER BY … DESC(降序)/ASC(升序)
limit 0,10
INNER JOIN (联接的表)ON (条件判断) 连接查询
操作 | |
---|---|
LEFT JOIN | 如果表中至少有一个匹配,会从左表中返回所有的值,即使右表中没有匹配 |
RIGHT JOIN | 如果表中至少有一个匹配,会从右表中返回所有的值,即使左表中没有匹配 |
INNER JOIN | 如果表中至少有一个匹配,就返回行 |
分页和排序
order by
升序:ASC
降序:DESC
分页:limit 0(起始值),5(页面大小,pagesize)
为什么使用分页查询?
缓解数据库压力,给人的体验更好
limit 1,5
pagesize:代表页面大小
n-1*pagesize=当前值,起始值
n:当前页
where子查询
由内及外
select …
from …
where 条件语句(
select … from …
)
常见函数
ABS :绝对值
ceiling:向上取整
FLOOR:向下取整
RAND:去一个0~1之间的随机数
SIGN:判断一个数的符号负数返回-1,正数返回1
char_length:字符串长度
concat:字符串连接
count
count():会自动忽略null值
count(*):不会忽略null值
count(1):不会忽略null值
MD5
MD5:不可逆
事务
要么都成功,要么都失败
转账,要么成功接收,成功转账。要么都不成功
事务原则:
ACID原则:
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)
事务前后数据的完整性必须保持一致。
隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
mysql是默认开启事务自动提交的
autocommit=0:关闭自动提交
autocommit=1:开启(默认是开启)
提交:持久化
失败后回滚,回到原来的样子,ROLLBACK to savepoint(保存点名)
RELEASE 释放保存点,撤销
索引
分类:
通过索引可以更快获得mysql数据库的数据
主键索引:唯一的标识,不可重复,只能有一个列作为主键
唯一索引:避免重复的列出现。唯一索引可以重复,多个列可以标识为唯一索引
常规索引:默认的,index,key关键字来设置
全文索引:FULLText
索引原则:
索引不是越多越好
不要对经常变动的数据加索引
小数据量的表不需要加索引
索引一般加载常用来查询的字段上。
索引的数据结构
Hash类型的索引:
Btree:INNODB的默认数据结构
权限管理和备份
创建用户:
create user identity by‘密码’
修改用户密码:
set password =‘新密码’
重命名:
rename user ‘原名字’to‘新名字’
授权:
GRANT ALL privileges on . 授予全部权限
查询权限:
show GRANT for ‘用户名’
drop 删除用户
备份数据防止数据丢失,方便数据转移
直接拷贝物理文件
在可视化工具中手动导出
使用命令行导出mysqldump 数据文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NCiH6ym2-1619167265069)(C:\Users\hello world\AppData\Roaming\Typora\typora-user-images\image-20210423153552692.png)]
规范数据库设计
为什么需要设计:
节省内存空间,
保证数据库的完整性,
方便我们开发系统
数据库设计
分析需求;分析业务和需要处理的数据的需求
概要设计:设计关系图(E-R图)
为什么需要数据规范化?
-
信息重复
-
更新异常
-
插入异常
(1)无法正常显示信息
-
删除异常
(1)丧失有效的信息
数据库的三大范式:
第一范式:
原子性,每列都不可再细分
第二范式:
在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
第三范式:
在第一、第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。
JDBC
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//获取用户信息
String url = "jdbc:mysql://localhost:3306/school"; //设置连接路径
String username = "root"; //数据库用户名
String password = "123456"; //数据库连接密码
//连接成功,数据库对象 Connection 代表数据库
Connection connection = DriverManager.getConnection(url, username, password);
//执行sql的对象Statement,执行sql的对象
Statement statement = connection.createStatement();
String sql = "SELECT * FROM user";
ResultSet resultSet = statement.executeQuery(sql);