mysql数据库学习笔记

mysql数据库

  1. show databases

    ​ 展示数据库

  2. 数据类型

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的区别
MYISAMINNODB
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间的大小较小较大约为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 NULLA IS NULL如果操作符为null,结果为真
IS NOT NULLA IS NOT NULL如果操作符为not null,结果为真
between anda between b结果都是布尔值
likea 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. 信息重复

  2. 更新异常

  3. 插入异常

    (1)无法正常显示信息

  4. 删除异常

(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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

惜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值