我是目录哦~~~
一、数据库基本认识
1、为什么要有数据库呢?
2、数据库是啥呢?
3、数据库有哪几类呢?
4、MySQL具体是啥啊?
二、数据库基础
1、数据库的基本操作都有哪些呢?
1、显示当前的数据库:
2、创建数据库:
3、使用数据库:
4、删除数据库:
2、数据库里都有哪些常用数据类型呢?
1、数值类型:
2、字符串类型:
3、日期类型:
三、数据表基础操作
1、数据表的基础操作都有哪些啊?
1、创建一个数据表:
2、查看数据表结构:
3、显示数据表:
4、删除数据表:
随着我们互联网技术的不断发展,我们对于互联网的需求也是水涨船高,依稀记得十年前,仅仅是要求在手机上下载的游戏不超过50M就好或者在网页上看视频看电影可以缓存的时间短一些就可以了,然而现在的电脑网速和硬盘内存容量和之前相比,早已是一个天上一个地下了。
与之随之而来的同样也是巨大庞大的网络数据量,大量众多的数据飞快的产生,那么我们究竟该如何更加安全有效的存储、检索、管理它们呢?于是对数据的有效存储、高效访问、方便共享和安全控制等问题成为了信息时代一个非常重要的问题。
那么可能有人就会说,我们存储数据不是有文件或者文件夹吗?这些不是可以存储数据吗?是的,这些东西的确是可以存储数据的,但是,使用文件存储数据有着一些缺点:
* 文件的安全性问题;
* 文件不利于数据查询和管理;
* 文件不利于存储海量数据;
* 文件在程序中控制不方便。
所以为了解决上述文件存储数据的问题,我们使用了数据库。它能更有效的管理数据。数据
库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。
简而言之,数据库就是一个软件,或者说是一类软件。这个软件的功能呢,也很明了,就是用来管理数据的(一个用来装数据的仓库)。至于我们之前学到的数据结构,你以为只是用来刷题用来应付考试的吗?大错特错啦!其实呢,是用来讨论具体如何组织和管理数据的!而我们管理的目的,就是来“增删查改”,来管理我们库里的数据的。
那么我们数据库里的数据一般都是保存在哪里呀?一般我们都是保存在硬盘里的。这里说下一个计算机的基本组成部分,如果把它想象成人的话,那么大概就是这个样子:
CPU作为它的脑袋,用来处理各种奇奇怪怪的信息,内存和外存作为它的存储设备,用来存储它的小脑袋里的信息,可以想象为它的身体和小肚子。而输入设备呢可以当成它吃饭的那只手,主要用来往脑袋和肚子里灌输信息和知识。输出设备可以当成写作业的那只手,这一只手啊,用来将它的想法的处理的结果输出出来,写在纸上,给其他人观看。
但是内存呢和外存也是有着显著区别的,主要有以下:
1、内存储存空间较小,外存较大。
2、内存访问速度快,外存满。
3、内存成本高,外存成本低。
4、内存中的数据,断电后消失,外存断电后依然存在。
我们常说的数据库大体上可以分为两类:
关系型数据库:
是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
都基于基于标准的SQL,只是内部一些实现有区别。常用的关系型数据库如:
1. Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统。收费。
2. MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
3. SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
非关系型数据库:
不规定基于SQL实现。现在更多是指NoSQL数据库,如:
1. 基于键值对(Key-Value):如 memcached、redis
2. 基于文档型:如 mongodb
3. 基于列族:如 hbase
4. 基于图型:如 neo4j
下面来说说两种类型数据库的具体区别,但是首先关系型数据库和非关系型数据库在使用场景上差别比较大,所以并不存在孰强孰弱,只有结合自身的业务特点才能发挥出这两类数据库的优势:
关系型数据库 | 非关系型数据库 | |
使用SQL | 是 | 不强制要求,一般不急于SQL实现 |
事务支持 | 支持 | 不支持 |
复杂操作 | 支持 | 不支持 |
海量读写操作 | 效率低 | 效率高 |
基本结构 | 基于表和列,结构固定 | 灵活性高 |
使用场景 | 业务方面的OLTP系统 | 用于数据的缓存,或基于统计分析的OLAP系统 |
MySQL这个数据库软件呢,是一个“客户端 - 服务器”结构的程序。“客户端”和“服务器”在连接的时候通过网络连接,这两个名词,也是分别代指网络通信时候的双方。
主动发起网络请求的一方,成为“客户端”,被动接受请求的一方,成为“服务器”。而“客户端”给“服务器”发送的数据,成为“请求”,“服务器”给“客户端”返回的数据,成为“响应”。对于MySQL这个软件而言,只要我们安装好了MySQL,就相当于既是安装了“客户端”,也是安装了“服务器”。
我们在安装好MySQL后,在自己的电脑中是既有“服务器”也有“客户端”,即:
我们同样也可以用自己的电脑和别人的服务器进行网络通信:
或者在复杂场景上,多个客户端对应一个服务器:
在我们安装好MySQL软件,输入好密码后,就进入了MySQL的操作界面:
当出现 “ mysql> ”这个提示语时,我们就可以输入sql语句,来对数据库进行操作了。
show databases;
注意:关键字和关键字之间要用空格隔开,多少个无所谓。
输入sql语句时,大写和小写都是可以的,主要看个人习惯。
语句最后得用英文引号“ ; ”,标志一段语句的结束。
语句中的标点符号都是英文,不能用中文符号!!!
create database 数据库名字;
这样我们就新创建好了一个数据库,名字叫:mynewdatabase。
注意:新建你自己的数据库名字时,名字可以随便起,但是不可以是SQL中的关键字,如果你起的数据库名字中出现关键字了,可以用“ ` ` ”来引起来。
use 需要使用的数据库名字;
这里我使用了我刚刚新创建的数据库mynewdatabase,当提示 Database changed时,说明已经成功切换使用了数据库。在针对数据库进行进一步操作时,就需要先选中数据库,再进行操作。
注意:个别SQL语句不需要用英文分号“ ; ”来结尾,但是咱还是建议大家都给结尾加上一个分号,方便以后少出错。
drop database 需要删除的数据库名字;
注意:这个操作非常危险,因为一旦你操作删除成功,很大可能就恢复不了了!!!以后我们要进行删除操作时,需要谨慎谨慎再谨慎!!!
数据类型 | 大小 | 说明 | 对应Java类型 |
BIT[ (M) ] | M指定位数,默认为1 |
二进制数,M范围从1到64,存储数值范围从0到2^M-1 |
常用Boolean对应BIT,此时默认是1位,即只能存0和1 |
TINYINT | 1字节 | Byte | |
SMALLINT | 2字节 | Short | |
INT | 4字节 | Integer | |
BIGINT | 8字节 | Long | |
FLOAT(M, D) | 4字节 | 单精度,M指定长度,D指定小数位数。 会发生精度丢失 |
Float |
DOUBLE(M,D) | 8字节 | Double | |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。精确数值 | BigDecimal |
NUMERIC(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数。精确数值 | BigDecimal |
注意:decimal可以精确的表示小数(M表示有效长度,D表示小数点后有几位数)。
数据类型 | 大小 | 说明 | 对应Java类型 |
VARCHAR (SIZE) | 0-65,535字节 | 可变长度字符串 | String |
TEXT | 0-65,535字节 | 长文本数据 | String |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式长文本数据 | Byte[ ] |
注意:varchar可以根据实际需要,来指定要占用多少空间。(size单位是字符,一个字符可能由多个字节组成)
数据类型 | 大小 | 说明 | 对应Java类型 |
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的 检索及转换 |
java.util.Date、 java.sql.Timestamp |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时 区并进行转换 |
java.util.Date、 java.sql.Timestamp |
在对数据表进行操作之前需要先选中一个数据库,因为数据表是保存在数据库中的,若不先选中数据库,那么电脑是无法知道你所想操作的表究竟是哪个库中的。
这里我们再创建一个新的数据库,选中并使用它:
create table 需要新建的表名(列名 类型,列名 类型 ······);
这里我新建了一个student表,里面有id(学号)列,类型为int;name(名字)列,类型为varchar(50);age(年龄)列,类型为int;score(成绩)列,类型为double(3,1)。
注意:varchar为字符串类型,初始容量为50;double为浮点数型,后面3表示有效数字为3个,1为小数点后保留1位。
desc 需要查看的表名;
可以查看表内每个列的名字和类型。
show tables;
可以显示当前数据库中所有的表。
drop table 需要删除的表名;
这里我删去了之前就在库中的aaa表,再次显示数据表时,aaa就不会再出现了。
End~~~