文章目录
- 数据库介绍
- 什么是数据库?
- 数据库分类
- MySQL的结构
- MySQL客户端和服务器
- MySQL服务器是如何组织数据的?
- 数据库操作
- 显示当前数据库
- 创建数据库
- 使用数据库
- 删除数据库
- 数据库中常用数据类型
- 数值类型
- 字符串类型
- 日期类型
- 表的操作
- 创建表
- 查看表结构
- 查看当前数据库有哪些表
- 删除表
数据库介绍
什么是数据库?
数据库简单来说,就是一个存储数据的软件。
有人可能会说,用文件来存储数据不就可以了吗? 为什么还要专门搞个数据库?
那是因为文件存储数据有几个缺点:
- 文件的安全性问题;
- 文件不利于数据查询和处理;
- 文件不利于存储海量数据;
- 文件在程序中操作不方便;
为了解决上述问题,专家们就设计出更加利于管理数据的软件—数据库 ,它能更有效的管理数据。数据库还可以提供远程服务,即通过远程连接来使用数据库,因此也被称为数据库服务器。
数据库分类
数据库大体可以分为 关系型数据库 和 非关系型数据库。
-
关系型数据库:
是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系数据库就是由一些二维表和他们之间的联系所组成的一个数据组织集合。
他们都是基于SQL语言操作的,只是内部实现有一些区别,常用的关系型数据库有:
1.Oracal:甲骨文公司的产品,适合大型项目、适合做复杂的业务逻辑,是世界上最好的数据库,保证了数据有极高的安全性; 但是收费。
2.MySQL:也是甲骨文公司的产品,虽然不像Oracal那样优秀,但是开源免费,所以广受欢迎。
3.SQL Server:微软公司的产品,市场份额较少。 -
非关系型数据库
不基于SQL语言实现,以其他的方式来组织数据,如:
1.基于键值对(Key-Value),如Redis;
2.基于文档,如Mongodb;
3.基于列族,如Hbase;
4.基于图,如Neo4j;
他们两者的区别:
MySQL的结构
MySQL客户端和服务器
MySQL是一个“客户端-服务器”结构的程序;
客户端:主动给服务器发送数据,这个过程叫做发起“请求”
服务器:处理请求后,向客户端返回数据,这个过程叫做“响应”
咋们安装的MySQL是既带客户端,有带服务器的。
MySQL客户端和MySQL服务器可以在一台主机上,也可以在不同主机上;
在实际工作中更常见的是客户端和服务器不在一台主机上,而我们在学习过程中客户端和服务器是在一台主机上的。
注:
- 对于MySQL来说,储存和管理数据都是由MySQL服务器来负责的;
- MySQL服务器比MySQL客户端复杂许多,甚至可以认为MySQL服务器是MySQL的本体,大部分时候谈到MySQL,指的就是MySQL服务器。
MySQL服务器是如何组织数据的?
- 一个MySQL服务器可以包含多个数据库,每个数据库都是一个数据集合;
- 每个数据库里有很多数据表,用来存放同一类数据;
- 每张表里都有很多行,每一行称为“一条记录”;
- 每张表里都有很多列,每一列称为“一个字段”
数据库操作
显示当前数据库
show databases;
注:
- show 和 databases 之间 至少有一个空格 末尾要有一个英文分号 “;” 所有SQL语句都是这种格式;
- databases 是复数 要加 s
- SQL不区分大小写
- 右下角的0.00 sec 是什么意思? sec->second 指执行这个操作消耗了0.00秒
创建数据库
create database 数据库名;
注:
- 不能使用create等关键字来作为数据库名、表面、列名;如果实在想用可以用反引号``引起来;
- 如果有个SQL语句写到一般不想执行了,使用ctrl+c 来中止;
- 在创建数据库时还可以加上 if not exists ,如果数据库存在,就啥事儿没有;如果不存在,才创建;
create database if not exists learning;
- 在创建数据库时还可以设置数据库使用的字符集
create database if not exists learning character set utf8mb4;
使用数据库
use 数据库名;
注: 只有选中某一个数据库之后,才可以执行一些与表相关的操作。
删除数据库
drop database 数据库名;
注: 数据库删除操作非常危险,数据库一旦删除数据就大概率恢复不回来;如果在工作中错误的删除了某个数据库,影响十分巨大。
数据库中常用数据类型
数值类型
注:
- 数值类型可以指定为无符号(unsigned),表示不取负数。
- 1字节 = 8bit
- decimal相比与float和double,可以更精确的表示小数。decimal相当于是通过字符串的方式来表示浮点数。优势就是能够精确表示、精确计算;但劣势是计算时消耗的时间更多、消耗的存储空间更大。
字符串类型
注:
varchar(size),是最常用的类型,因为它可以自己指定使用空间的大小。要注意的是,比如varchar(50),表示这个字段最多存50个字符(注意不是字节)。一个字符在不同的字符编码环境下所占的字节数不同。
日期类型
注:
- timestamp:时间戳,以1970年1月1日0时0分0秒作为基准时刻,计算当前时刻和基准时刻的秒数之差。
- timestamp最大表示21亿,现在已经达到16亿了,一旦到达极限,很多代码都会失效,不建议使用,推荐使用datetime
注: 总结常用的数据类型:int、bigint、double、decimal、varchar、datetime
表的操作
创建表
create table 表名(列名 类型,列名 类型....);
注:
- 在表操作之前,必须先选中数据库。
- 需要保证在一个数据库里不能有同名的表。
- 在创建表的时候表名和列名,不能和SQL关键字冲突,实在要使用时,用``反引号引起来。
查看表结构
desc 表名;
注:
int(11)不是占11个bit的意思,int就是固定的4个字节占32个bit,11表示的是打印数字的时候显示数字的最大宽度是11位数。11只影响在客户端中的显示,不影响数据的存储和计算。
查看当前数据库有哪些表
show tables;
注: 此操作的前提得先选择某一个数据库。
删除表
drop table 表名;
注:
- 删表操作也非常危险,比起删库操作危险程度只多不少!
- 一个库里通常有很多的表,删库就会把所有的表都删除。如果真的删库了,程序在运行时只要是涉及到该数据库的操作100%会报错,第一时间就能发现问题。但如果是删除了一个库中的一张表,此时程序运行的时候就不一定第一时间报错。
程序很可能会“带伤运行”,虽然能跑,但是结果是错的!