提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
今天我们进入到MySQL的学习当中,MySQL是我们Java学习以及成为一名优秀的程序员所必须具备的技能,所以必须要学好这一门课程。
主要学习内容:
1.数据库基础操作.(以SQL语句为核心)SQL是一门编程语言,但是用起来还比较简单
2.数据库的底层原理.(不做过多介绍,主要是围绕常见面试题)
3.3.数据库编程.(使用Java代码来操作数据库)
接下来就让我们一起走进MySQL的基础吧!!!!!
提示:以下是本篇文章正文内容,下面案例可供参考
定义:数据库,就是一类软件,专门负责管理数据(增删改查,后面内容会讲到)
数据结构和数据库他俩有啥关系?
数据结构,是一个"抽象的学科"
数据库,是一类"具体的软件"
实现数据库的时候,背后也要应用到很多的数据结构~
分类:
1.MySQL(课堂上使用的)
MySQL数据库就是本专栏介绍的内容~~
开源、免费~~
现在已经被Oracle收购了~~
2.Oracle数据库
Oracle数据库 是世界上最强的数据库~~
但是,它是收费的,而且收费还是挺贵的~~
厂商也叫做Oracle~~
现在也是由Oracle来负责维护Java~~
3.SQL Server数据库
SQL Server数据库,由 微软(搞Windows,office的公司) 研发的数据库~~
4.SQLite数据库
SQLite数据库,是世界上"装机量"最大的数据库~~
即使有很多人没有听说过~~
其实,各种安卓上机器自带的内置数据库就是SQLite数据库~~
主要的特点就是 小巧轻量~~
其他数据库 一不小心 就达到 以G为单位,而它仅仅不到几百K~~
ps:
虽然 有这么多的数据库~~
但是 不管哪一个数据库~~
其实最核心的东西~~
都是 SQL(编程语言)~~
掌握了SQL,未来无论去使用哪个数据库,都可以快速的上手~~
虽然 不同的数据库,支持的SQL语法都略有差异~~
但是,90%以上的都是相同的~~
MySQL是一个"客户端-服务器"结构的程序
定义;
客户端:主动的一方就是客户端
服务器:被动的一方就是服务器
两者间的关系:
一个服务器同─时刻可能要给多个客户端提供服务
因为服务器不确定客户端啥时候来,服务器往往要长时间运行,甚至7*24小时运行
客户端给服务器发送的数据,称为"请求"(来一份蛋炒饭)
服务器给客户端返回的数据,称为"响应"(端上来一碗蛋炒饭)
客户端:
服务器:
换句话说,安装了MySQL,就是 既安装了客户端(黑框框),也安装了服务器
关系图示;
MySQL客户端和MySQL服务器,可以在同一个主机上,也可以在不同的主机上~~
实际工作中,更常见的是 客户端和服务器 在不同主机上~~
在当前的学习阶段,就直接安装在一个主机上了~~
虽然是同一个主机,但是仍然是通过网络进行通信的~~
对于MySQL来说,存储和管理数据,都是由 MySQL服务器 来负责的~~
ps:
当然,如果把客户端和服务器都部署在一个主机上了,但是电脑没有联网。这个时候客户端依然能访问服务器
如果插上网线,连接wifi,网络是通畅的,此时电脑可以通过网络访问其他的主机
如果电脑没有插网线,连不上网,那么此时电脑只是访问不了别的主机,但是自己还是能访问自己的
一个MySQL服务器上面可以包含多个"数据库",
此处的"数据库"其实是"数据集合",这里面就放了 一些有关联关系的数据
举例说明:
可以理解成,一栋楼 里面有好几家餐厅,餐厅之间并不影响~~
餐厅里面的菜品 就类似于 数据库里面存的数据表~~
数据表:
每一个表里有很多行,每一行称为"一条记录";
每一行里有很多列,每一列表示不同的含义,每一列称为一个"字段"(field)
ps:
数据库 整体的一个结构:
数据库—>数据表—>行—>列
MySQL也好,Oracle也罢,只要是关系型数据库,都是按照上述的结构来组织数据的~~
重点:内存和外存(硬盘)区别!!
1.内存存储空间相对较小,硬盘存储空间较大
2.CPU读取内存速度快,读取硬盘速度慢.(一般会差3-4个数量级)
(硬盘也有机械硬盘和SSD,SSD 会比机械硬盘读写速度快很多,但是仍然比内存要慢上很多)
3.内存比硬盘贵!!!(如果你想要一个大内存,也可以,只要充钱!!)
4.内存上的数据,断电后丢失.硬盘的数据,断电后不丢失!持久化
语法格式;
create database 数据库名;
例如:创建一个名为mysql1的数据库;
注意:
1.create,database都是MySQL中的关键字,单词间有空格
2.关键字不区分大小写
3.分号不要遗忘,是英文分号!编程里面基本没有中文符号
ps:
当然,有的时候也会有创建错误,或者啥啥错误的情况,不要慌,下面也会有错误的提示~~
大部分的错误提示 都是非常清楚的,已经告诉过哪里有问题了~~
语法格式;
show databases;
例如:显示MySQL中创建了的数据库;
注意:
databases是复数形式,不要搞错了;(此处显示数据库有多个,所以是复数)
想要 针对某一个数据库进行具体的操作,如 各种增删改查 数据库,就需要先选中数据库:
语法格式;
use 数据库名;
例如:选中刚刚创建的数据库mysql1;
ps:
在对某一个数据库 进行操作时,必须得要选中这个数据库~~
类似于 RTS游戏~~
需要先选中某个单位,再释放技能~~
数据库删除非常危险!!!
数据库删除非常危险!!!
数据库删除非常危险!!!
数据库删除非常危险!!!
重要事情说几遍!!!!!
语法格式;
drop database 数据库名;
例如:删除刚创建的数据库mysql1;
此时再查看剩余的数据库:
现在就只有系统自带的数据库了
注意:
删除数据库操作十分危险
删库其实是把库里的数据都删除了
千万不要在公司的服务器上删除数据库,尤其是不要在生产环境上进行删除
介绍:
MySQL是一据个"关系型数据库",典型特点就是 通过表的形式来组织数据
即 每一行,其列数都是一样的;每一列,其数据类型都是相同的
数据类型一方面 一方面能够使我们对数据进行处理,一方面也能够对数据进行校验和检查
数值类型 包含了 整型和浮点型:
ps:
decimal就出现了相比于float和double,decimal相当于通过字符串的方式来表示浮点数,
其优势是可以更加精确的表示浮点数、精确计算
但是劣势就是 计算时消耗的时间更多,存储空间也更多
除非是特别需要,才考虑使用decimal
ps:
varchar(50),这个字段最多存50个字符,也可能是更短的
这个是动态的,根据存入的数据长度来自适应空间
注意:
字符,不是字节!!!
一个字节,就固定是8bit~~
一个字符,就不一定了(取决于具体的字符编码)
前三个数据类型存的文本数据;最后一个blob储存的是二进制数据;
ps:
timestamp翻译过来就是 时间戳
时间戳:以 1970 年 1 月 1 日 0 时 0 分 0 秒 作为基准时刻,计算当前时刻和基准时刻的秒数之差
计算机中表示时间 都是用时间戳来表示的
timestamp的范围是从1970年到2038年,那么到了2038年以后,很多程序估计要失效了
所以为了防患于未然,一般都用datetime
注意:
虽然 有这么多的数据类型,但是并不是每一个都是需要记住的:
所需要记住的类型有:
int bigint double decimal varchar datetime
语法格式:
create table 表名(列名 类型,列名 类型......)
例子:在student数据库中创建一个学生表classmates有id和name;
注意:
1.要想创建表,就需要先有一个数据库,并且选中数据库!!!!!!
2.创建表的时候,必须要明确表结构,
即 有哪些列,每个列是啥类型,叫啥名字
3.同一个数据库中,不能有两个表 名字相同,否则会出错
4.创建表的时候,表名或列名,不能和SQL的关键字冲突
但是,如果非要拿关键字作为表名,也不是不可以
可以使用 反引号` 来引起来
语法格式:
在选中数据库的前提下,可以使用:
show tables;
例如;查看在student数据库的表。
语法格式:
desc 表名;
例如:查看表classmates的结构;通过这个命令行,可以查看这个表里面的列和类型
ps:
1.fleld 列数,表示这张表有 id 和 name 两列
2.int(11)的意思不是说占11个比特位,int就是固定4个字节,32个比特位;11表示的是打印数字的时候,显示数据的宽度最大是11位数;11只影响在客户端中的显示,不影响数据的存储和计算
3.varchar(20)表示 约束存储的时候最多存20个字符
4.NULL表示 这一列是否可以为空(YES,允许为空;NO,不允许为空)
5.Default指的是 默认值
6.desc是descible的缩写;
语法格式:
drop table 表名;
例子;删除创建了的classmates表;
注意:
删表的操作十分危险,后果还要严重!!!
删表的操作十分危险,后果还要严重!!!
删表的操作十分危险,后果还要严重!!!
表面上来看,一个库里包含很多表;删库,就会把所有的表都带走
但是,如果真的删库了,程序在运行的时候 只要涉及到数据库操作,100%报错
就会第一时间发现问题
但是,如果是删表(如100个表,删除1个表),程序也不一定是第一时间报错
虽然程序可能跑起来,但是最终跑的结果肯定是错的
今天我们学习有关MySQL的基础内容,对MySQL有了初步的认识,能够进行一些简单的MySQL的操作,这是一门很重要的技能,希望在接下来的学习中大家能够好好学习。也希望能得到各位兄弟的关注与支持,让我们一起加油!!!!!
z