累了,困了,来看“MySQL”,让你梦回吹角连营
这里写目录标题
- 一、数据库概览
- 1、数据库概念
- 2、数据库软件
- 3、MySQL数据库
- 4、用于数据库的编程语言
- 二、MySQL数据库基础
- 1、数据库的操作
- 2、 字符集
- 3、SQL语句常用的数据结构
- 数值类型
- 字符串类型
- 如何判断文本数据和二进制数据?
- 日期类型
- 4、表的操作
一、数据库概览
首先了解一个岗位:DBA(数据库管理员),yyds
数据库的特点:
- 数据结构化,能保证数据完整性
- 数据共享度高(通过外键关联实现共享)
- 数据冗余度低,易于扩展
- 数据独立性高(物理独立性和逻辑独立性)
数据库事务:访问并可能操作各种数据项的一个数据库的操作序列
数据库事务的四个特性:
- 原子性:事务中全部操作在数据库中是不可分割的,要么全部执行,要么就全部不执行
已落实的事务会保证所有操作均已完成,并且在事务回滚中,所有操作产生的影响均已得到恢复,此事件体现原子性
- 持久性:对于已经提交的事务,系统保证该事务对数据库的改变不被丢失,即使数据库出现故障
- 隔离性:事务的执行不收其他事务的干扰,事务执行的中间结果对于其他事务是透明的
- 一致性 :几个并行执行的事务,其执行的结果必须与 按某一顺序 串行执行 的结果一致
1、数据库概念
- 数据库
是一类软件,具体来把大量的数据进行存储的,数据库软件存储内部往往大量依赖了数据结构,其主要把数据存在磁盘上 - 数据结构
是一门学科,研究如何组织大量的数据,主要研究把数据存在内存上 - 注意:访问磁盘的数量比访问内存慢3~4个数量级(几千倍,几万倍)
数据库把数据存在磁盘上
磁盘上的数据删除,并不是真正的彻底的把数据删没了,而是把对应的盘块给标记成“未使用”状态,可在上面继续存储数据,如果在上面再存了数据,以前的数据就真的没有了
暴力删除:砸硬盘
2、数据库软件
关系型数据库(RDBMS) | 把数据按“表”的形式组织,没有数组类型 |
---|---|
MySQL | 瑞典MySQL AB公司创建,后被Sun公司收购,后被Oracle公司收购;牛逼的是 ,MySQL团队又另起炉灶,创建MariaDB |
SQLSever | 微软搞的,SQLSever和Windows Sever捆绑销售 |
Oracle | 甲骨文公司,业界第一(收钱),主要是银行用,收购了创建JAVA的Sun公司 |
SQLite | 轻量级数据库,安卓系统内置 |
PostgreSql | 加州大学伯克利分校创建 |
非关系型数据库 | 把数据按“文档”的形式来组织,有“数组”类型 |
---|---|
Redis | |
HBase | |
MongDB | |
hadoop | 大数据方向的数据库 |
3、MySQL数据库
MySQL是一个客户端/服务器结构的程序,MySQL服务器真正管理数据,MySQL客户端只是用户界面(可以是控制台的,也可以是图形化的(workbench))
网络编程的基本概念:
客户端:主动发起请求的一方
服务器:被动接受请求的一方
网络通信,可以跨主机
4、用于数据库的编程语言
- SQL语句
编程语言,与JAVA并列,各种不同的数据库软件都支持SQL语句,SQL语句不分大小写 - JDBC编程
JAVA操作数据库的一组类,使用这些类可以通过JAVA完成对数据库的数据处理
二、MySQL数据库基础
1、数据库的操作
一个数据库服务器上,可以包含多个“数据集合”(一组数据构成的集合),每个“数据集合”都可以称为一个“数据库”
学校数据库服务器上就有多个数据库,比如学生数据库,教师数据库,实习单位数据库…
数据库操作 | |
---|---|
显示当前所有的数据库 | show databases; |
创建数据库 | create database [if no exists] 数据库名; |
选中数据库 | use 数据库名; |
删除数据库 | drop database [if exists] 数据库名; |
[ ] | 可以不写 |
创建数据库
create database [if no exists] 数据库名
[character set 指定数据库采用的字符集
[collate 指定数据库字符集的校验方式] ]
如果没有指定的字符集和校验规则时,系统默认字符集:utf-8 ,校验规则:utf-8_general_ci
值得注意的是MySQL中的utf-8并不是真正的utf-8,没有完全支持utf-8中的所有内容(没法支持
emoji(表情))
2、 字符集
因为计算机以二进制方式储存数据,如ASCLL码表
用数字表示汉字,每一套这样的表格,称之为一种“字符集”或“字符编码”
常用字符集
GBK(中国大陆用,但是汉字数量少)
unicode(utf-8)
3、SQL语句常用的数据结构
数值类型
数据类型 | 大小/对应JAVA类型 |
---|---|
int | 4字节 Integer |
smallint | 2字节 Short |
bigint | 8字节 Long |
tinyint | 1字节 Byte |
float(M , D) | 4字节 M是有效数字,D是小数点后的位数,会发生精度丢失 Float |
double(M , D) | 8字节 Double |
decimal(M , D) | M/D最大值+2 BigDecimal |
numeric(M , D) | 同decimal |
有效数字:从第一个非零的数字算起的所有数字 |
Java中的float和double是存在问题的,不能精确的表示某些数据,不能用==比较浮点数
Bigdecimal内部使用了其他方式能精确的表示浮点数,但开销更大
字符串类型
数据类型 | 大小/说明/对应Java类型 |
---|---|
varchar(size) | 0~65535字节 可变长度字符串 String |
text | 0~65535字节 长文本数据 String |
mediutext | 0~16777215字节 中等长度文本数据 String |
blob | 0~65535字节 二进制形式的长文本数据 byte[ ] |
如何判断文本数据和二进制数据?
(如何判断一个文件是文本文件和二进制文件)
用记事本(记事本默认以文本形式打开)打开文件,能看懂的是文本文件;看不懂的是二进制文件
如图片是二进制文件,把图片放到数据库中,用blob数据类型;
word文档(DOCX文档)也是二进制文件
excel文档 是二进制文件或文本文件
日期类型
数据类型 | 大小/说明 |
---|---|
datetime | 8字节 1000~9999年,不会进行时区的检索和转换 |
timestamp | 4字节 1970~2038,自动检索当前时区并进行转换 |
如果在数据库中使用 datetime 数据类型,now() 获取当前时间
数据库中的 datetime 在Java程序中 对应 Timestamp 类型, new Timestamp(System.currentTimeMillis()) 获取当前时间的 Timestamp 类型
4、表的操作
需要操作数据库中的表时,要先使用这个数据库
use 数据库名;
查看指定数据库中的所有的表 | show tables; |
查看表的结构 | desc 表名; |
创建一个表 | create table 表名(列名 列的数据类型 ,列名 列的数据类型) |
删除表 | drop table [if exists] 表名 |
注意:如果列名是数据库中的关键字,一定使用``(英文) 将列名引起来 | |
累了,困了,来看“MySQL”,让你梦回吹角连营相关推荐
- 从数据结构的角度来看Mysql为什么使用B+树
Mysql数据库为什么使用B+树作为索引?这篇文章我们不鼓吹B+树的优点,我们从数据结构上来看这个问题. 一.数据结构 数据结构大致可以分为两种 -- 线性结构 和 非线性结构. 1. 线性结构 线性 ...
- 编程累了,一起来看电视吧,实战Windows 7的Windows Media Center。
简介 本文讲述如何通过Windows 7的Windows Media Center搭建强劲的综合娱乐电视系统,同时讲述Windows Media Center的实际使用感受,以及如何通过Windows ...
- MySQL查询累计值的方法
假设有借贷记录表,字段有借入,贷出,以及记账日期.表中记录如下所示: 现在想统计某一天,或者某一时间段内,每天的借贷累总额,以及历史累计总额,比如,2021-10-07日的借贷总额是1100,1000 ...
- MySQL 8.0有什么新功能
https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/ 我们自豪地宣布MySQL 8.0的一般可用性. 现在下载 ...
- MySQL数据库多种安装方法及企业级安装实践
本文来自老男孩老师第三本书籍著作<老男孩的MySQL私房菜>第三章内容分享! 3.1 MySQL数据库的安装方法及选择 在当今的互联网企业里,MySQL数据库大多运行在Linux系列操作系 ...
- 浅谈Redis与MySQL的耦合性以及利用管道完成MySQL到Redis的高效迁移
㈠ Redis 与 MySQL 的耦合性 在业务架构早期.我们便该"吃着碗里的看着锅里的".切莫让MySQL 有梦.而Redis 无心 毕竟.有些关系型的结构不适合放到Redis跑 ...
- mysql的常用存储引擎_MySQL常见的三种存储引擎
Ok,我们知道了,引擎就是一个程序的核心组件. 简单来说,存储引擎就是指表的类型以及表在计算机上的存储方式. 存储引擎的概念是MySQL的特点,Oracle中没有专门的存储引擎的概念,Oracle有O ...
- 第 16 章 MySQL Cluster
前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和 Oracle Real Cl ...
- mysql数据库加载太慢_mysql千万级数据库插入速度和读取速度的调整记录
一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧. (1)提高数据库插入性能中心思想:尽量将数据 ...
最新文章
- 雷赛运动控制卡_EeIE智博会展商推荐雷赛智能—智能装备运动控制领域的知名品牌和行业领军企业...
- 用For循环加cat按顺序合并文件
- 重庆中职计算机试题及答案,重庆市计算机专业高职复习题参考答案
- Ranger-AdminServer安装
- StretchBlt()函数使用
- 在RedHat Linux系统中安装和配置snmp服务
- [arXiv18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
- CentOS安装MySQL及其使用(总结整理)
- python爬取网易付费音乐包_爬取网易云音乐“三部曲”(三):轻松下载网易音乐歌曲!...
- 传奇DBC2000安装及配置图文详细教程
- DNS加密 防止被DNS劫持 保护网络安全
- 移动机器人定位方法概述
- linux基本操作大全centos7
- Android游戏之仿 微信飞机大战
- 基于MATLAB的Cholesky分解法
- 医疗管理系统软件 linux系统,MyPatients 4.0.2 发布,医疗信息管理系统
- 什么是多租户saas架构设计
- 注册非公共邮箱,学校邮箱
- 2018年计算机考研调剂信息概况
- 参考文献里的各个字母含义