使用一些介质进行存储,例如文字存在文档中
数据库可以完成数据持久化保存+快速提取
那么想要实现以上功能,需要编写一系列的规则–》SQL语句
SQL语句按功能分类:增删改查
数据库类型:关系型数据库、非关系型数据库
①关系型数据库:存储的往往是字符、字符串、数值、布尔值等
②非关系型数据库:存储的往往是图片、视频、语音等关系型数据库:
Mysq1(Oracle公司)、
SQL server(微软)、access(微软公司office产品)
Oracle、DB2(IBM公司),sybase(sybase)等等
mysql开源数据库
描述事物的符号记录
包括数字,文字、图形、图像、声音、档案记录等以"记原”形式按统一的格式进行存储
用来存储具体数据
表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
数据库管理系统(DBMS)
是实现对数据库资源有效组织、管理和存取的系统软件
数据库的建立和维护功能、数据定义功能、数据操纵功能、数据库的运行管理功能、通信功能
数据库系统
是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和
数据库用户组成
用户可以通过DBMS或应用程序操作数据库
数据库系统(DatabaseSystem,DBS)是一个人机系统,一般由硬件、操作系统、数据库、DBMS、应用软件和数据库用户(包括数据库管理员)组成。用户可以通过DBMS操作数据库,也可以通过应用程序操作数据库。
应用程序是利用DBMS为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合。如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用,那么就称为数据库应用软件。
常用的数据库应用软件有人事管理、财务管理、图书管理等信息管理软件及各类信息咨询系统等。
数据库管理员(DatabaseAdministrator,DBA)负责数据库的更新和备份、数据库系统的维护、用户管理等工作,保证数据库系统的正常运行。DBA一般由业务水平较高、资历较深的人员担任。
需要注意的是数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别。遇到此情况时,可以根据具体情况,判断出实际所指的是什么。
DBMS的工作模式如下:
1>接受应用程序的数据请求和处理请求
2>将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
3>实现对数据库的操作
4>从数据库的操作中接受查询结果
5>对查询结果进行处理(格式转换)
6>将处理结果返回给用户
关系数据库系统是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的“实体-关系”(E-R)图来表示
E-R图中包含了实体
(数据对象)、关系和属性三个要素
非关系数据库也被称作NoSQL(Not Only SQL) 存储数据不以关系模型为依据,不需要固定的表格式
非关系型数据库的优点
数据库可高并发读写
对海量数据高效率存储与访问
数据库具有高扩展性与高可用性
常用的非关系数据库:Redis、mongoDB等
一款深受欢迎的开源关系型数据库
Oracle旗下的产品
遵守GPL协议,可以免费使用与修改
特点
性能卓越、服务稳定
开源、无版权限制成本低
多线程、多用户
基于CS(客内端/服务器)架构
安全可靠
MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用
MySQL社区版是由分散在世界各地的MySQL开发者
爱好者一起开发与维护,可以免费使用
两者区别
商业版组织管理与测试环节更加严格,会比社区版更稳定
商业版不遵守GPL,社区版遵从GPL可以免费使用
商业版可获得7*24小时的服务,社区版则没有
MySQL产品阵营
第一阵营:5.0-5.1阵营,可说是早期产品的延续
第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
第三阵营:6.0-7.1阵营,就是MySQL Cluster)版本,为适应新时代对数据库的集群需求而开发
下载网址
http://www.dev.mysql.com/downloads
Mysg1编译安装
yum -y install
gcc\
gcc-c++\
ncurses
字符终端下图形互动功能的动态库
ncurses-devel
ncurses开发包
bison
#语法分析器
cmake
mysql需要用cmake编译安装
yum -y install gcc gcc-c++ncurses ncurses-devel bison cmake
#创建程序用户管理
useradd -s /sbin/nologin mysql
tar zxvf mysql-5.7.17.tar.gz -C /opt
tar zxvf boost 1 59 0.tar.gz -C /usr/local/
mv /usr/local/boost 1 59 0 /usr/local/boost
cd /opt/mysq1-5.7.17/
cmake
-DCMAKE INSTALL PREFIX=/usr/local/mysql
#指定mysql的安装路径
-DMYSQL UNIX ADDR=/usr/local/mysql/mysql.sock
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc
#指定配置文件的存储路径
小结
1)描述主流的数据库系统
关系型数据库:
Mysql(Oracle公司)
、
SQL server(微软)、access(微软公司office产品)
Orac1e、DB2(IBM公司),sybase(sybase)等等
提问
2)数据库管理系统DBMS客户端进行数据获取的时候过程
3)关系型数据库和非关系型数据库的区别
关系数据库:
关系数据库结构是二维数据库表,二维表当中每个字段(列)用米描述对象的一个属性,每个记录(行)用米描述一个对
象的信息(完整信息),关系数据库写到哪里也就是存储在硬盘当中读写系统就会受到的I0限制或者瓶颈
其他
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
1、易于维护:都是使用表结构,格式一致:
2、使用方便:SQL语言通用,可用于复杂查询:
3、复杂操作:支持$QL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写:
2、固定的表结构,灵活度稍欠:
3、高并发读写需求,传统关系型数据库来说,硬盘I/0是一个很大的瓶颈。
缓存加速软件
非关系型数据库(NoSQL):
MongoDB、Redis(内存数据库/缓存数据库)K-V键值对、与之类似的Memcache,K-V键值对
redis-memecache对比:
相同点:存储高热数据(在内存中高速运行)
不同点:redis可以做持久化保存,可以存储对象
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,
应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:osq1可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘:
3、高扩展性:
4、成木低:nosq1数据库部署简单,基本都是开源软件。
缺点:
1、不提供sq1支持,学习和使用成本较高:
2、无事务处理:
3、数据结构相对复杂,复杂查询方面稍欠。
4、好多数据写在内存中
六、Mysq1数据库
**日志
数据库日志文件用于备份,恢复,故障定位、分析是最核心的部分
mysq1与oracle日志有所区别
mysq1写一条数据,同步到日志中一条
PS:insert into ky11 (id,name,score)values (1,‘zhangsan’,20);
oracle:重做日志组
个组中至少3个日志成员,轮流存储日志
还会有另一个组与之同步/备份
阿里云0S$对象存储,一式三份备份(使用重做日志组思想)
对象存储:存储大都是一些静态文件,图片、音频、视频
不能直接在对象存储中修改数据
飞天平台,盘古系统,钟馗:安全,女娲:选举/调度,盘古一式三份
Mysql:存储引擎
myisam和innodb
myisam:快速读取,不支持事务
innodb:更注重写,支持事务
mysql数据库管理
查看数据库信息
show database
查看数据库中的表信息
use数据库名
#切换到书库中
show tables
show tables in mysql
显示数据表的结构(字段)
describe user;
Field:字段名称
type:数据类型
Nu11:是否允许为空
Key:主键
Type:数据类型
Nul1:是否允许为空key:主键
Default:默认值
Extra:扩展属性,例如:标志符列(标识了种子,增量/步长)12
id:1357
常用的数据类型:
int:整型 用于定义整数类型的数据
f1oat:单精度浮点4字节32位 准确表示到小数点后六位
doub1e:双精度浮点8字节64位
char:固定长度的字符类型 用于定义字符类型数据。
varchar:可变长度的字符类型
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有2位
指定长度数组
Char如果存入数据的实际长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
主键是唯一的,但主键可以由多个字段构成
MySQL数据库的数据文件存放在/usr/1oca1/mysql/data月录下,每个数据库对应一个子月录,用于存储数据表文件。每
数据表对应为三个文件,扩展名分别为".frm"、".MYD"和".MYI"。
MYD"文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个yISAM表都会有一个".MYD"文件与之对应,同样存放于月
属数据库的文件夹下,和",frm"文件在一起。
MySQL数据库的数据文件存放在/usr/1oc1/mysg1/dat平目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为".frm”、“.MYD”和”.MYI”。
MYD"文件是MYISAM存储引擎专用,存放MyISAM表的数据。每一个MYISAM表都会有一个",MYD"文件与之对应,同样存放于所属数据库的文件夹下和".frm"文件在一起。
“.MYI"文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache的内容主要就是来源于”.MYI"文件中。每一个MyISAM表对应一个".MYI"文件,存放于位置和".frm"以及".MYD"一样。
MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件(frm,myd,myi)。每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.Y工文件中。
另外还有".ibd"和ibdata文件,这两种文件都是用来存放Innodb数据的,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用",ib"文件来存放数据,且每个表一个",ibd"文件,文件存放在和MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置)ibdata文件。
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类:
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
DOL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言I用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
1、DDL:
数据定义语言,用于创建数据库对象,如库、表、索引等
creat
drop
alter
创建新的数据库
CREATE DATABASE
数据库名:
创建新的表
CREATE TABLE表名(字段1数据类型,字段2数据类型[,·.][,PRIMARY KEY(主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
use数据库名
DROP TABLE表名
DROP TABLE【数据库名.】表名:如不用USE进入库中,则需加上数据库名
删除指定的数据库
DROP DATABASE数据库名;
2、DML管理表中的数据记录----数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
insert
update
delete
格式:
INSERT INT0表名(字段1,字段2[,....])VALUES(字段1的值,字段2的值,··);
示例:
INSERT INTO KY13 (id,name,score,passwd)values(1,zhangsan',70.5,PASSWORD ('123456'));
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。
INSERT INTO ZZZ VALUES(2,'lisi',90.5,654321);
SELECT FROM zzz; #查询表的数据记录
#修改、更新数据表中的数据记录
格式:
UPDATE表名SET字段名1=字段值1[,字段名2=字段值2][WHERE条件表达式];
示例:
UPDATE ZZZ SET passwd=PASSWORD()WHERE name='zhangsan';
UPDATE ZZZ SET name='wangxiaoer',passwd='' WHERE id=3;
DCL
修改表名和表结构
ALTER TABLE 旧表名RENAME新表名;
例:
ALTER TABLE ZZZ RENAME yyy:
ALTER TABLE yyy RENAME ZZZ
3
扩展表结构(增加字段)
ALTER TABLE表名ADD address varchar(50)default'地址不详';
default'地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用
6
ALTER TABLE yyy ADD address varchar(50)NOT NULL default'地址不详';
修改字段(列)名,添加唯一键
ALTER TABLE表名CHANGE I旧列名新列名数据类型[unique key];
unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)
Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)
ALTER TABLE yyy CHANGE name user name varchar (10)unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
ALTER TABLE表名modify column字段名类型。
数据库中表字段是varchar(30),修改类型可以用(谨慎修改类型,可能会导致原有数据出错)
删除字段
格式:
ALTER TABLE表名DROP字段名:
#案列扩展
use school;
create,table if not exists info
id int4)zerofill primary
key auto increment,
指定主键的第二种方式
name varchar(10)not null,
cardid int(18)not null unique key,
hobby varchar(50));
#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建
#int(4)zerofill:表示若数值不满4位数,则前面用"0"填充,例0001
#auto increment:表示此字段为自增长字段,即每条记录自动递增1,默认从l开始递增;
自增长字段数据不可以重复:自增长字段必须是主键:如添加的记录数据没有指定此字段的值且.添加失败也会自动递增一次
#unique
key:表示此字段唯一键约束,此字段数据不可以重复:一张表中只能有一个主键,但是一张表中可以有多个唯一键
#not null:表示此字段不允许为NULL
清空表
DELETE FROM tablename
TRUNCATE TABLE tablename
FROM tablename
TRUNCATE TABLE tablename
[外链图片转存中...(img-vRg1TFDC-1659687956320)]
[外链图片转存中...(img-2df4qo2v-1659687956320)]
[外链图片转存中...(img-o5vNOA9x-1659687956321)]
[外链图片转存中...(img-TvZhI8r4-1659687956321)]
[外链图片转存中...(img-vlmDqV8a-1659687956321)]
[外链图片转存中...(img-nblQ5WVl-1659687956322)]
[外链图片转存中...(img-xGA2axeC-1659687956322)]