目录
一、数据库基本概念
1、数据
数据库,顾名思义,就是将数据存储在一起的一个仓库。mysql是一个典型的关系型数据库,通常是以记录为行,字段为列的形式汇聚成表格,将数个表格汇聚在一起,就组成了一个库。一些非关系型数据库则是以数据块的形式进行存储资源。
数据库就是对这个库、这个表格进行增删改查这些操作进行管理的一个服务。在架构中,关系型数据库或者非关系型数据库都是必不可少的一部分
2.数据库的优势与缺点
优点:
1.格式灵活:存储的数据的格式可以是文档、图片形式等等,使用灵活,应用场景广泛,但是关系型数据库是只支持基础的文档类型的基础类型化文件
2.速度快:nosql(非关系型数据库)可以使用硬盘或者随机存储器作为载体,关系型数据库是使用硬盘的形式进行存储资源
3.高扩展性:可以直接使用横向扩展来进行对数据库进行扩展
4.成本低:nosql数据库部署简单,基本都是开源软件。
缺点:
1.不提供sql支持,学习和使用成本较高
2.无事务处理
3.数据结构相对复杂,复杂的查询方面稍微欠佳
4.多数数据写在内存中
3.数据库类型
上面也提到了一点,数据库大致分为关系型数据库跟非关系型数据库,两者负责主要的存贮文件类型都是不同的,在不同的应用场合,使用率也是不一样,需要看情况来进行选择
关系型数据库:关系型数据库往往存储的都是字符、字符串、数值等可以直观的表达在表格内的字符类型的数据
非关系型数据库:跟关系型数据库不同,存储的方向往往是图片、视频、音频等不便于以表格形式存储的文件类型
关系型数据库的代表“人物”:mysql(Oracle公司)、SQL server(微软)、access(微软公司office产品)、DB2(IBM公司)等等
非关系型数据库的代表“人物”:MongoDB、Redis(内存数据库或者也叫缓存数据库)等等
4.数据库的构成
上面也是提到一些,mysql数据库的组成
表的组成是,以记录为行,字段为列。就是,每一个行,都是一条用户操作的记录,每一列都是一种类型字段,也就是这一列只能是这一种类型的字段。
字段也可以进行设置是否可为空,以及设置主键等操作。
库前面也说了一下,表是由字段跟记录组成,而库则是以一个或者多个表汇聚在一起组成的一个大的“文件夹”。
5.数据库的核心
日志——这是数据库中的一个核心功能,主要是负责进行对数据库中的数据进行备份、恢复等对数据库中的现存/已删文件进行备份/恢复的功能。
日志在工作环境中,起到的最大的作用,其实是让管理人员快速定为故障发生源,以及可以根据日志的操作记录进行同步的同步机制,也是依靠日志。
这里非常简单的概括了一下日志,因为日志的作用是挺庞大的,就不一一介绍。日常工作过程中,很大时候都是在查找日志,排除错误日志等等,都是在跟日志打交道。等进入工作之后,日志将会是工作中的“好朋友”
二、数据库管理
1.数据库的信息
1.1查看数据库的信息
show databases;
1.2查看库中表格的信息
use mysql; #进入名为mysql的库
show tables; #查看当前库中的表格信息
show tables in mysql; #可以不用先进入库即可查询
1.2查看表格的结构
describe user; #查看当前库中的某个表格的格式信息
或者直接缩写也是可以的
desc user; #效果同上,只是缩写一下
查看之后,就会看到这个表格的字段信息,其含义分别如下:
field:是字段名称
type:数据类型
Null:数据类型是否可以为空
key:主键
default:默认值
Extra:扩展属性,例如增加标识符等等
1.3常用的数据类型
int:整型(正负整数数字)
float:单精度浮点4字节的32位小数 可以精准到小数后六位
double:双精度浮点8字节64位
char:固定长度的字符类型
varchar:可以变长的字符类型
text:文本
image:图片
decimal(3,2):3个有效长度数字,小数点后面可以跟随2位。
常用的基本就上面几种类型
2.数据库的文件存放位置
mysql数据库的数据文件是存放于/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。
每个数据表对应三个文件,扩展名分别为“.frm、.MYD、.MYI”三个文件
可以看到,这是系统自带的mysql库中的表格,每个表格都含有上面描述的三个文件
其中,MYD文件是mysqlSAM存储引擎专用,用于存放MySQLSAM表的数据,每一个MySQLSAM表都会有一个.MYD文件与之对应
MYI文件也是专属于 MyISAM 存储引擎的,主要存放 MyISAM 表的索引相关信息。对于 MyISAM 存储来说,cache 的内容主要就是来源于.MYI文件中。每一个MyISAM 表对应一个.MYI文件
MysqlSAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。 每个表都有且仅有这样三个文件做为 MyISAM 存储类型的表的存储,也就是说不管这个表有多少个索引,
都是存放在同一个.MYI 文件中。
另外还有“.ibd”和 ibdata 文件,这两种文件都是用来存放 Innodb 数据的,之所以有两种文件来存放 Innodb 的数据(包括索引),
是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。
独享表空间存储 方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和 MyISAM 数据相同的位置。
如果选用共享存储表空间来存放数据,则会使用 ibdata 文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata 文件。
3.mysql的基础增删改查语句
SQL语句分为几种:
1、DDL:数据定义语言,用于创建数据库中的对象
2、DML:数据库操纵语句,用于对列表中的数据进行管理
3、DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
4、DCL:数据控制语言,用于设置或者更改数据库用户或者角色权限
1、DDL
DDL上面也说了,是一种用于创建新对象的语句,可以进行建立新的表、库
create:新建
drop:删除
**创建一个新的数据库:**create database 数据库的名称; 即可创建一个新的数据库
创建一个新的表的话,对比创建库较为繁琐一些:
create table 表名(字段1 数据类型,字段2 数据类型…);
创建表格需要对每个字段进行设置数据类型,是否可以为空,是否设置为主键等等这些字段类型。
主键:需要看看此字段类型是不是适合创建主键,因为主键需要唯一性较高的字段,最好不能有重复的数据,否则的话没有什么太大的意义,适合的选项例如:学校的学号、公司的工号、会员卡的卡号、身份证的身份证号等在一个表中不可重复的序号等。
创建表格的例子:
create table lhk(id int NOT NULL,name varchar(10)NOT NULL,primary key(id));
可以简单的创建一个小的姓名等级表格,可以登记来的人数跟登记人姓名,其中主键是id序号。
**删除库:**drop database 数据库的名字; 即可删除指定的数据库
**删除表格:**drop table 表名; #需要先进入指定的数据库中,如果不进去的话,需要在表的前面跟随库的名字,例如库名.表名
drop table lhk.lhk;
删除数据的方式不止drop这一种,还有truncate和delete这两种
写法格式都是差不太多
delete from 表名; #直接对表中的所有记录进行删除,但是删除的时候是按照一条记录路一条记录的方式进行删除的,会返回删除执行的条目
truncate table 表名; #直接清空表格数据,在清空表数据之后不会返回清空的条目
删除表格的速度方面考虑的顺序的话:drop>truncate>delete
但是在安全方面考虑的话,还是delete较为安全,因为这个方式是支持恢复数据的。
2、DML
DML是一种对表中的数据进行管理的命令,主要有下面几种:
insert:对表格中插入新的记录
update:修改、更新数据表中的信息
delete:删除表格中的记录
等等,这里不一一举例,下面慢慢介绍
示例:
对表格中插入新的记录:
insert into lhk(id,name) values (1,'lisi'); #即可对表格中添加一个新的记录信息。
select * from lhk; #查看表中的信息
对表格中已有的数据进行修改:
update lhk set id=2,name='zhangsan'; #可以对现在表格中存在的记录中的某个字段进行修改
select * from lhk; #修改后进行查看
对表格中,已存在记录进行删除:
在做这个步骤之前,先多创建几个表格,步骤就略过了。
delete from lhk where id=2; #之后语句之后,即可进行对ID=2的记录进行删除
select * from lhk;
delete from lhk; #如果不加后面的where(判断换条件)则是直接清空当前表格,慎用。
修改表名或者表结构的语句:
修改表名的语句是alter,可以对已存在的表进行修改表名,到那时在修改表名的时候,可以进行对字段进行修改(增删改)
alter table lhk rename llj; #修改表的名称
alter table llj add school varchar(30) default'null'; #前面是选择一个表,add后面是新加一个字段为school的字段,这个字段可以选择不填写,default是默认值,如果用户不填写则是使用默认的null这个值。
alter table llj drop address; #执行语句即可删除现在已经存在的指定字段,address是我之前自己配置的字段
3、DQL
在基础查询中,语句较为简单,只有一个:select
格式:
select 查看的字段名(多个字段用逗号“,”隔开) from 表名 ;(表名后面也可以进行追加筛选条件,例如只显示id=10)。
查看的方式较为多种多样,下面大致使用一下:
第一种:select * from lhk; #查看表中的所有记录信息,不推荐直接使用,因为表格中数据信息庞大的时候,很容易导致死机
第二种:select * from lhk where id=2; #这种跟上面的差不多,但是添加了筛选条件,查看当前表中所有记录中id为2的记录信息
第三种:select id,name from lhk; #只查看前面指定的字段的信息记录,一般也是搭配where来进行筛选的,搭配的语法就略过了,跟上面类似。因为我这里是只创建了两个字段,所以这里的话跟直接使用*没什么区别
第四种:select * from lhk limit 2; #查看表信息中的前面几行的记录的信息,这个语句就是查看表中的前面两行的信息
第五种:select * from lhk limit 2,3; #查看表信息中的从第二行开始,共计显示三行(显示2、3、4,这三行),如果只想显示一行就最后结尾的时候2,1即可
同理,这个也是可以搭配where来写进行显示
第四种DCL,管理用户的语句这里就先暂时不介绍了
小结
mysql的这些最基础的增删改查的语句都是挺简单,难得是后面的各种语句之间的混合搭配等等混合的方式进行的步骤,但是对于初学者,这些都是不切实际的想法,现在首要的是先掌握最基本的增删改查这些方式,特别是更改表格数据的方式,这是最重要的。