1、mysql
基本操作
Windows–>Mysql5.7打开
输入用户名和密码
查看数据库 :show databases;查询所有数据库,记住一定要加分号结尾
这里必须全部为 英文空格 英文符号
选择 day4_6数据库:use day4_6;
查看这个数据库的所有表: show tables;
创建命名为westos的数据库:create databases westos;
再次查询所有的数据库:show databases;
数据库 语言 crud增删改查
DDL 定义
DML 操作
DQL 查询
DCL 控制
2、操作数据库
这里在Navicat premium中操作
2.1、创建数据库
创建一个名叫 westos的数据表:create database westos;
删除数据库
这里创建了一个day4_27的数据库
在旁边输入命令 drop databases day4_27 这里多输入了一个s 操作不成功
当命令行输入drop database day4_27;则删除成功
使用数据库
选择 westos数据库 :use day4_6;
当数据库是关键字时应该用“两个飘将他包含例如
查看表结构sql语句
show create tbale ;
粘贴的语句为:
查看数据库
只执行第二行语句 show tables 查看数据库中的所有表
2.2、数据库的类型
数值
- tinyint 非常小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节
- bigint 较大的数据 8个字节
- float 单精度浮点数 4个字节
- double 双精度浮点数 8个字节
- decimal 字符串形式的浮点数 金融计算
字符串
- char 字符固定的大小 0-255
- varchar 可变字符串 0-65535 常量的变量 string
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1 保存大文本
时间日期
java.util.Date
- data YYYY-MM-DD 日期格式
- time HH:mm:ss 时间格式
- datetime YY-MM-DD HH:mm:ss 最常用的格式、
- timestamp 时间戳 1970.1.1到现在的毫秒数!也较为常用
- year年份的表示
null
空值
2.3、数据库的字段属性(重点)
unsigned:
- 无符号的整数
- 声明该列不能为负数
zerofill:
- 填充0
- 不足位数的,用0来填充 例如 int(3),输入5 输出结果为005
自增:
- 自动在上一条的记录上+1
- 通常设计在唯一的主键~index,必须是整形类型
- 还可以自定义设置自增的起始值和步长
非空:null和 not null
- 假设设置为not null 如果不给它赋值就会报错
- null,如果不填写,默认值就是null还有可能为空白
2.4、创建数据库表
常用命令
show create database student –查看创建数据库的语句 这里student表示数据库
show create table student –查看创建数据库表的语句 这里student表示数据库表
desc student –显示数据库表的结构
2.5、数据表的类型
常规使用的操作:
- MYUSAM 节约空间,速度较快
- INNODB 安全性高,事务的处理,多表多用户操作
物理空间位置
MySQL 引擎在物理文件上的区别
- InnoDB在数据库中只有一个 *.frm 文件,以及上级目录下的ibdata1文件
- MYSAM 对应文件
- *.frm 表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设置数据库表的字符集编码
不设置的话会是mysql默认的字符集编码(不支持中文!)
mysql的默认编码是Latin1,不支持中文
在my.ini中配置默认的编码
2.6、修改删除表
删除
所有创建和删除尽量加上判断,以免报错~
注意点:
- “ 字段名用这个包裹
- 注释用 — 或者//
- sql 关键字大小写不敏感,建议使用小写
- 所有的符号全部用英文!
3、MySQL数据管理
3.1外键
3.2DML语言(全部记住)
数据库意义:数据存储 ,数据管理
3.3添加
3.4修改
update
语法:update 表名 set colnum_name=value,[colnum_name =value,…]where[条件]
注意:
- colnum_name 是数据库的列,尽量带上“符号
- 条件,筛选的条件,如果没有指定,则会修改所有的列
- value,是一个具体的值,也可以是一个变量
- 多个设置的属性之间,使用英文逗号隔开
3.5删除
delete 命令
语法:delete from 表名[where 条件]
truncate 命令
作用:完全清空一个数据表,表的结构和索引约束都不会变
4、DQL查询数据(最重点)
4.1、指定查询字段
去重 distinct
作用:去除select查询出来的结果中重复的数据,重复的数据只显示一条
数据库的列 (表达式)
数据库中的表达式:文本值,列,null,函数,计算表达式,系统变量
4.2 where条件子句
模糊查询:比较运算符
4.3、联表查询
join
自连接
父类
子类
操作:查询父类对应子类关系
4.4分页和排序
分页
5、mysql函数
5.1常用函数
5.2聚合函数(常用)
5.3 数据库级别MD5加密
什么是MD5?
主要增强算法复杂度 不可逆。
MD5不可逆,具体的MD5是一样的
MD5激活成功教程原理,背后有一个字典,MD5加密后的值,加密前的值
6、事务
要么都成功要么都失败
1.sql执行 A给B 转账 A1000->200 B 200
2.sql执行 B收到A转账 A800 ->B400
将一组sql放在一个批次中 去执行~
事务原则:ACID原则 原子性,一致,隔离性,持久性
原子性:要么全部完成,要么全部不完成
一致性:事务前后的数据完整性要保证一致,1000
持久性:事务一旦提交则不可逆,被持久化到数据库中!
隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所千扰,多个并发事务之间要相互隔离
7、索引
mysql 官方对索引的定义为:索引是帮助mysql 高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构
索引的分类
- 主键索引(primary key)
- 主键不可重复
- 唯一索引(unique key)
– 避免重复的列出现,唯一索引可以重复,多个列都可以标识位 - 常规索引(key/inedex)
- 全文索引 FULLTEXT
8、 权限管理和备份
8.1、用户管理
SQL可视化管理
8.2、mysql备份
为什么要备份:
- 保证重要的数据不丢失
- 数据转移
mysql数据库备份方式
- 直接拷贝物理文件
- 在可视化工具上导出
- 使用命令行导出mysqldump 命令行cmd才叫命令行
9、规范数据库设计
9.1、为什么需要设计
当数据库比较复杂的时候,就需要设计了
糟糕的数据库设计:
- 数据冗余,浪费空间
- 数据的插入和删除都会麻烦、异常【避免使用物理外键】
- 程序的性能差
良好的数据库设计:
- 节省内存空间
- 保证数据库的完整性
- 方便开发系统
软件开发中,关于数据库的设计
- 分析需求:分析业务和需要处理的数据库的需求
- 概要设计:设计关系图E-R图
设计数据库的步骤:(个人博客)
-
收集信息,分析需求
- 用户表(用户登录注销,用户的个人信息,写博客,创建分类)
- 分类表(文章分类,谁创建的)
- 文章表(文章的信息)
- 评论表
- 友链表(友链信息)
- 自定义表(系统信息,某个关键的字,或者一些主字段)key : value
- 说说表(发表心情.. id… content….create_time)
-
标识实体(把需求落地到每个字段)
-
标识实体 之间的关系
- 写博客:user–> blog
- 创建分类:user -> category
- 关注:user-> user
9.2三大范式
为什么需要数据规范化
- 信息重复
- 更新异常
- 插入异常
- 无法正常显示信息
- 删除异常
- 丢失有效的信息
范式
第一范式(1NF)
原子性:保证每个列不可以再分
第二范式(2NF)
前提:满足第一范式
每张表只表示一件事
第三范式(3NF)
前提:满足第一范式
前提:满足第二范式
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
规范性 和 性能的问题
关联查询的表不要超过三张
- 考虑商业化的需求和目标,(成本,用户体验!)数据库的性能更加重要
- 在规范性能的问题的时候,需要适当考虑一下规范性!
- 故意给某些表增加一些冗余的字段。(从多表查询中变为单表查询)
- 故意增加一些计算列(从大数据量降低为小数据量的查询:索引)
10、JDBC
10.1数据库驱动
驱动:声卡、显卡、数据库
10.2 JDBC
Sun公司为了简化开发人员对数据库的统一的操作,提供了一个(java操作数据库)规范,JDBC
这些规范的实现有具体的厂商去做
对于开发人员来说,我们只需要掌握JDBC的接口操作即可
10.3、第一个JDBC程序
创建测试数据库
1.创建一个普通项目
2.导入数据库驱动
步骤总结:
1、加载驱动
2、链接数据库DriverManager
3、执行sql的对象
4、获得返回的结果集
5、释放链接
步骤总结:
1、加载驱动
2、连接数据库 DriverManager
3、获得执行sql的对象Statement
4、获得返回的结果集
5、释放连接
DriverManager
URL
10.4、statement对象
jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。
statement对象的executeupdate方法,用于向数据库发送增、删、改的sql语句,executeupdate执行完后,将会返回一个整数(即增删改语句导致了数据库几行数据发送了变化)。
statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询的结果的ResultSet对象
CRUD操作-create
使用executeUpdate(String sql)方法完成数据添加操作,示列操作:
CRUD操作-delete
使用executeUpdate(String sql)方法完成数据删除操作,示列操作:
CRUD操作-update
使用executeUpdate(String sql)方法完成数据修改操作,示列操作:
CRUD操作-read
使用executeQuery(String sql)方法完成数据修改操作,示列操作:
10.5、使用idea链接数据库
- database,选择+号,再date source选择mysql
- 输入账号密码后测试链接
- 如出现时区问题:则更改下方
- 写sql语句的地方
- 修改数据时,回车后,DB提交
10.6 事务
今天的文章
Navicat Premium 10.1.3激活(狂神说mysql笔记)分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/110422.html